Paramètres de publication d'un générateur

Bonjour,
les notes de version de la version 4.2 de scenari mentionnent la « possibilité d’ajouter des paramètres de publication (statiques ou dynamiques) au niveau d’un générateur (quel que soit son type) ».
Je ne trouve pas le moyen d’utiliser cette fonctionnalité.
Quelqu’un pourrait-il m’aiguiller?
Merci

Bonjour,

Pour un exemple de paramètre de publication statique vous pouvez regarder les sources de l’extension Print d’Opale disponible ici : http://scenari-platform.org/svn/opaleext/3.6/genPrint/
Dans le wspdef de test /genPrint/opaleTest.wspdef vous trouverez un sm:properties en fils de l’ajout du générateur print à odRoot.model :

Au niveau du rendu dans le modèle final ceci ce traduit par :

Au niveau des transformers les propriétés sont en général récupérés par la fonction xpath SCENARI genProp(NAME, DEFAULT).

Dans l’exemple ci-dessus la propriété est utilisé pour définir la résolution des ressources images intégrés dans le PDF final, (92 DPI ou 300 DPI) par exemple dans /genPrint/gen/_print/transf/binaries/jpg.transf on trouve :


C.a.d. maxTargetDpi est calculé par une expression xpath :
if(genProp('resolution@stored','high')='low', genProp('dpi.low-int',92), genProp('dpi.high-int',300))
Ici si la propriété « resolution@stored » est « low » on utilise une DPI de 92 sinon on utilise une DPI de 300.
Par ailleurs dans /genPrint/gen/_print/transf/root/odRoot@root.transf on trouve :

Autrement dit, la page XHTML utilisé pour générer le PDF englobe tout son contenu par une DIV qui portera une classe CSS en relation avec le résolution sélectionnée : « resolution_low » ou « resolution_high ». Ceci peut ensuite être utiisé pour écrire des règles CSS en conséquence pour utiliser des images de résolutions différentes dans le skin.
REMARQUE : Ce paramétrage n’est pas encore disponible dans la version stable de l’extension Print de Opale, ce sera une évolution présente dans la prochaine version.

Pour un exemple de paramètre de publication dynamique, vous pouvez vour reporter aux sources de Canoprof disponibles ici : https://download.canoprof.fr/Canoprof.scwsp (ceci est une archive d’atelier SCENARIbuilder, il peut etre simplement glissé - déposé dans un atelier vierge dans SCENARIbuilder 4.2)
Les paramètres de publication dynamiques sont en fait des petits sm:interactiveGenerator. Dans Canoprof cette technologie est utilisé pour rendre dynamique la sélection d’inclusion ou non de parties des sources dans la génération.
Au niveau du wspdef /canoprof.wspdef on trouve :

Les propriétés sont gérés par /gen/web/props/webProps.generator qui construit un formulaire dynamique basé sur le contenu du programme. Je ne vais pas explicité ce processus ici, le code de cet sm:interactiveGenerator est relativement standard et compréhensible pour un modelisateur averti. A noté que l’interaction entre le sm:interactiveGenerator de propriétés (/gen/web/props/webProps.generator) et le générateur parent (/gen/web/web.generator) se fait par une API en JavaScript grâce a la librairie /gen/_props/props.doss/site/props.js.

Bonjour

je rebondi sur ce sujet qui commence à dater…

J’ai installé les sources d’opale 3.7 et de GenPDF dans le builder, il est impossible de coder la liste de choix de résolution.


la liste déroulante est remplacée par une zone de texte.

D’autre part, j’ai une erreur de publication lorsque j’utilise un qcm ou qcu graphique avec genpdf. Avez vous déjà eu cette erreur ?
Traces de ‹ Publication PDF › pour l’item ‹ /_papier.publi ›

— User details —
Générateur: gen_print - Publication PDF
Item racine: /_papier.publi

  • Generation failed.
    • Echec au calcul d’une fonction XPath dans le dialogue
      • Compile xpath failed: java:eu.scenari.transform.img.ImageMagickUtil.getDrawLabelFragment($vLabelText,java:eu.scenari.modeling.util.Math.coordsRound(java:eu.scenari.modeling.util.Math.coordsCentroid(java:eu.scenari.modeling.util.Math.coordsRatio(sp:coords/text(),$vRatio))), $vLabelColor, $vFontColor, ‹ xpath:genProp(‹ fontsize-int ›, ‹ 9 ›) ›, $vImageDensity)

— Admin details —

