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

Historique de la génération

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 :

La transformation est utilisée comme identificateur interne de l'objet cible.

Pour pouvez définir une étiquette (tag) pour 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", c'est-à-dire une valeur qui ne risque pas d'être modifiée lors de générations successives, par exemple un stéréotype.

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

Vérifications de script

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.

Objet transformation interne

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.


Created October 8, 2009. Send feedback on this help topic to Sybase Technical Publications: pubs@sybase.com