Un premier générateur
Dans ce tutorial nous abordons la réalisation d'un module de génération. Un module est un ensemble de templates permettant de générer un texte à partir d'un modèle UML par exemple. Nous allons présenter dans un premier temps les outils permettant la mise au point d'un module à travers la génération d'un fichier XHTML documentant le modèle.
Principe
Dans ce tutorial nous allons créer un template générant du HTML à partir d'un modèle UML2.
Projet de génération
Il est tout d'abord conseillé de basculer en perspective Acceleo.
Dans un premier temps il faut créer un projet de génération via le menu New->Generator Project.
Le projet dispose d'un décorateur spécifique indiquant qu'il s'agit d'un projet de génération (les flèches vertes).
Afin de mettre au point notre template de génération nous avons besoin d'un modèle de test.
Création d'un modèle
Si votre modèle est conforme à UML 1.3 ou UML 1.4, vous devez dans un premier temps le convertir à EMF via l'action Acceleo->Convert Xmi accessible via un clic-droit sur le modèle.
Ce modèle est placé dans un repertoire model du projet.
Premier template
Nous avons crée un modèle, nous allons maintenant créer notre premier template de génération.
Cliquez sur New puis Empty Generator.
Ici il s'agit d'un générateur pour UML2, il faut donc choisir l'URI correspondante dans la boite de dialogue. La liste déroulante Types values permet d'indiquer sur quel type d'objet on souhaite générer un fichier.
Ici on souhaite générer un fichier par classe présente dans le modèle, il s'agit donc du type uml.Class.
L'assistant crée alors un template de génération vide.
Déclaration des dépendances des services
Afin de réaliser des services en Java manipulant des entités d'un méta-modèle (UML2 ou autre), il convient dans un premier temps de déclarer la dépendance du module de génération vers ce dernier.
Ceci est possible en éditant le fichier Manifest.mf que l'on trouve dans le repertoire META-INF du projet de génération.
Dans le cas d'uml2 il est nécessaire de spécifier org.eclipse.uml2.uml dans les dépendances du projet.
L'éditeur réflectif Acceleo
Le modèle créé précédemment va être utilisé pour mettre au point le template de génération. Ceci est rendu beaucoup plus simple grâce à l'éditeur réflectif. Ce dernier est capable de charger tout modèle et offre une prévisualisation dynamique du code généré.
Pour ouvrir l'éditeur réflectif il faut cliquer avec le bouton droit sur un modèle puis choisir Open with->Acceleo Reflective Editor.
L'éditeur réflectif est associé aux fichiers d'extension "xmi", "ecore", "uml" et "uml2". Dans le cas où votre modèle utilise une autre extension vous pouvez l'ouvrir avec l'éditeur réflectif en utilisant le menu "Open As -> Acceleo".
Le modèle est alors représenté sous une forme arborescente.
Prévisualisation de la génération
Une fois le modèle ouvert dans l'éditeur réflectif il faut lui associer le template créé précédemment. Cliquez sur Acceleo -> Select Template dans l'éditeur réflectif et choisissez le template de génération depuis UML2 vers XHTML.
Une fois le template sélectionné des marqueurs apparaissent dans la vue Outline de l'éditeur réflectif.
Ces marqueurs signifient que le template peut génèrer des fichiers pour chacun des objets marqués. Il s'agit maintenant de remplir le template afin de générer du texte.
La figure suivante montre un template générant pour chacune des classes une description composée des commentaires et de ses attributs.
Vous pouvez télécharger le template d'exemple UML2 vers XHTML.
Pour plus d'informations sur la syntaxe des générateurs reportez-vous à la documentation de référence et aux modules d'exemple.
Une fois ce template complété et sauvé vous pouvez mettre à jour la prévisualisation via un clic droit dans l'éditeur réflectif, Acceleo -> Reload Template.
Les marqueurs de génération sont toujours présents. Lorsque l'on sélectionne une classe disposant de ce marqueur l'éditeur réflectif affiche une prévisualisation du code généré dans l'onglet source.
Vous pouvez donc répéter cela autant de fois que nécessaire pour la mise au point du template de génération.
Génération des fichiers
Une fois le template de génération mis au point il s'agit de générer les fichiers correspondants. Ceci est possible via l'action Generate files dans le menu Obeo de l'éditeur réflectif.
Vous pouvez alors choisir le repertoire où les fichiers seront générés (ici doc). Acceleo génère un fichier HTML par classe du modèle UML2.
Génération massive
La génération massive est possible par l'utilisation des chaînes de lancement. Ces dernières permettent de définir une suite d'actions données pour générer un projet et permettent le lancement de plusieurs générations successives.
Ce document est une introduction à la réalisationde modules Acceleo. Le tutorial Acceleo avec GMF aborde la création d'un module de génération pour un DSL réalisé avec GMF.
Ces documentations facilitent la mise en place d'Acceleo ainsi que son utilisation, pour des besoins plus pointus une documentation payante est disponible sur le site de Obeo. Veuillez lire les instructions fournies ici.
Vous pouvez également consulter la documentation de référence d'Acceleo.
Un problème ?