Propriétés d'une transformation

Une transformation a les propriétés suivantes :

Onglet Général

L'onglet Général contient les propriétés suivantes :

Propriété

Description

Nom

Nom de la transformation. Prenez soin de spécifier des noms explicites afin de les identifier plus facilement dans les listes de sélection.

Commentaire

Informations supplémentaires relatives à la transformation utilisées pour expliquer le script

Onglet Script de la transformation

L'onglet Script de la transformation contient les propriétés suivantes :

Nom

Définition

CopyObject

Duplique un objet existant et définir une source pour l'objet dupliqué.

Paramètres :
  • source : objet à dupliquer

  • étiquette [facultatif] : identificateur

Renvoie : Une copie du nouvel objet

SetSource

Définit l'objet source d'un objet généré. Il est recommandé de toujours définir l'objet source afin de garder trace de l'origine d'un objet généré.

Paramètres :
  • source : objet source

  • cible : objet cible

  • étiquette [facultatif] : identifier

Renvoie :

GetSource

Récupère l'objet source d'un objet généré.

Paramètres :
  • cible : objet cible

  • étiquette [facultatif] : identifier

Renvoie : Objet source

GetTarget

Récupérer l'objet cible d'un objet source

Paramètres :
  • source : objet source

  • étiquette [facultatif] : identifier

Renvoie : Objet cible

Puisqu'un objet source peut être transformé et avoir plusieurs cibles, vous pouvez rencontrer des problèmes pour identifier l'origine d'un objet, tout particulièrement dans la boîte de dialogue de fusion. Le mécanisme suivant est utilisé pour aider à identifier l'origine d'un objet :
  • Si l'objet source est transformé en un seul objet, la transformation est utilisée comme identificateur interne de l'objet cible.
  • Si l'objet source est transformé en plusieurs objets, vous pouvez définir une balise particulière afin d'identifier le résultat de la transformation. Vous devez spécifier uniquement des caractères alphanumériques, et il est recommandé d'utiliser une valeur "stable" comme un stéréotype, qui ne risque pas d'être modifiée lors de générations successives.

Par exemple, MOO1 contient la classe Customer, à laquelle vous appliquez un script de transformation pour créer un EJB. Deux nouvelles classes sont créées à partir de la classe source, une pour l'interface home, et l'autre pour l'interface remote. Dans le script de transformation, vous devez affecter une étiquette "home" pour l'interface home, et "remote" pour l'interface remote. L'étiquette s'affiche entre signes <> dans l'onglet Version pour un objet, en regard de l'objet source.

Dans l'exemple suivant, le mécanisme de l'étiquette est utilisé pour identifier les classes attachées à un composant :

 'setting tag for all classes attached to component  
 for each Clss in myComponent.Classes
  if clss <> obj then 
   trfm.SetSource obj,Clss," GenatedFromEJB"+ obj.name +"target" +Clss.Name
   For each ope in clss.Operations    
     if Ope.Name = Clss.Code Then 'then it is a constructor _Bean operation
      trfm.SetSource obj,Ope," GenatedFromEJB"+ obj.name +"target" +Ope.Name
     end if 
     if Ope.Name = Clss.Name Then 'then it is a constructor operation
      trfm.SetSource obj,Ope," GenatedFromEJB"+ obj.name +"target" +Ope.Name
     end if 
     if Ope.name = "equals" Then 'then it is an equals operation and should be tagged
      trfm.SetSource obj,Ope," GenatedFromEJB"+ obj.name +"target" +Ope.Name
     end if
   next
   end if  
 next

Le script de transformation ne requiert pas autant de vérifications que les scripts standards, qui imposent de vérifier le contenu d'un modèle pour éviter les erreurs, car les transformations sont toujours mises en oeuvre dans un modèle temporaire ne contenant aucun objet. Ce modèle temporaire sera ensuite fusionné avec le modèle cible de génération si l'option de conservation de modifications est activée lors de la mise à jour.

Si vous créez une transformation en utilisant un script existant, vous pouvez supprimer ces contrôles.

Les objets transformation interne ne s'affichent pas dans l'interface de PowerAMC. Ils sont créés comme objets temporaires et passés au script de sorte que l'utilisateur puisse accéder aux fonctions helper mais aussi pour enregistrer l'exécution d'une séquence de transformations afin de pouvoir les exécuter ultérieurement.

Les objets transformation interne sont préservés lorsque les transformations sont utilisées par la fonctionnalité Appliquer les transformations ou dans un menu. En effet, lorsque vous mettez à jour un modèle (le régénérez) dans lequel ce type de transformations a été exécuté, les transformations doivent être exécutées à nouveau dans le modèle source afin de préserver l'équivalence entre les modèles source et cible.

Par exemple, MCD1 contient l'entité A, vous générez un MOO à partir de MCD1 et la classe B est créée. Vous appliquez des transformations à la classe B dans MOO1, ce qui crée la classe C. Vous souhaitez ensuite régénérer MCD1 et mettre à jour MOO1 : la classe B sera générée à partir de l'entité A mais la classe C est manquante dans le modèle généré, ce qui risquerait de se manifester par une différence dans la boîte de dialogue de fusion. Toutefois, grâce aux objets transformation interne, les transformations qui ont été exécutées dans le MOO généré sont ré-exécutées et vous obtenez la classe C et les modèles à fusionner sont encore plus similaires qu'avant.

Onglets Script global et Dépendances

L'onglet Script global permet d'accéder aux définitions partagées par toutes les fonctions VBScript définies dans le profil, et l'onglet Dépendances répertorie les profils de transformation dans lesquels la transformation est utilisée.