Créer un métamodèle et générer le code correspondant

publicité
Créer un métamodèle
et générer le code correspondant
Le but de ce TP est de vous familiariser avec EMF. Vous allez apprendre à :
• Créer un métamodèle UML avec Papyrus
• Créer un métamodèle Ecore à partir du métamodèle UML
• générer les classes Java à partir d’un métamodèle ECore
• utiliser l’éditeur arborescent généré
• créer de façon programmatique un modèle correspondant à votre
métamodèle
Questions – Vérifiez vos connaissances
A la fin du TP, vérifiez vos connaissances nouvellement acquises en répondant
aux questions suivantes.
Vous devez répondre aux questions dans un document électronique à rendre au
format .pdf ou .txt.
• Comment créer un métamodèle avec Papyrus ?
• Comment créer un projet EMF à partir d’un modèle UML ?
• Comment générer les classes Java et les éditeurs avec EMF ?
• Comment exécuter l’éditeur généré ?
• Comment créer une instance de modèle conforme au métamodèle ?
• Quel doit être le concept racine de mon modèle ?
Créer un métamodèle avec Papyrus
Papyrus est un modeleur UML. Il permet de créer graphiquement des modèles
UML.
Dans ce TP, nous allons nous en servir pour créer nos métamodèles. Pour cela,
nous allons nous servir d’un diagramme de classes.
Vous allez commencer par créer un métamodèle simple avec Papyrus. Ce
Métamodèle servira dans le tutorial d'EMF. Le métamodèle à créer est le suivant
:
•
Lancez Papyrus
o Utilisez un nouveau workspace nommé « generateurDoc »
o Choisissez de créer un nouveau projet Papyrus, nommez le
« pje.library.metamodel ». Nommez le modèle « library ».
Papyrus s’ouvre avec un diagramme de classe. Créez en un si il n’y en a pas.
Vous pouvez maintenant créer graphiquement quelques métaclasses de votre
métamodèle. Pour cela, créez des classes dans le diagramme et vous leur donnez
un nom.
Tutorial EMF
•
Faite le tutorial «EMF - Generating an EMF Model” : Help->Help Contents
puis EMF Tutorial.
o Pour le tutorial, choisissez de charger le model à partir de UML
(.uml), puis pointez sur votre métamodèle fait précédemment. Ne
faites pas les exemples avec un chargement à partir de Java ou
autre.
Métamodèle pour le projet
Maintenant, vous allez créer votre métamodèle pour votre projet et générer les
classes et les éditeurs. Pour cela, créez des classes dans le diagramme et
donnez-leur un nom. Contentez-vous de commencer par deux ou trois concepts de
base. Vous ajouterez les autres concepts par la suite au fur et à mesure.
Nommez votre projet : pje.umldoc/metamodel
Créer un projet EMF
Une fois le modèle UML créé, nous allons créer le métamodèle Ecore et le
générateur EMF (fichier .ecore et .genmodel). Vous pouvez pour cela créer un
nouveau projet EMF.
Créer un nouveau projet EMF :
• new -> project … puis Eclipse Modeling Framework -> EMF Project
•
• Choisissez d’importer à partir d’UML
•
•
•
Recherchez votre modèle xxx.uml (Browse File System …)
Gardez les options
Choisissez le package racine de votre modele (umldoc)
Vous devez maintenant avoir un fichier .ecore et un fichier .genmodel
correspondant à votre métamodèle.
Ouvrez le .genmodel et comparez le au modèle UML. Que sont devenu vos
classes ?
Générer les classes Java pour le métamodèle
A partir du .genmodel, il est possible de générer :
• des classes Java pour manipuler des modèles conforme à notre
métamodèle
• un éditeur arborescent pour créer graphiquement des modèles
Pour
•
•
•
cela, il faut générer les classes Java et les éditeurs :
ouvrez le .genmodel
selectionnez la racine
menu contextuel -> Generate All
Les classes et les éditeurs sont générés.
Tester l’éditeur arborescent généré
Pour savoir comment tester les éditeurs, vous pouvez aussi vous référer au
tutorial EMF.
Testez les classes et l’éditeur généré.
Vous devez lancer un deuxième Eclipse qui servira d’environnement de tests :
Run -> Run As -> Eclipse Application
Vous pouvez aussi cliquer sur la flèche noir à coté de cette icône
, puis Run
As -> Eclipse Application
Dans l’Eclipse de test, créez un projet « test », new project -> general ->
project .
Puis créez un modèle en utilisant le wizard adéquat (cherchez le !)
Enrichir son métamodèle
Vous pouvez modifier votre métamodèle pour ajouter de nouveaux concepts
(Property, Method, …). Une fois fait, il faut recharger le métamodèle Ecore et
régénérer les classes et éditeurs :
• modifiez votre métamodèle
• Allez dans le projet contenant votre .genmodel et selectionnez-le
•
•
menu contextuel->Reload Model …
puis recommencez les étapes de générations de code et de teste de
l’éditeur arborescent.
Créer un modèle de façon programmatique
Un modèle peut aussi être créé, sauvé et chargé à l’aide d’un programme Java.
La documentation EMF (Help -> Help Content -> EMF Programmer’s
Guide -> EMF Framework Programmer’s Guide) donne des exemples de
code pour charger et sauver un modèle à l’aide des classes Java générées.
Créez une classe executable (i.e. avec une méthode
main() )
javagen.metamodel.tests.TestProg.java. Dans cette classe :
• Créez un mjava.package contenant une mjava.class
• Sauvez le modèle dans un fichier xml
• Chargez le modèle
Téléchargement