Cet exemple montre comment utiliser un diagramme pour spécifier l'entrée
d'une transformation de modèle à modèle. La présente rubrique explique à la fois comment
exécuter ce type de transformation et comment la configurer.
Avant de commencer
Pour installer et configurer les ressources de l'exemple,
reportez-vous à la rubrique "Transformation de modèle à modèle utilisant un diagramme pour spécifier l'entrée - Instructions de configuration".
- Dans le plan de travail d'exécution, examinez la source et la configuration
de transformation.
- Développez la branche Diagrammes et modèles et notez que
les éléments de diagramme et de modèle sont inclus dans le projet source.
- Faites un clic droit sur run test.tc et
sélectionnez .
- Dans l'éditeur de configuration de transformation, cliquez sur l'onglet Propriétés. Notez que la valeur spécifiée pour la propriété DiagramName est Main1,
qui est l'un des diagrammes contenus dans le projet.
- Dans l'éditeur de configuration de transformation, cliquez sur l'onglet Principal, puis
sur Exécuter.
- Examinez la sortie de la transformation. La sortie inclut Class2, Class4 et Class6, ce qui est conforme aux informations spécifiées dans le diagramme
d'entrée nommé Main1.
- Pour comprendre comment la transformation est configurée,
examinez le projet que vous avez importé dans votre espace de travail.
- Développez src, puis com.ibm.xtools.transform.authoring.examples.classesindiagram,
et ouvrez la classe TransformationProvider, ClassesInDiagramTransformationProvider.
- Notez que la classe TransformationProvider obtient le nom du
diagramme auprès du contexte de la transformation, puis elle le stocke
dans une variable globale. Le code ressemble à ceci :
protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
return new RootTransformation(descriptor, new MainTransform() {
@Override
public void execute(ITransformContext context) throws Exception {
diagramName = (String)context.getPropertyValue("diagramname");
super.execute(context);
}
});
}
public static String diagramName = null;
- Développez la branche 'model' et ouvrez le fichier de mappage, qui a pour
nom ClassesInDiagram.mapping.
- Dans la déclaration de mappage Model2Model, faites un clic droit sur la
seconde sous-mappe packagedElement-à-packagedElement et sélectionnez Afficher dans les
propriétés. Cette sous-mappe est le mappage Class2Class.
- Dans la fenêtre Propriétés, cliquez sur
l'onglet Extracteur personnalisé. Notez que l'extracteur personnalisé utilise la variable globale pour
déterminer quelles classes doivent être traitées en se référant au contenu du
diagramme spécifié. La même variable globale est également utilisée par l'extracteur
personnalisé dans la sous-mappe Class2Class de la déclaration de
mappage Package2Package.
- Dans le plan de travail d'exécution, dans l'éditeur de configuration de transformation, sur la page Propriétés,
remplacez la valeur du champ diagramName
par "Main2" et exécutez à nouveau la transformation. Cette fois, la transformation échoue.
La transformation échoue
lorsque le diagramme Main2 est désigné dans la configuration, car le modèle
source contient une généralisation de Class5 vers Class ; cependant, Class1
n'a pas été copié dans le modèle cible car il n'apparaissait pas dans le
diagramme spécifié.
Lorsque vous créez une transformation, veillez à ce qu'elle inclue tous les
objets référencés qui sont contenus dans le même modèle, ceci afin de permettre la résolution de
toutes les références intramodèles.