Vous pouvez modéliser votre modèle métier en utilisant n'importe quel modéliseur UML pouvant enregistrer le modèle au format xmi (ArgoUML, Topcased,...). Les entités que vous souhaitez générer doivent avoir le stéréotype entity.
Pour générer le code, nous utilisons EUGene et son plugin Maven.
Dans le pom de votre projet, rajoutez la définition du plugin:
<plugin> <groupId>org.nuiton.eugene</groupId> <artifactId>maven-eugene-plugin</artifactId> <version>${eugeneVersion}/version> <executions> <execution> <id>api generator</id> <phase>process-sources</phase> <configuration> <inputs> <input>zargo:src/main/xmi/:*.zargo</input> <input>classpath:model:/:wikitty.objectmodel </input> </inputs> <fullPackagePath>your.app.package</fullPackagePath> <defaultPackage>your.app.package</defaultPackage> <extractedPackages> your.app.package,org.nuiton.wikitty </extractedPackages> <generatedPackages>your.app.package</generatedPackages> <templates> org.nuiton.wikitty.generator.WikittyMetaGenerator, org.nuiton.wikitty.generator.WikittyDTOGenerator </templates> </configuration> <goals> <goal>smart-generate</goal> </goals> </execution> </executions> </plugin>
Dans la section inputs, on spécifie le(s) modèle(s) métier:
zargo:src/main/xmi/:*.zargo
ainsi que le modèle Wikitty (en cas de dépendance de votre modèle métier vers le modèle Wikitty).
Dans la section templates, vous pouvez spécifier quoi générer : org.nuiton.wikitty.generator.WikittyMetaGenerator pour la génération Wikitty standard et org.nuiton.wikitty.generator.WikittyDTOGenerator pour la génération des DTOs si besoin (utilisation d'une UI GWT par exemple).
La génération est effectuée ensuite à chaque fois que vous lancez un build.
Vous pourriez être étonné que le lien entre vos entités soit représenté par une chaîne de caractère. En fait, dans vos entité Wikitty, un lien vers un autre Wikitty est représenté par son identifiant qui est une chaîne de caractères. Ainsi, un getXXXXX vous retournera l'identifiant d'un Wikitty qu'il faudra récupérer en passant par le WikittyClient. Vous pouvez alors utiliser le cache pour limiter les appels côté serveur.
Il est possible de rajouter une dépendance vers un objet de l'API Wikitty (par example WikittyUser) en rajoutant simplement la classe dans votre modèle dans le package org.nuiton.wikitty.entities. Elle ne sera pas générée mais interviendra comme une autre classe de votre modèle (héritage,...).
L'ensemble des tags disponible se trouve dans la classe WikittyTagValue.
%Person.lastName$s %Person.firstName$s: %Person.birthday$tm %Person.birthday$te,%Person.birthday$tY
Hello %Person.firstName|unknow$s
In last example, if firstName field doesn't exist, unknow is used
"Person.lastName asc, Person.firstName, Person.birthday desc"
on"A.*" le champs doit commencer par 'A' "[0-9]+.[0-9][0-9]" le nombre doit avoir deux chiffres apres la virgule
crypt=Blowfish:password
Person,Employee;Company Ici il faut que l'objet ait les extensions Person et Employee ou l'extension Company
preload="Company.employee,Employee.person;Company.address"