In questo capitolo sono descritte le carucce (cartridge) di generazione disponibili.
Nota [1]: dalla versione 3.2 il parametro portal, che era presente dalla prima versione di guigen, è soppiantato dalla coppia di parametri templateName e templateVersion. Pertanto i progetti che utilizzavano l'impostazione portal="neutral" dovranno eliminare tale parametro e sostiutuirlo con la coppia di parametri:
In pratica portal="neutral" equivale a templateName="neutral" + templateVersion="v1". Per i dettagli circa i possibili valori dei nuovi parametri vedere sotto.
Nota [2]: la property
guigen.clientLibs.enableAutoServicePack
che permetteva di scegliere se abilitare o meno la possibilità di recepire automaticamente
(ovvero senza dover aggiornare il plugin + rigenerare + rideployare) i fix critici apportati alle
librerie JS successivamente alla data di pubblicazione del plugin, a partire dalla versione 3.2.0 di
guigen non è più disponibile.
Di conseguenza tutte le librerie che prevedono tale modalità (ad oggi "extjscsienricher" e
"jqcsienricher") saranno sempre referenziate con la versione "latest" (es. "jqcsienricher/1.1.latest").
Eventuali impostazioni di tale property verranno semplicemente ignorate.
La cartuccia it/csi/mddtools/guigen/workflow/guigenCheck.mwe serve per effettuare il check semantico
dei vari sotto-modelli e prevede i seguenti parametri:
| parametro | descrizione | esempio | obbl/opz |
| model | percorso del file del modello guigen, a partire dalla root del workspace eclipse | myprod.mdd/src/model/myprod/mycomp/myapp.guigen |
obbl |
| templateName | codice del template da utilizzare per generare il codice. sostituisce il vecchio parametro "portal". I valori possibili sono:
|
neutral |
obbl |
| templateVersion | a partire dallo stesso template (templateName) permette di creare delle versioni parzialmente
diversificate. Di seguito i valori possibili, per ciascun valore di templateName:
|
v1 |
obbl |
Esempio:
<cartridge file="it/csi/mddtools/guigen/workflow/guigenCheck.mwe" model="myprod.mdd/src/model/myprod/mycomp/myapp.guigen" templateName="neutral" templateVersion="v1" />
La cartuccia it/csi/mddtools/guigen/workflow/guigenPrototype.mwe serve per effettuare la generazione
di un prototipo navigabile della user interface modellata. Il prototipo cos� ottenuto è permette di
verificare:
| parametro | descrizione | esempio | obbl/opz |
| model | percorso del file del modello principale guigen, a partire dalla root del workspace eclipse | myprod.mdd/src/model/myprod/mycomp/myapp.guigen |
obbl |
| targetProjectName | nome del progetto java nel quale si desidera generare il prototipo. deve appartenere allo stesso workspace del progetto generatore. Attenzione: deve essere un progetto differente da quello di generazione dell'applicazione effettiva. | mycomp.prototype |
obbl |
Esempio:
<cartridge file="it/csi/mddtools/guigen/workflow/guigenPrototype.mwe" model="myprod.mdd/src/model/myprod/mycomp/myapp.guigen" targetProjectName="mycomp.prototype" />
Applicare prima le cartucce di check su tutti i modelli singolarmente, e poi applicare la cartuccia di generazione del prototipo.
La cartuccia it/csi/mddtools/guigen/workflow/struts2Basic.mwe serve per effettuare la generazione
completa dell'applicazione, e prevede i seguenti parametri:
| parametro | descrizione | esempio | obbl/opz |
| model | percorso del file del modello principale guigen, a partire dalla root del workspace eclipse | myprod.mdd/src/model/myprod/mycomp/myapp.guigen |
obbl |
| templateName | codice del template da utilizzare per generare il codice. sostituisce il vecchio parametro "portal". I valori possibili sono:
|
neutral |
obbl |
| templateVersion | a partire dallo stesso template (templateName) permette di creare delle versioni parzialmente
diversificate. Di seguito i valori possibili, per ciascun valore di templateName:
|
v1 |
obbl |
| targetProjectName | nome del progetto java nel quale si desidera generare l'applicazione. deve appartenere allo stesso workspace del progetto generatore | mycomp |
obbl |
| jsPlatform | codice della piattaforma javascript d autilizzare per gli arricchimenti client-side. Poò
valere:
|
jquery |
obbl |
| propertiesFile | percorso di un file di properties che può essere utilizzato per pilotare alcuni aspetti della generazione. Per un dettaglio delle properties supportate vedere più avanti | src/workflow/myprod/mycomp/workflow.properties |
opz |
| useExternalDaoBeans | (dalla v.1.5) se impostato a true non viene generato il file dao-beans.xml, permettendo così di utilizzare il file generato da datagen. Il valore di default è: false | true |
opz |
| extra-xpt | percorso di un file di template Xpand da utilizzare per:
|
template::myprod::mycomp::customTemplates.xpt |
opz |
Esempio:
<cartridge file="it/csi/mddtools/guigen/workflow/struts2Basic.mwe" model="myprod.mdd/src/model/myprod/mycomp/myapp.guigen" targetProjectName="mycomp" templateName="neutral" templateVersion="v1" propertiesFile="src/workflow/myprod/mycomp/workflow.properties" />
In un workflow completo è necessario applicare prima le cartucce di check su tutti i modelli singolarmente, e poi applicare la cartuccia di generazione.
E' disponibile anche una variante di questa cartuccia che permette di generare solo singoli moduli:
it/csi/mddtools/guigen/workflow/struts2BasicSingleModule.mwe
Questa cartuccia permette di rigenerare solo una parte dell'applicazione (un'insieme ben definito di ApplicationModule)
allo scopo di diminuire i tempi di generazione a fronte di modelli molto complessi. L'elenco degli ApplicationModule
da rigenerare è gestita in un file di properties tramite la proprietà generate-appmodules.
Occorre tenere presente che:
La cartuccia it/csi/mddtools/guigen/workflow/liferaystruts2.mwe serve per effettuare la generazione
completa dell'applicazione in modalità portlet, in modo che possa essere deployata nel portlet container
liferay.
I parametri e le modalità di utilizzo sono quelli previsti dalla cartuccia struts2Basic.
Il generatore GUIGEN supporta le seguenti properties
| property | descrizione | esempio | cartuccia |
guigen.remoteresources |
|
false | struts2Basic.mwe e struts2BasicSingleModule.mwe con portal="neutral" |
guigen.enableEnrichmentsByDefault |
|
true | struts2Basic.mwe e struts2BasicSingleModule.mwe con portal="neutral", webres.mwe |
generate-appmodules |
|
modulo1,modulo2 |
struts2BasicSingleModule.mwe |
guigen.fileUpload.maximumFileSize |
|
4000000 (circa 3.8 Mb) |
struts2Basic.mwe e struts2BasicSingleModule.mwe |
guigen.fileUpload.totalMaximumFileSize |
|
4000000 (circa 3.8 Mb) |
struts2Basic.mwe e struts2BasicSingleModule.mwe |
guigen.javaPackageOrganizationName |
|
com.acme |
struts2Basic.mwe e struts2BasicSingleModule.mwe |
guigen.ivyRepositoryHost |
|
myrepository.acme.com |
struts2Basic.mwe e struts2BasicSingleModule.mwe |
guigen.spring.autowire |
|
vedere documentazione di spring |
struts2Basic.mwe e struts2BasicSingleModule.mwe |
guigen.html.mode |
|
la modalità html5 è stata introdotta per permettere l'introduzione
nel codice dei widget/panel user defined di elementi tipici di HTML5 (es. canvas). |
struts2Basic.mwe e struts2BasicSingleModule.mwe |
guigen.javac.encoding |
|
struts2Basic.mwe e struts2BasicSingleModule.mwe | |
guigen.overridden.tar.filename.prefix |
|
struts2Basic.mwe e struts2BasicSingleModule.mwe |
Per poter utilizzare nel proprio modello dei frammenti di modello (es. PanelDef, o TypeNamespace)
contenuti in un plugin di estensione, è necessario configurare opportunamente il workflow di generazione,
per fare in modo che il runtime di generazione riesca a risolvere i riferimenti a tali frammenti
(che dovranno essere effettuati nei modelli tramite la sintassi platform:/plugin/...).
A tale scopo è disponibile un componente da utilizzare nel file di workflow, prima delle componenti
di check/generazione.
Di seguito si riporta un esempio di utilizzo.
<bean class="it.csi.mddtools.guigen.workflow.component.GuigenExtensionSetup" > <pluginName value="thirdpartyplugin" /> <pluginVersion value="1.0.0.001" /> <fragmentPath value="model/pdefplugin/pdefplugin/mypdef.guigen"/> <fragmentPath value="model/pdefplugin/pdefplugin/cartridge_1.xmi"/> </bean>Dove:
pluginName è il nome del plugin che contiene i frammenti da integrarepluginVersion è il codice completo di versione del plugin che contiene i frammenti da integrarefragmentPath contiene il percorso (relativo all'alberatura del plugin) di ciascun frammento da integrareplatform:/plugin/thirdparthyplugin/model/pdefplugin/pdefplugin/mypdef.guigenplatform:/plugin/thirdparthyplugin/model/pdefplugin/pdefplugin/cartridge_1.xmieclipse.home nella configurazione di lancio del workflow: