Accès et modification des objets et propriétés (Scripting)

Vous pouvez utiliser le script pour accéder à n'importe quel objet ou propriété d'objet et les modifier. Les objets n'incluent pas uniquement des objets de modélisation courants (tels que les tables, les classes, les processus et les colonnes), mais également les diagrammes et symboles, ainsi que les objets fonctionnels (tels qu'un rapport ou référentiel). Un objet appartient à une métaclasse du métamodèle de PowerAMC et hérite des propriétés, collections et méthode de cette métaclasse.

Les objets racine, tels que les modèles, sont accessibles via des propriétés et fonctions (voir Manipulation des modèles, des collections et des objets (Scripting)), tandis que les objets standard sont accessibles en parcourant les collections (voir Consultation et modification des collections (Scripting)) ou individuellement via les méthodes suivantes : Les paramètres suivants sont disponibles :
Paramètre Description
Nom / Code / Chemin Spécifie le nom ou le code de l'objet à trouver, ou son chemin d'accès. Par exemple, pour trouver la colonne Adresse dans la table Client du package Ventes à partir du contexte du noeud de modèle, vous pouvez chercher par le nom Adresse ou par le chemin Ventes/Client/Adresse.
Type Spécifie la métaclasse de l'objet à trouver sous la forme cls_NomPublic. Par exemple, pour trouver une colonne, sélectionnez cls_Column.

Ces ID de métaclasse sont uniques dans leur bibliothèque de modèle, mais, dans des cas comme les packages, qui peuvent apparaître dans plusieurs types de modèles, vous devez préfixer l'ID à l'aide du nom du module (PdOOM.cls_Package). Lorsque vous créez un modèle, vous devez utiliser le préfixe de module (par exemple PdPDM.cls_Model).

ParamètresFacultatifs Les paramètres suivants sont facultatifs :
  • "Stereotype" - Spécifie que l'objet à trouver doit porter le stéréotype spécifié.
  • "LastFound" - Spécifie que la recherche doit commencer après cet objet. Ce paramètre peut s'avérer particulièrement utile dans le cas où plusieurs objets ont le même chemin. Dans ce cas, la recherche peut être lancée dans une boucle while qui utilise la correspondance précédente comme paramètre LastFound (dernier trouvé).
  • CaseSensitive=y|n - [défaut : y] Spécifie que la recherche tient compte de la casse.
  • IncludeShortcuts - [défaut : n] Spécifie que les raccourcis peuvent être trouvés.
  • UseCodeInPlaceOfName - [ByPath, défaut : n] Spécifie que l'objet peut être trouvé par son code (Default=n).
  • PathSeparator - [ByPath, défaut= /, \ ou::)] Spécifie le caractère pour séparer les noeuds dans le chemin.
Vous pouvez obtenir les valeurs d'attribut standard en utilisant la notation avec point (objet.attribut) ou à l'aide d'une des méthodes suivante : Vous pouvez définir des valeurs d'attribut en utilisant la notation avec point (objet.attribut=valeur) ou à l'aide d'une des méthodes suivante :
Remarque : Pour plus d'informations sur l'obtention et la définition de valeurs d'attributs étendus, voir Création et utilisation d'extensions (Scripting)
Le script suivant ouvre un MOO exemple, trouve une classe par nom et un paramètre par chemin, puis imprime et modifie certaines de leurs propriétés :
Dim MonModele, C, P
'Ouverture du fichier de modèle
Set MonModele=OpenModel(EvaluateNamedPath("%_EXEMPLES%\" & "UML2 Sample.moo"))
'Obtention de la classe et du paramètre
Set C=MonModele.FindChildByName("OrderManager",cls_Class)
Set P=MonModele.FindChildByPath("SecurityManager/CheckPassword/login",PdOOM.cls_Parameter)

'Impression des valeurs initiales
Output "Valeurs initiales :"
PrintProperties C, P
'Modification des valeurs
C.Comment="Cette classe contrôle les commandes."
C.SetAttributeText "Visibility", "private"
P.Name="LoginName"
'Impression des valeurs modifiées
Output "Valeurs modifiées :"
PrintProperties C, P

'Procédure d'impression des valeurs
Sub PrintProperties(MyClass, MyParam)
 output "Classe : " & MyClass.Name
 output vbTab & "Commentaire : " & MyClass.Comment
 output vbTab & "Visibilité : " & MyClass.GetAttributeText("Visibility")
 output vbTab & "Persistance : " & MyClass.GetAttributeText("PersistentGenerationMode")
 output "Paramètre : " & MyParam.Parent & "." & MyParam.Name
 output vbTab & "Type de données : " & MyParam.DataType
 output vbTab & "Type de paramètre : " & MyParam.GetAttributeText("ParameterType")
End Sub