Metamodel Editor
Zur Erstellung und Bearbeitung von Metamodellen stellt Meta Genius den Metamodel Editor zur Verfügung, dessen wesentliche Funktionen hier beschrieben werden.
MetaModel
Ein MetaModel beschreibt auf objektorientierte Weise die Struktur der Daten, die in einem Model erfasst werden können. Es setzt sich üblicherweise aus mehreren MetaClasses zusammen, die mit ihren Eigenschaften und gegenseitigen Verknüpfungen eine verschachtelte hierarchische Datenstruktur spezifizieren.
Im Metamodel Editor wird ein MetaModel durch folgende Eigenschaften spezifiziert:

Der Name sollte kurz und prägnant den Anwendungszweck des MetaModels beschreiben und dient zur Unterscheidung von anderen MetaModels.
Mit der RootMetaClass wird festgelegt, welche MetaClass den Startpunkt der hierarchischen Datenstruktur bilden soll.
Darüber hinaus kann ein MetaModel noch MetaClasses und MetaEnums beinhalten, die in weiterer Folge beschrieben werden.
MetaClass
MetaClasses sind die Hauptbestandteile von MetaModels. Sie können eine beliebige Anzahl von MetaAttributes beinhalten und damit spezifizieren, welche Datenelemente in den jeweiligen Modell-Objekt-Instanzen möglich bzw. erforderlich sind. Ein Model setzt sich dann aus Instanzen dieser MetaClasses zusammen.
MetaClasses weisen generell große Ähnlichkeiten zu Klassen aus objektorientierten Programmiersprachen auf. So können MetaClasses genau wie Klassen nicht nur MetaAttributes beinhalten, sondern diese auch von Basisklassen durch das Prinzip der Vererbung übernehmen.
Im Metamodel Editor werden MetaClasses durch folgende Eigenschaften spezifiziert:

Der Name einer MetaClass ist wichtig für die spätere Modellierung und sollte das zu erfassende Objekt prägnant und eindeutig beschreiben.
Mit einer BaseMetaClass kann eine objektorientierte Vererbungsbeziehung zwischen MetaClasses spezifiziert werden. Eine MetaClass erbt alle MetaAttributes seiner BaseMetaClass.
Die Eigenschaft Abstract ist ebenso nur im Zusammenhang mit Vererbung relevant. Ähnlich wie bei abstrakten Basisklassen in objektorientierten Programmiersprachen spezifiziert Abstract hier auch, dass von dieser MetaClass in einem Model keine direkte Objekt-Instanz erstellt werden kann.
NameMetaAttribute ist eine Eigenschaft, die sich ausschließlich auf eine verbesserte Darstellung im Model-Editor auswirkt. Diese wird im Benutzerhandbuch näher beschrieben.
MetaAttribute
Während MetaClasses ganze Objekte spezifizieren, werden mit MetaAttributes einzelne Datenelemente davon spezifiziert. Sie sind vergleichbar mit Attributen einer Klasse und werden im Wesentlichen durch den Name, einen Classifier und die Multiplicity festgelegt.
Im Metamodel Editor werden MetaAttributes im Detail durch folgende Eigenschaften spezifiziert:

Als Name sollte eine möglichst kurze und selbsterklärende Bezeichnung gewählt werden. Diese wird dann auch im Model Editor als Bezeichnung dieses Datenelementes angezeigt.
Sofern über die Multiplicity ein Array von zwei oder mehr Elementen spezifiziert wird, ist es erforderlich, neben dem Name auch noch die Pluralform davon als Names anzugeben.
Der Classifier legt den Datentyp des MetaAttributes fest. Zur Auswahl stehen folgende Classifier:
Classifier | Bedeutung |
![]() | einzeiliger Text |
![]() | mehrzeiliger Text |
![]() | True/False |
![]() | ganze Zahl |
![]() | reelle Zahl |
![]() | Aufzählung (siehe MetaEnum) |
![]() | Instanz einer MetaClass |
![]() | Referenz auf eine MetaClass bzw. auf eine Instanz davon |
Während die einfachen Classifier wie String, Integer usw. sicher selbsterklärend sind, erfordern die letzten beiden Classifier eine genauere Betrachtung.
Wie bereits erwähnt, stellt ein Model eine verschachtelte hierarchische Datenstruktur dar, die sich aus einzelnen Objekten zusammensetzt, wobei die Objekte wiederum Instanzen von MetaClasses sind.
Die tatsächliche Verschachtelung der Instanzen wird mit dem Classifier „“ spezifiziert. Dieser hat die Bedeutung, dass ein Modell-Objekt ein anderes Modell-Objekt in einer Eltern-Kind Hierarchie besitzt.
Das genaue Verständnis dieser Besitz-Beziehung ist wichtig für die Unterscheidung zu der Referenz-Beziehung, die mit dem Classifier „“ spezifiziert wird. Mit dieser Referenz-Beziehung wird festgelegt, dass ein Modell-Objekt ein anderes Modell-Objekt kennt, wobei es dieses aber nicht besitzt.
MetaEnum, MetaEnumMember
MetaEnums sind das Äquivalent zu Aufzählungen in Programmiersprachen. Sobald MetaEnums im MetaModel angelegt wurden, können diese als Classifier für MetaAttributes verwendet werden.
Im Metamodel Editor werden MetaEnums durch folgende Eigenschaften spezifiziert:

Eine MetaEnum definiert sich durch einen Name und eine Liste von MetaEnumMembers, also einer Liste von unterschiedlichen Werten, die eine Aufzählung annehmen kann.
Soviel zu der Theorie über die Erstellung eines MetaModels. Unter Model Editor gibt es einige Beispiele, wie man diese anwenden kann.