7.3 MIA Transformation
MIA Transformation est un environnement de
développement permettant l'écriture de scripts et
l'exécution de ces scripts afin d'effectuer des transformations de
modèles. Ces modèles doivent respecter un
métamodèle supporté par l'outil afin de pouvoir être
lus. Ensuite, il faut définir des règles de transformation par le
biais de script écrits soit en Java, soit en MIA-TL, un langage
simplifiant l'écriture des scripts. La Figure 48 illustre
l'écriture d'une règle nommée « rename widgets
». Pour toutes les occurrences des objets de type « widget »,
ainsi que pour ses sous-types dans le modèle, les scripts «
camelCaseName » et « renameModelElement » seront
appliqués. La Figure 49 montre la trace résultant de
l'exécution de cette règle. On peut observer la valeur en
entrée du script « camelCaseName », et la valeur
retournée. Ce petit exemple démontre de manière simple la
façon dont on peut agir sur les éléments du ou des
modèles traités. Bien entendu, les scripts peuvent être
bien plus élaborés, affinant les recherches selon plusieurs
propriétés, effectuant des actions plus complexes qu'une simple
modification du nom, comme par exemple l'ajout d'instructions.
Deux exemples de transformations qui peuvent être assez
complexes à réaliser :
· Les fonctions sont mal typées et ne renvoient
qu'un type « object ». Résolution du type de la fonction et
affectation au type de retour (« ReturnStatement »).
· Les requêtes SQL sont sous la forme de
chaînes de caractères dans le code source, analyse de la
chaîne en question, extraction des paramètres en entrée et
en sortie de la requête. A partir de cette analyse, création d'une
couche d'accès aux données « propre » avec par exemple,
une classe par table, une méthode par requête, et positionnement
des paramètres correspondant aux variables nécessaires.
Figure 50 : Copie d'écran du logiciel MIA
Generation en mode développement
Figure 51 : Copie d'écran du logiciel MIA
Generation en mode trace
CNAM de Nantes - 2010 / 2011 - Mémoire
d'ingénieur
|
|
|
7.4 MIA Generation
L'outil MIA Generation est le complément
idéal de MIA Transformation. Dans le cadre de nos
évolutions d'architecture, c'est sur lui que repose la phase de
génération à partir des modèles issus des phases de
transformation. Même si le principe se rapproche de MIA
Transformation, des scripts positionnés sur des objets du
métamodèle, MIA Generation est plus simple à
appréhender, car beaucoup plus concret. A l'issue d'une
génération, on obtient immédiatement du code. Si on
modifie un script, on peut tout de suite vérifier si le résultat
convient. La Figure 50 détaille l'environnement de développement
de MIA Generation. Sur la partie gauche de l'écran, on trouve
l'ensemble des Packages, ils contiennent les scripts qui sont de quatre types
:
· File template : ce sont les scripts qui
produisent les fichiers
· Text template : scripts qui renvoient du texte.
Ils peuvent appeler d'autres « Text template » ou «
Macro ».
· Macro : scripts java qui renvoient la plupart du
temps du texte.
· Service : scripts java qui renvoient des
collections d'objets.
Le script de l'exemple traite les classes
stéréotypées « BusinessObject ». Donc pour
toutes les occurrences d'objets de ce type dans le modèle, le «
File Template » « BusinessObjectJavaClass » sera
appelé. Il produira un fichier qui respectera le format du script. Dans
la partie en bas à droite de l'écran, on voit le contenu du
script. Les portions écrites en noir seront
générées à l'identique dans le fichier. Les
portions entre double crochets sont des appels soit à des «
Text Template », soit à des Macros, qui
produisent eux-mêmes du texte qui sera aussi généré
dans le fichier cible. La Figure 51 illustre ce propos. Il s'agit du
résultat de la génération du File template
BusinessObjectJavaClass sur la classe « TestItem » du modèle.
La partie en haut à droite reprend le « File Template
» responsable de la génération. Dans la partie en bas
à droite, on a le résultat de la génération.
On voit que le texte package est repris tel quel, alors que le
Text Template « shortenedCodingPackageQualifiedName » renvoi
le texte suivant : « com.migrationplatform.data.testing.architecture
» qui est construit à partir des informations du modèle.
CNAM de Nantes - 2010 / 2011 - Mémoire
d'ingénieur
|
|
Figure 52 : Processus de constitution du Jar à partir d'un
flux XML.
CNAM de Nantes - 2010 / 2011 - Mémoire
d'ingénieur
|
|
|