Transformations (Profile)

Les transformations définissent des jeux d'actions pour modifier les objets avant ou après la génération, ou à la demande. Les transformations sont le plus souvent regroupées au sein de profils de transformation.

Les transformations peuvent être utilisées pour :
  • Mettre en oeuvre une architecture MDA (Model Driven Architecture), qui utilise la modélisation UML afin de décrire une application à différents niveaux de détails. PowerAMC permet de créer un PIM (platform-independent model) (modèle ne dépendant pas d'une plateforme, et qui permet de modéliser la fonctionnalité et la logique métiers de base) puis de l'affiner progressivement dans différents modèles contenant des niveaux croissants d'informations de mise en oeuvre et dépendantes de la technologie jusqu'à un modèle spécifique à une plateforme (PSM, platform-specific model). Vous pouvez définir des transformations qui vont générer une version affinée du modèle, basées sur la plateforme cible souhaitée, et les changements apportés au PIM peuvent être répercutés en cascade aux modèles générés.
  • Appliquer des motifs de modélisation à vos objets de modèle.
  • Modifier des objets dans un but particulier. Par exemple, vous pouvez créer une transformation dans un MOO qui convertit les classes <<control>> en composants.
  • Modifier des objets en conservant la possibilité de revenir sur cette modification dans le cas d'une ingénierie par va-et-vient. Par exemple, si vous générez un MPD à partir d'un MOO afin de créer une correspondance O/R et que le MOO source contient des composants, vous pouvez pré-transformer, des composants en classes afin d'établir plus facilement des correspondances avec des tables de MPD. Lorsque vous mettez à jour le MOO source depuis le MPD généré, vous pouvez utiliser une post-transformation pour recréer les composants à partir des classes.

Les transformations peuvent être appelées à la demande (sélectionnez Outil > Appliquer des transformations), avant ou après la génération de modèle (voir Guide des fonctionnalités générales > Liaison et synchronisation de modèles > Génération de modèles et d'objets de modèle), ou via une commande personnalisée (voir Menus (Profile)).

  1. Pointez sur une métaclasse, un stéréotype ou un critère dans la catégorie Profile, cliquez le bouton droit de la souris, puis sélectionnez Nouveau > Transformation.
  2. Saisissez un Nom approprié, et le cas échéant un Commentaire pour préciser son rôle.
  3. Sur l'onglet Script de transformation, saisissez du code VBscript pour effectuer la transformation.
    Dans cet exemple, qui est créé dans une extension attachée à un MCD sous la métaclasse DataItem, le script teste pour savoir si l'information a une liste de valeurs définie et, si tel est le cas (et s'il n'existe pas déjà un domaine avec la même liste de valeurs dans le MCD), crée un nouveau domaine avec la liste de valeurs :
    Sub %Transformation%(obj, trfm)
       
       Dim list
       list = obj.ListOfValues
       if not list = "" then
          output "transforming " & cstr(obj)
       
          ' Vérifie si un tel domaine existe déjà
          Dim domn, found
          found = false
          for each domn in obj.Model.Domains
             if domn.ListOfValues = list then
                found = true
             end if
          next
       
          ' Crée un nouveau domaine
          if not found then
             set domn = obj.Model.Domains.CreateNew()
             domn.SetNameAndCode obj.Name, obj.Code
             domn.ListOfValues = list
          end if
       end if
       
    End Sub
    Si cette transformation peut être ajoutée dans un profil de transformation en tant que :
    • Transformation pré-génération - La transformation est appelée dans la boîte de dialogue Options de génération. Les domaines sont créés temporairement dans le MCD avant la génération, puis générés dans le modèle cible (par exemple, dans un MPM).
    • Transformation post-génération - La transformation peut être appelée dans la boîte de dialogue Options de génération (pour une génération MCD-MCD). Les domaines sont créés dans le MCD cible après génération. La transformation peut également être appelée à tout moment en sélectionnant Outils > Appliquer les transformations pour créer les domaines dans le modèle existant.
  4. [facultatif] Consultez l'onglet Script global (voir Script global (Profile)), qui permet d'accéder aux définitions partagées par toutes les fonctions VBscript définies dans le profil, et l'onglet Dépendances, qui répertorie les profils de transformation dans lesquels la transformation est utilisée.