Accès aux métadonnées (Scripting)

Vous pouvez explorer la structure du métamodèle PowerAMC sous la forme d'un modèle autonome ou en partant des instances d'objet contenues dans votre modèle.

Pour obtenir des informations générales sur l'accès au métamodèle et la navigation dans le métamodèle, voir Métamodèle public PowerAMC. Les métaclasses (telles que CheckModelInternalMessage et FileReportItem) qui ne sont pas accessibles par script sont visibles dans Metamodel.moo, mais portent le stéréotype <<notScriptable>> et ne sont pas répertoriées dans le fichier d'Aide sur les objets du métamodèle.

Vous pouvez accéder aux métaclasses, méta-attributs et métacollections en procédant à l'itération sur les collections en partant de la racine de MetaModel ou individuellement via les méthodes suivantes :
Le script suivant traverse le métamodèle par bibliothèques et répertorie chaque classe concrète :
for each l in MetaModel.Libraries
   for each c in l.Classes
      if c.Abstract = false then
         Output l.PublicName + "." + c.PublicName
      end if
   next
next
Le script suivant localise la racine BaseClass et montre les deux premiers niveaux d'héritage située au-dessous :
set root = MetaModel.GetMetaClassByPublicName("PdCommon.BaseObject")
for each c in root.Children
   output c.PublicName
   for each cc in c.Children
      output "    " + cc.PublicName
   next
next
Le script suivant obtient une table dans un MPD, puis montre la métaclasse dont l'objet est une instance, la métaclasss parent et la métabibliothèque de la métaclasse, ainsi que toutes les attributs et toutes les collections qui sont disponibles pour cette métaclasse :
Dim object
Set object = ActiveModel.FindChildByName("myTable",cls_Table)
Output "Objet: " + object.Name

Dim metaclass
Set metaclass = object.MetaClass
Output "Métaclasse : " + metaclass.PublicName 
Output "Parent : " + metaclass.Parent.PublicName
Output "Métabibliothèque : " + metaclass.Library.PublicName
Output "Attributs :"
For each attr in metaclass.attributes
   Output " - " + attr.PublicName
Next
Output "Collections :"
For each coll in metaclass.collections
   Output " - " + coll.PublicName
Next

Les propriétés et les collections sont en lecture seule pour tous les objets du métamodèle.