Adel Ferdjoukh Octobre 2014
Synopsis 1 Qu est ce qu on fera dans ce TP? 2 ECore Projet EMF -2-
Qu est ce qu on fera dans ce TP? Synopsis 1 Qu est ce qu on fera dans ce TP? 2 ECore Projet EMF -3-
Qu est ce qu on fera dans ce TP? Qu est ce qu on fera dans ce TP? Programme 1 Première prise en main de l environnement EMF. 2 Utilisation des éditeurs de méta-modèles et de modèles. 3 Premières manipulations d un modèle en EMF/JAVA: use case UML. 4 Refactoring d un modèle UML. 5 Transformation de modèles: use case State Pattern. 6 Génération de modèles: Manipulation d un méta-modèle (Partie notée). -4-
Synopsis 1 Qu est ce qu on fera dans ce TP? 2 ECore Projet EMF -5-
EMF EMF? Framework de modélisation intégré à Eclipse. Version Eclipse Modeling Tools (Eclipse Luna). Il permet quoi? Méta-modélisation et édition de modèles: Basé sur le MMM ECore. Vérifications: Intégration de contraintes OCL. Accès à la modélisation graphique: GMF par exemple. Transformation et analyse de modèles: Java. -6-
ECore Ecore Méta méta-modèle de construction de méta-modèles dans Eclipse. Ses concepts Le concept de base est la EClass. Les attributs et les opérations sont les EAttribute et les EOperation. Les EReference relient les EClass. Des éléments de structuration et de commentaires: EPackage et EAnnotation. -7-
-8- Projet EMF Projet EMF Créer un projet File/New/Other/Eclipse Modeling Framework/Empty EMF project Nom du projet Emplacement des répertoires liés au projet (Worksapce). Création des répertoires et fichiers. model: Répertoire des meta-modèles et modèles. src: Répertoire pour le code Java et code généré. Nommage Règles habituelles: Pas d espace, de lettre accentuée dans les noms de fichier et de répertoire. Attention aux mot-clefs Java: Problème lors de la génération de code.
Créer un méta-modèle Créer un méta-modèle conforme à ECore Création d un fichier filename.ecore. Obligatoire: création d un EPackage par défaut. Obligatoire: création d une EClass root (qui a lien de composition avec toutes les autres). Manipulation du méta-modèle via l éditeur arborescent. Ajout d entités. Sélection de l entité racine puis New Child Accès aux propriétés des éléments (Eclipse) (vue propriétés, window Show View other... General Properties). -9-
Vue Graphique Création d une vue graphique: modelname.ecorediag. Plus facile à l édition d un méta-modèle. C est une vue du méta-modèle: Certains éléments du modèle peuvent ne pas apparaître. Exporter ses modèles: File Save As Image File. On peut supprimer de la vue et non du modèle (problème lors de la génération de code). -10-
Instancier un méta-modèle Éditeur réflexif Éditeur intégré à EMF (Classe root Create Dynamic Instance). Instanciation Arborescente en partant de la racine (à coups de New Child). Édition dans Java Génération du code du méta-modèle. -11-
Générer le code d un méta-modèle GenModel Créer un fichier: modelname.genmodel Ce fichier est propre au méta-modèle. Générer des projets pour instancier le méta-modèle. -12-
Manipuler un modèle I public static Resource LoadModel(String filepath) { ResourceSet resourceset = new ResourceSetImpl(); URI fileuri = URI.createFileURI(new File(filePath). getabsolutepath()); resourceset.getresourcefactoryregistry(). getextensiontofactorymap().put( Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()); resourceset.getpackageregistry().put(ecpackage. ens_uri, EcPackage.eINSTANCE); -13-
Manipuler un modèle II } Resource trresource = resourceset.getresource( fileuri, true); return trresource; -14-