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.
Dim MonModele Set MonModele=ActiveModel For each t in MonModele.Tables Output "* " & t.Name NextLorsque vous parcourez une collection, les objets de la collection et les éventuels raccourcis vers des objets sont renvoyés indifféremment.
Compositions - contiennent des objets qui seront supprimés si le parent est supprimé. Par exemple, les collections PdPDM/Tables et PdPDM/Table/Columns sont des compositions.
Agrégations - référence des objets qui vont continuer à exister si leur parent est supprimé. Par exemple, la collection PdCommon/NamedObject/AttachedRules (héritée par la plupart des objets) est une agrégation.
Collections non ordonnées - contient des objets sans ordre significatif. Par exemple, la collection PdCDM/Entity/Relationships n'est pas ordonnée.
Collections ordonnées - contient des objets dans un ordre spécifié par l'utilisateur. Par exemple, la collection PdPDM/Table/Columns est ordonnée.
Collections en lecture seule - peuvent uniquement être parcourues. Par exemple, la collection globale Models (tous les modèles ouverts) est en lecture seule.
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