Seit EA 14 gibt es die Möglichkeit bei UML-Profilen sogenannte Metamodel Constraints zu definieren. In der EA Hilfe finden wir eine Beschreibung zu den aktuell unterstützten Regeln.
Hier möchte ich gerne die Möglichkeiten der metaconstraint Regel beschreiben, welche die typisieren einschränkt. Sobald ein Modell-Element einen Typ erhalten kann sprechen wir davon, dass das Modell-Element einen Classifier erhalten hat.
Daher lautet die Regel umlRole=classifier die wir dafür setzen.
Wichtig: der name classifier muss richtig geschrieben sein und darf keine führenden oder nachfolgende Leerzeichen enthalten!
Folgendes Beispiel zeigt ein UML-Profil mit metaconstraints umlRole=classifier zu Stereotypen welche von den Metamodel Typen: InstanceSpecification, Object, Property (Part) und Port abgeleitet sind:
Diese Regel hat drei Auswirkungen:
- Im Typ-Auswahl-Dialog können nur Modell-Elemente mit dem gegebenen Stereotyp oder dem Modell-Element Typ (siehe YourPort und Activity) ausgewählt werden.
- Bei der Modell-Validierung werden falsch typisierte (classified) Modell-Elemente aufgelistet.
Zumindest bis Build 1526 wird die Einschränkung zum UML metaclass Typ, wie z. B. Activity im oberen Beispiel bei der Modell-Validierung nicht berücksichtigt. - Wird das Modell-Element welches als Classifier verwendet werden kann — z. B. ein Modell-Element mit Stereotyp <<AUsedAsClassifier>> — aus dem Project Browser in das Diagramm gezogen, zeigt der Drop as Dialog die Möglichkeit einen Port, ein Property, eine InstancesSpecification oder ein Object zu erstellen und dieses neuen Modell-Element das Modell-Element als classifier zu geben, welches in das Diagramm gezogen wurde (eben das Modell-Element mit Stereotyp <<AUsedAsClassifier>> ).
Die Validierung des oberen Beispiels ergibt folgendes Ergebnis im EA Build 1526:
Hier das Ergebnis wenn ein Modell-Element mit Stereotyp <<AUsedAsClassifier>> aus dem Project Browser in das Diagramm gezogen wird: