Modélisation de système : comment utiliser OCL avec Eclipse, c'est bien la question que tout le monde se pose
Lors des articles précédents nous avons vu "le kit de survie" d'OCL c'est à dire les bases fondamentales du langage de règles de l'OMG.
Mais cela reste très théorique et on aimerait bien mettre tout ça en pratique et bien regardons quelques fonctionnalités que propose Eclipse EMF (Eclipse Modeling Framework).
- Installez Elipse Modeling Project (voir mon article publié sur ce blog : "Ingénierie Dirigée par les Modèles (IDM) : tutoriel ATL (ATLAS Transformation Language) pour voir la vraie vie" https://www.urbanisation-si.com/articles/ingenierie-dirigee-par-les-modeles-idm?page=2 )
- Téléchargez : mdt-ocl-Update-5.0.3_luna.zip à partir du site d'Eclipse Modeling Project (http://archive.eclipse.org/modeling/mdt/ocl/downloads/drops/5.0.3/R201411231422/) la version 5.0.3 du plugin OCL, compatible avec la version Luna qui est la version d'Eclipse Modeling Tools que nous avons installé pour cette série d'articles.
- Help - Install New Software - Add - Local - sélectionnez le répertoire où vous avez dézippé mdt-ocl-Update-5.0.3_luna.zip - continuez jusqu'à la fin de l'installation.
Concevez le métamodèle Family (voir l'article "Ingénierie Dirigée par les Modèles (IDM) : tutoriel Eclipse Ecore, le corps à corps avec les méta modèles" https://www.urbanisation-si.com/ingenierie-dirigee-par-les-modeles-idm-tutoriel-eclipse-ecore-le-corps-a-corps-avec-les-meta-modeles).
Créez un objet de type Family :
- Double cliquez sur sur le fichier Families.ecore
- Dans l'arborescence, clic droit sur Family - Create Dynamic Instance ...
- Le fichier Family.xmi est créé.
- Remarque : attention a bien renseigné les propriétés Name, Ns Prefix et Ns URI du EPackage Families de Families.ecore sinon vous un message d'erreur dans le fichier XMI stipulant que l'URL est nulle !
- Double cliquez sur Family.xmi, le fichier s'ouvre en mode texte.
- Clic droit sur le fichier - Open With - Sample Reflective Ecore Model Editor
- En dessous de Platform - cliquez sur Family - Properties Last Name=Dupond
- Clic droit sur Family - New Child - Daughters Member - une instance de Member est créée, sélectionnez et renseignez First Name=Elsa
- Créez une 2ème fille Emma.
Pour tester des expressions OCL, utilisons la console OCL :
- Sélectionnez Family - clic droit - OCL - Show OCL Console. C'est la où les Athéniens atteignirent.
- Un objet sélectionné dans l'éditeur graphique Family.xmi représente l'objet courant donc self.
Sélectionnez Family Dupond
La console est divisée en 2 partie : la partie supérieure est réservée aux résultats et la partie inférieurs aux expressions OCL
Exemple :
- Saisissez daughters et faites Entrée, la partie résultats affichent Elsa et Emma
- La touche Page précédente rappelle les dernières expressions saisies.
- Saisissez daughters->s la completion automatique s'affiche, double cliquez sur size() et Entrée
- Results=2
- La completion s'obtient avec CTRL espace
- Saisissez : daughters->size()<2
- Results=false
Une fois les expressions OCL testées dans le console, nous pouvons les ajouter en Java :
- Clic droit sur Families.ecore - Open With - OCLinEcore Editor - l'éditeur Ecore Java s'ouvre avec les classeEcore : Family et Member :
- Ajouter dans la classe Family la contrainnte :
Family.daughters->size()<2;
Cliquez dans l'éditeur graphique Family.ecore
On constate que la contrainte a été ajoutée. On pourrait la créer et la modifier directement dans l'éditeur :
- Sélectionnez Families.ecore - Family - New Child - EAnnotation - Properties - Key=maxFilles - Value=Family.daughters->size()<2
N'oubliez pas Save All régulièrement.
Pour finir, vérifions la validation :
- Family.xmi - clic droit sur Family Dupond - Validate - une popup "Validation Problems" s'affiche avec le message concernant la contriante maxfilles qui n'est pas respectée.
Voilà fin de cette petite mise en jambe pour la mise en pratique d'OCL, nous aurons l'occasion de pratiquer OCL plus intensivement dans nos prochains articles consacrés à la transformation de modèles et à ATL (ATLAS Transformation Language).
"Chacun rêve de changer l'humanité, mais personne ne pense à se changer lui-même."
Léon Tolstoï
Voir aussi :
http://urbanisation-si.wix.com/blog
http://urbanisme-si.wix.com/blog
http://urbanisation-si.wix.com/urbanisation-si
http://urbanisation-si.over-blog.com/
http://rhonamaxwel.over-blog.com/
http://urbanisation-des-si.blogspot.fr/
A découvrir aussi
- Modélisation de système : Soyez maniaque, croisez et recroisez vos modèles UML pour être certain qu'ils soient valides (4)
- Modélisation de système : Soyez maniaque, croisez et recroisez vos modèles UML pour être certain qu'ils soient valides (10)
- Modélisation de système : OCL ça se complique !
Inscrivez-vous au site
Soyez prévenu par email des prochaines mises à jour
Rejoignez les 799 autres membres