Ecore to Python generator

Générateur Python depuis le méta-modèle Ecore.

Ce module de génération à pour objectif la production de composants (egg) autonomes (aucun framework hors bibliothèque standard) permettant de manipuler des modèles dont le méta-modèle est spécifié en Ecore.

Il s'agit en quelque sort d'un équivalent à la partie générative du projet EMF mais ciblant cette fois-ci le langage Python.

Démonstration

Cette démonstration représente un tour d'horizon du module de génération Ecore 2 Python..

Présentation

Modélisation Ecore

Le module de génération exploite les modèle Ecore et produit le code Python correspondant.

Un modèle Ecore permet de modéliser des classes, les attributs qu'elles portent et les relations qu'elles entretiennent avec les autres classes.

Ces relations entre les classes ont des caractéristiques telles que l'unicité, la cardinalité, ou l'existence d'une relation opposée.

Il est possible de réaliser un fichier Ecore dans un éditeur hierarchique directement depuis Eclipse une fois le projet EMF installé.

Le projet TopCased fournit un modeleur graphique pour réaliser les modèles Ecore de manière plus conviviale.

Objets métiers générés

Le générateur produit un module (au sens Python) autonome. Ce dernier encapsule les classes correspondantes à celles du Ecore.

Les attributs du Ecore sont présents dans le code python correspondant et les associations entraînes la production de classes spécifique encapsulant le comportement de vérification des cardinalité et d'affectation des relations opposées.

La pydoc est générée et présente des exemple d'utilisation du module et des méthodes.

Ces classes générées peuvent être complétées ou modifiées par le biais de zones de code utilisateur.

A terme le module généré sera directement déployable en tant que fichier .egg réutilisable.

Tests unitaires

Le module généré dispose de test unitaires pré-cablés pour unittest.

Ces tests unitaires vérifient le comportement des relations (unicité, cardinalité ou relations opposées). Ainsi ils permettent de valider la conservation du comportement de base lorsque les classes contiennent du code utilisateur.

Les tests unitaires sont lancées par le lancement explicite du module par l'interpreteur Python.

Lecteur/Ecrivain XMI

Le module génère un outil de chargement de XMI. Ce chargeur permet l'instantiation des objets modélisés via un fichier de type XMI similaire à ceux du projet EMF d'Eclipse.

A terme le module généré permettra la sérialisation/dé-serialisation des fichiers XMI.

Planning

Statut du module
Entités du méta-modèle

80%

Contraintes de relations

55%

Sérialisation/Désérialisation XMI

15%

Tests unitaires

45%

Déploiement .egg

0%

Installation

L'installation est détaillée sur la page d'installation des modules . Ce dernier n'as pas de spécificité d'installation il ne nécessite pas de framework particulier à l'exception de l'interpreteur Python.

Démarrage rapide

Une fois le module installé vous pouvez rapidement tester son bon fonctionnement. Créez un nouveau projet (projet vide ou projet Python si votre installation d'Eclipse dispose de PyDev).

Choisissez le menu File puis New et Other....

Dans la rubrique Acceleo choisissez Module Launcher.

La liste des modules installés est alors disponible. Choissisez le module "Ecore2Python" puis cliquez sur suivant. Remplissez alors les différents champs demandés par l'assistant.

Une fois l'assistant terminé, ce dernier crée un fichier .chain qui permet de lancer la génération et initialise un modèle Ecore d'exemple.

Un simple clic droit sur le fichier .chain suivi de Launch lancera la génération, vous retrouverez les fichiers générés dans le répertoire de sortie que vous avez choisi dans l'assistant.

Contribuez!

Si vous souhaitez modifier ou compléter les templates de génération, un fichier Team Project Set est à votre disposition, il permet d'importer les sources du module directement depuis le SVN.

Fichier Team Project Set pour Ecore2Python

La page modification des sources d'un module explique comment utiliser ce fichier.