Création et utilisation d'extensions (Scripting)

Vous pouvez créer des extensions à l'aide de script afin de définir des propriétés supplémentaires, de nouvelles métaclasses, des formulaires, et tout autre type d'extension du métamodèle standard.

L'exemple suivant crée un MAE, puis y crée une extension, définit un nouveau type d'objet appelé tablette dérivé de la métaclasse MobileDevice et crée un nouvel attribut étendu et un nouveau formulaire personnalisé pour lui :
Dim MonModele, MonExt, MonStereotype, MonAttribEtendu, MonFormulaire, FormDef
set MonModele = CreateModel(PdEAM.Cls_Model,"Diagram=TechnologyInfrastructureDiagram")
MonModele.SetNameAndCode "MonMAE" , "MonMAE"
'Création de l'extension
Set MyExt = MonModele.ExtendedModelDefinitions.CreateNew()
MyExt.Name = "MonExtension"
MyExt.Code = "MonExtension"
'Création du stéréotype
Set MonStereotype = MonExt.AddMetaExtension(PdEAM.Cls_MobileDevice, Cls_StereotypeTargetItem)
MonStereotype.Name = "Tablette"
MonStereotype.UseAsMetaClass = true 
'Création d'attribut étendu
Set MyExAtt = MonStereotype.AddMetaExtension(Cls_ExtendedAttributeTargetItem)
MyExAtt.Name = "TypeTablette"
MyExAtt.Label = "Type"
MyExAtt.DataType = "12" ' (String) Pour obtenir la liste des valeurs, 
' voir ExtendedAttributeTargetItem dans l'Aide sur les objets du métamodèle
MyExAtt.ListOfValues = "iPad;Android;Playbook;Windows8"
MyExAtt.Value = "iPad"
'Création d'un formulaire pour remplacer l'onglet Général
Set MonFormulaire = MyStype.AddMetaExtension(Cls_FormTargetItem)
MonFormulaire.Name = "RemplaceGeneral"
MonFormulaire.FormType = "GENERAL"
'Assemblage de la définition du formulaire
FormDef = "<Form><StandardNameAndCode Attribute=""NameAndCode"" />" & vbcrlf
FormDef = FormDef + "<StandardAttribute Attribute=""Comment"" />" & vbcrlf
FormDef = FormDef + "<ExtendedAttribute Attribute=""TabletType"" />" & vbcrlf
FormDef = FormDef + "<StandardAttribute Attribute=""KeywordList""  /></Form>"
MyForm.Value = FormDef
Vous pouvez lire et définir des valeurs d'attributs étendus en utilisant les méthodes suivantes : Vous pouvez accéder aux collection définies dans une extension à l'aide des méthodes suivantes :
Le script suivant utilise la méthode GetCollectionByStereotype() afin d'accéder à la collection de tablettes et la méthode SetExtendedAttribute afin de définir le type de tablette :
Dim col, obj
'La collection de tablettes n'est pas directement accessible
 set col = ActiveModel.GetCollectionByStereotype("Tablette")
 'Création d'un tableau pour contenir les valeurs à affecter aux propriétés de tablette 
Dim myArray(3)
myArray(0) = "Tablette1, T1, PlayBook"
myArray(1) = "Tablette2, T2, Android"
myArray(2) = "Tablette3, T3, iPad"
myArray(3) = "Tablette4, T4, iPad"
CreateObjects col, myArray

'Procédure pour affecter des valeurs aux propriétés 
Sub CreateObjects(compColl, dataArray)
   For Each line In dataArray
      Dim myProps
      myProps = split(line, ",")
      set obj = compColl.CreateNew()
      obj.Name = myProps(0)
      obj.Code = myProps(1)
        'Syntaxe spéciale pour définir l'attribut étendu 
      obj.SetExtendedAttribute "MONEXT.TypeTablette", myProps(2)
   Next   
End Sub