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 mesProps
      mesProps = split(line, ",")
      set obj = compColl.CreateNew()
      obj.Name = mesProps(0)
      obj.Code = mesProps(1)
        'Syntaxe spéciale pour définir l'attribut étendu
      obj.SetExtendedAttribute "MONEXT.TypeTablette", mesProps(2)
   Next   
End Sub