Consultation et modification des collections (Scripting)

La plupart de la navigation dans le métamodèle est effectuée en descendant depuis la racine du modèle via les collections d'objets vers les collections de sous-objets ou les objets associés. Un MOO contient une collection de classes et les classes contiennent des collections d'attributs et d'opérations. Vous pouvez obtenir des informations sur les membres d'une collection et naviguer sur eux par le biais de script, mais aussi ajouter, retirer et déplacer des objets dans la collection.

Pour parcourir les membres d'une collection, naviguez jusqu'à l'objet parent, puis utilisez une boucle For each. Ce script imprime les noms de toutes les tables contenues dans un MPD ouvert.
Dim MonModele
Set MonModele=ActiveModel
For each t in MonModele.Tables
    Output "* " & t.Name
Next
Lorsque vous parcourez une collection, les objets de la collection et les éventuels raccourcis vers des objets sont renvoyés indifféremment.
Remarque : Pour plus d'informations sur l'accès aux collections définies dans des extensions, voir Création et utilisation d'extensions (Scripting).
Les types de collection suivants sont affichés dans le métamodèle :
Les propriétés suivantes sont disponibles pour toutes les collections :
Les méthodes suivantes sont disponibles pour modifier les collections éditables :
Le script suivant :
Dim MonModele, t, r, sym
set MonModele = CreateModel(PdPDM.Cls_Model,"DBMS=SYASA12")
MonModele.SetNameAndCode "MonMPD" , "MonMPD"
'Créer des tables des règles
For idx = 1 to 12
   Set t=MonModele.Tables.CreateNew()
   t.SetNameAndCode "T" & idx, "T" & idx
   Set sym=ActiveDiagram.AttachObject (t)
   Set r=MonModele.BusinessRules.CreateNew()
   r.SetNameAndCode "RG" & idx, "RG" & idx
Next
ActiveDiagram.AutoLayoutWithOptions(2)
'Attacher des règles à Table 1
   Dim MaTable
   Set MaTable=MonModele.FindChildByName("T1",cls_table)
   For idx = 1 to 10
      MaTable.AttachedRules.Add(MonModele.FindChildByName("RG" & (idx),cls_businessrule))
   Next
'Imprimer la liste de règles attachées à Table 1
Output "Règles attachées à T1 (" & MaTable.AttachedRules.Count & ")"
For each r in MaTable.AttachedRules
    Output "* " & r.Name
Next
'Modifie les règles attachées par insertion, déplacement et suppression
MaTable.AttachedRules.Insert 3, MonModele.FindChildByName("RG12",cls_businessrule)
MaTable.AttachedRules.Move 5,0
MaTable.AttachedRules.Remove(MonModele.FindChildByName("RG6",cls_businessrule))
'Imprimer la liste de règles modifiée
Output "Règles modifiées attachées à T1 (" & MaTable.AttachedRules.Count & ")"
For each r in MaTable.AttachedRules
    Output "* " & r.Name
Next