4.4.2.3 Le moteur de validation et de
génération de code Ada
Après avoir fait notre projet Xpand et les
règles de cohérences sous forme d'OCL. Nous avons testé
notre programme en utilisant un générateur.
Ce générateur, dans notre cas utile deux
variables, l'une nommée « model » avec comme valeur « k
», précise le modèle XMI à entrer.
Et l'autre « src-gen » de valeur « src-gen
», précisant la place ou les fichiers générés
vont être enregistrés.
De plus notre générateur contient quatre composants
:
~ Reader : Il permet de lire le modèle XMI à
utiliser pour la transformation.
~ DirectoryCleaner : Il permet de nettoyer le
répertoire, ici « src-gen », qui contient les artefacts
générés.
~ CheckComponent : Ce composant contient le fichier de
contraintes OCL « Check » pour valider notre modèle XMI
à entrer.
~ Generator : Ce composant permet de préciser le
générateur de code à utiliser dans notre workflow pour
générer notre code.
Le workflow donné ci-dessous permet de
générer le code Event-B relatif au modèle XMI conforme au
méta-modèle Event-Ben utilisant les templates Xpand fournis
précédemment.
3
1
<?xml version=" 1.0 "?>
<workflow>
<propertyname="SCEH" value=" Event-B. generator . project /
src /SCEH. xmi"
5
/>
<propertyname=" src-gen " value=" src-gen "/>
7 <!-- set up EMF for standalone execution
-->
<beanclass=" org . eclipse . emf .mwe. u t i l s .
StandaloneSetup ">
9 <platformUrivalue=" .. "/>
</bean>
11 <!-- instantiate metamodel -->
<beanid="mm_emf"
13 class=" org . eclipse . xtend . typesystem
. emf . EmfRegistryMetaModel "/>
<!-- load model and store i t in slot ' model' -->
15 <componentclass=" org . eclipse. emf
.mwe. u t ils . Reader">
page 85
4.4 Transformations de modèle ECore vers Event-B en
utilisant une approche IDM (Ingénierie Dirigée par les
Modèles).
31
33
35
37
39
<urivalue= platform : / resource /\${SCEH} />
<modelSlotvalue= SCEH /> </component>
19 <componentclass= org . eclipse . emf .mwe.
u t ils . DirectoryCleaner > <directoryvalue= {src -gen} />
21 </component>
<!-- check model -->
23 <componentclass= org . eclipse . xtend .
check. CheckComponent > <metaModelidRef= mm_emf />
25 <checkFilevalue= src :: Checks />
<emfAllChildrenSlotvalue= SCEH />
27 </component>
<!--generate code -->
29 <componentclass= org . eclipse . xpand2 .
Generator > <metaModelidRef= mm_emf />
<expand
value= template :: Template:: main FOR SCEH />
<outletpath= {src-gen} >
<postprocessorclass= org . eclipse . xpand2 . output.
JavaBeautifier />
</outlet>
<resourceManagerclass= org . eclipse . xtend . expression .
ResourceManagerDefaultImpl >
<fileEncodingvalue= ISO-8859-1 />
</resourceManager>
</component> </workflow>
17
|