Les modèles PowerAMC sont composés d'objets dont les propriétés et interactions sont expliquées dans le métamodèle public. Les modèles peuvent être enregistrés soit au format binaire, soit au format XML. Les fichiers binaires sont plus petits, et leur ouverture et leur enregistrement est significativement plus rapide, mais les fichiers de modèle XML peuvent être édités à la main ou par voie logicielle (et des DTD sont fournis pour chaque type de modèle dans le dossier DTD du répertoire d'installation).
Les fichiers de modèle XML de PowerAMC ont un élément <o:model> à leur racine, qui contient les collections définies dans le métamodèle de PowerAMC. L'objet modèle et tous les autres éléments d'objet qui le contiennent définissent leurs attributs et collections dans des sous-éléments. La définition d'un objet implique la définition de ses attributs et collections. PowerAMC vérifie chaque objet et analyse en profondeur les collections de cet objet pour définir chaque nouvel objet et collection dans ces collections, et ainsi de suite, jusqu'à ce que le processus trouve les objets terminaisons qui ne nécessitent pas d'analyse supplémentaire.
Chaque objet PowerAMC peut comporter plusieurs collections correspondant aux autres objets avec lesquels il doit interagir. Ces collections sont représentées par les associations existant entre objets. Les rôles des associations (agrégations et compositions incluses) correspondent aux collections d'un objet. Par exemple, chaque modèle PowerAMC contient une collection de domaines appelée Domains.
En règle générale, les associations n'ont qu'un seul rôle, le rôle s'affiche à l'opposé de la classe pour laquelle il représente une collection. Toutefois, le métamodèle contient également des associations ayant deux rôles, auquel cas, les deux collections ne peuvent pas être enregistrées dans le fichier XML. Vous pouvez identifier la collection qui sera enregistrée à partir de la feuille de propriétés de l'association : il s'agit du rôle pour lequel la case Navigable est cochée.
Dans l'exemple suivant, les association ont deux rôles qui signifient que Classifier a une collection Actors, et que Actor2 a une collection ImplementationClasses :
Si vous affichez la feuille de propriétés de l'association, vous pouvez voir que la case Navigable est cochée pour le rôle ImplementationClass, ce qui signifie que seule la collection ImplementationClass sera enregistrée dans le fichier.
Les attributs ayant le type de données IOBJECT sont des attributs dans le métamodèle alors qu'ils apparaissent sous forme de collections contenant un seul objet dans le fichier XML. Ce n'est pas le cas pour Parent et Folder qui ne contiennent pas de collection.