<?xml version="1.0" encoding="UTF-8"?>
org.xml.sax.SAXException: Compile xpath failed: java:eu.scenari.transform.img.ImageMagickUtil.getDrawLabelFragment($vLabelText,java:eu.scenari.modeling.util.Math.coordsRound(java:eu.scenari.modeling.util.Math.coordsCentroid(java:eu.scenari.modeling.util.Math.coordsRatio(sp:coords/text(),$vRatio))), $vLabelColor, $vFontColor, 'xpath:genProp('fontsize-int', '9')', $vImageDensity) javax.xml.transform.TransformerException: Expected ,, but found: fontsize-int at com.scenari.xsldom.xalan.processor.XSLTAttributeDef.processEXPR(XSLTAttributeDef.java:554) at com.scenari.xsldom.xalan.processor.XSLTAttributeDef.processValue(XSLTAttributeDef.java:842) at com.scenari.xsldom.xalan.processor.XSLTAttributeDef.setAttrValue(XSLTAttributeDef.java:968) at com.scenari.xsldom.xalan.processor.XSLTElementProcessor.setPropertiesFromAttributes(XSLTElementProcessor.java:352) at com.scenari.xsldom.xalan.processor.XSLTElementProcessor.setPropertiesFromAttributes(XSLTElementProcessor.java:306) at com.scenari.xsldom.xalan.processor.ProcessorTemplateElem.startElement(ProcessorTemplateElem.java:143) at com.scenari.xsldom.xalan.processor.StylesheetHandler.startElement(StylesheetHandler.java:582) at com.scenari.m.co.donnee.XSaxHandlerToXsl.startElement(XSaxHandlerToXsl.java:207) at com.bluecast.xml.Piccolo.reportStartTag(Piccolo.java:820) at com.bluecast.xml.PiccoloLexer.parseAttributesNS(PiccoloLexer.java:1309) at com.bluecast.xml.PiccoloLexer.parseOpenTagNS(PiccoloLexer.java:1047) at com.bluecast.xml.PiccoloLexer.parseTagNS(PiccoloLexer.java:921) at com.bluecast.xml.PiccoloLexer.parseXMLNS(PiccoloLexer.java:867) at com.bluecast.xml.PiccoloLexer.parseXML(PiccoloLexer.java:838) at com.bluecast.xml.PiccoloLexer.yylex(PiccoloLexer.java:4040) at com.bluecast.xml.Piccolo.yylex(Piccolo.java:951) at com.bluecast.xml.Piccolo.yyparse(Piccolo.java:1039) at com.bluecast.xml.Piccolo.parse(Piccolo.java:501) at eu.scenari.xml.parser.PoolXmlReader$XXmlReader.parse(PoolXmlReader.java:109) at eu.scenari.core.agt.impl.BehaviorSheet.getAgentTypePrinc(BehaviorSheet.java:208) at eu.scenari.wsp.agt.AgtBagWsp.loadAgts(AgtBagWsp.java:244) at eu.scenari.wsp.agt.AgtBagWsp.getAgtPrinc(AgtBagWsp.java:208) at eu.scenari.wsp.agt.AgtProviderWsp.getAgtPrincByRef(AgtProviderWsp.java:107) at eu.scenari.core.agt.impl.CtxAdapterAgtProvider.getAgtPrincByRef(CtxAdapterAgtProvider.java:102) at eu.scenari.modeling.xpath.XPathGetContent.xExecute(XPathGetContent.java:97) at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:99) at com.scenari.xsldom.xpath.XPath.execute(XPath.java:396) at com.scenari.xsldom.xpath.XPath.execute(XPath.java:443) at com.scenari.xsldom.xalan.templates.ElemValueOf.execute(ElemValueOf.java:273) at com.scenari.xsldom.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:464) at com.scenari.xsldom.xalan.templates.ElemForEach.execute(ElemForEach.java:253) at com.scenari.xsldom.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1480) at com.scenari.xsldom.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:1385) at com.scenari.xsldom.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:784) at com.scenari.xsldom.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:411) at com.scenari.xsldom.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:725) at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.xExecuteXsl(WDonneeXslOnSrcDynamique.java:131) at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.writeValue(WDonneeXslOnSrcDynamique.java:104) at com.scenari.m.co.donnee.inclusion.WDonneeInclusionDynamique.getString(WDonneeInclusionDynamique.java:151) at eu.scenari.core.agt.agent.value.AgtValue.computeAsString(AgtValue.java:184) at eu.scenari.modeling.xpath.XPathGetContent.xExecute(XPathGetContent.java:100) at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:99) at com.scenari.xsldom.xpath.XPath.execute(XPath.java:396) at com.scenari.xsldom.xpath.XPath.execute(XPath.java:443) at com.scenari.xsldom.xalan.templates.ElemValueOf.execute(ElemValueOf.java:273) at com.scenari.xsldom.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:464) at com.scenari.xsldom.xalan.templates.ElemForEach.execute(ElemForEach.java:253) at com.scenari.xsldom.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1480) at com.scenari.xsldom.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:1385) at com.scenari.xsldom.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:784) at com.scenari.xsldom.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:411) at com.scenari.xsldom.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:725) at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.xExecuteXsl(WDonneeXslOnSrcDynamique.java:131) at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.writeValue(WDonneeXslOnSrcDynamique.java:104) at com.scenari.m.co.donnee.inclusion.WDonneeInclusionDynamique.getString(WDonneeInclusionDynamique.java:151) at eu.scenari.core.agt.agent.value.AgtValue.computeAsString(AgtValue.java:184) at com.scenari.m.co.xpath.dom.ZXPathComputeStrAgent.xExecute(ZXPathComputeStrAgent.java:101) at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:99) at com.scenari.xsldom.xpath.XPath.execute(XPath.java:396) at com.scenari.xsldom.xpath.XPath.execute(XPath.java:443) at com.scenari.xsldom.xalan.templates.ElemValueOf.execute(ElemValueOf.java:273) at com.scenari.xsldom.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1480) at com.scenari.xsldom.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:535) at com.scenari.xsldom.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1480) at com.scenari.xsldom.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:535) at com.scenari.xsldom.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1480) at com.scenari.xsldom.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:1385) at com.scenari.xsldom.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:784) at com.scenari.xsldom.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:741) at com.scenari.m.ge.pages.TplXslPage.producePage(TplXslPage.java:214) at com.scenari.m.ge.generator.base.GeneratorBase.producePage(GeneratorBase.java:1241) at com.scenari.m.ge.generator.base.GeneratorStatic.wTreatStackPages(GeneratorStatic.java:965) at com.scenari.m.ge.generator.web.WebGenerator.xGenerate(WebGenerator.java:324) at com.scenari.m.ge.generator.base.GeneratorStatic.generate(GeneratorStatic.java:643) at eu.scenari.wsp.module.gen.ThreadGen.run(ThreadGen.java:163) at eu.scenari.core.universe.Universe$1.run(Universe.java:393) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: javax.xml.transform.TransformerException: Expected ,, but found: fontsize-int at com.scenari.xsldom.xpath.compiler.XPathParser.error(XPathParser.java:559) at com.scenari.xsldom.xpath.compiler.XPathParser.consumeExpected(XPathParser.java:493) at com.scenari.xsldom.xpath.compiler.XPathParser.FunctionCall(XPathParser.java:1272) at com.scenari.xsldom.xpath.compiler.XPathParser.PrimaryExpr(XPathParser.java:1193) at com.scenari.xsldom.xpath.compiler.XPathParser.FilterExpr(XPathParser.java:1123) at com.scenari.xsldom.xpath.compiler.XPathParser.PathExpr(XPathParser.java:1091) at com.scenari.xsldom.xpath.compiler.XPathParser.UnionExpr(XPathParser.java:1055) at com.scenari.xsldom.xpath.compiler.XPathParser.UnaryExpr(XPathParser.java:971) at com.scenari.xsldom.xpath.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:906) at com.scenari.xsldom.xpath.compiler.XPathParser.AdditiveExpr(XPathParser.java:856) at com.scenari.xsldom.xpath.compiler.XPathParser.RelationalExpr(XPathParser.java:795) at com.scenari.xsldom.xpath.compiler.XPathParser.EqualityExpr(XPathParser.java:743) at com.scenari.xsldom.xpath.compiler.XPathParser.AndExpr(XPathParser.java:711) at com.scenari.xsldom.xpath.compiler.XPathParser.OrExpr(XPathParser.java:687) at com.scenari.xsldom.xpath.compiler.XPathParser.Expr(XPathParser.java:671) at com.scenari.xsldom.xpath.compiler.XPathParser.initXPath(XPathParser.java:175) at com.scenari.xsldom.xpath.XPath.<init>(XPath.java:319) at com.scenari.xsldom.xpath.XPath.createXPath(XPath.java:172) at com.scenari.xsldom.xalan.processor.StylesheetHandler.createXPath(StylesheetHandler.java:179) at com.scenari.xsldom.xalan.processor.XSLTAttributeDef.processEXPR(XSLTAttributeDef.java:552) ... 78 more

— Js stack —
cbLoadLog@chrome://scenariwsp/content/widgets/genBox/genBox.xbl.xml:795:11
CallbackWrapper.prototype.handleEvent@chrome://scenariwsp/content/commons/servers/HttpDataProvider.jsm:410:17

— App context —
timestamp: 23/4/2019 16:45:22
userAgent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:42.0) Gecko/20100101 tbd.4.2/4.2.101
coreVersion: 4.2.101
brandShortName: SCENARItest
appVersion: 4.2.101
appBuildId: 2016062817
appDevelopmentStage: final

c’est bien ce que j’essaye de faire, le problème, c’est que je n’ai qu’un seul choix : sm:typeText
même si je modifie le fichier xml en édition texte, le builder me remet systématiquement un sm:typeText.
je suis sur scenari builder v4.2.101, cela vient-il de la version du builder ?

je suis sur scenari builder v4.2.101, cela vient-il de la version du builder ?

c’est bien possible.

Vous pouvez installer la dernière version disponible : https://download.scenari.software/SCENARIbuilder@4.2.*