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 ? 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 Rose (.mdl). Ne faites pas les exemples avec un chargement à partir de Java ou autre. Maintenant, vous allez créer votre métamodèle Java et générer les classes et les éditeurs. 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 commencer à créer notre métamodèle Java. Pour cela, nous allons nous servir d’un diagramme de classes. Lancez Papyrus o Voir la page du fil : http://www.fil.univ-lille1.fr/INTRANET/Evolution_Logiciels.html o Utilisez un nouveau workspace nommé « modelesUML » o Choisissez de créer un nouveau projet Papyrus, nommez le « javagen.metamodel ». Nommez le modèle « mjava ». 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. Contentez-vous de quelques concepts de base, comme package, classe, attribut et méthode. Vous ajouterez les autres concepts par la suite. 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). Il faut pour cela créer un nouveau projet Eclipse. Lancez Eclipse o Voir la page du fil : http://www.fil.univ-lille1.fr/INTRANET/Evolution_Logiciels.html o Utilisez un nouveau workspace nommé « generateurjava » Vous devez créer un nouveau projet EMF : new -> project … puis Eclipse Modeling Framework -> EMF Project Choisissez d’importer à partir d’UML Recherchez votre modèle mjava.uml (Browse File System …) Gardez les options Choisissez le package mjava Vous devez maintenant avoir un fichier .ecore et un fichier .genmodel correspondent à 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