CONSTRAINTS über 2 Klassen

Hallo zusammen
Im Workshop des Anwendertreffens haben wir ja über CONSTRAINTS gesprochen und auch ein Beispiel durchgespielt, aber leider nur in Interlis 2.4

In meinem 2.3-Modell möchte ich folgenden CONSTRAINT umsetzen:
Modellausschnitt
Wenn im Attribut „Rechtsstatus“ steht, muss das „Genehmigung_Datum“ ausgefüllt sein.

Dieser Code funktioniert leider nicht, muss ich da noch die Beziehung zur anderen Klasse angeben?

MANDATORY CONSTRAINT
((Rechtsstatus == #laufendeAenderungen ) AND NOT (DEFINED (Genehmigung_Datum)))
OR ((Rechtsstatus == #inKraft) AND (DEFINED (Genehmigung_Datum)));

Ja, du musst dir in der Association zwischen den beiden Klassen diejenige Rolle heraussuchen, welche auf die Zielklasse zeigt. Diese verwendest du dann als „Pfad“. Also z. B.

... AND NOT (DEFINED (Rollenname->Genehmigung_Datum)))

2 „Gefällt mir“

Als Ergänzung zu @beistehen: Dein Anwendungsfall entspricht dem Workshop Beispiel #6

Der UML Editor will nicht:

Name PlanungRef is not applicable to CLASS Strassennetzplan_BL_V2_LV95.Strassennetzplan.Beschluss

In der CLASS Beschluss habe ich definiert:

MANDATORY CONSTRAINT
((PlanungRef->Rechtsstatus == #laufendeAenderungen) AND NOT (DEFINED(Genehmigung_Datum)))
OR ((PlanungRef->Rechtsstatus == #inKraft) AND (DEFINED(Genehmigung_Datum)));

Das heisst, die Rolle „PlanungRef“ zeigt auf die CLASS Planung, in der das Attribut „Rechtsstatus“ definiert ist.

ASSOCIATION BeschlussPlanung =
  PlanungRef -<> {1} Planung;
  BeschlussRef -- {1..*} Beschluss;
END BeschlussPlanung;

Es funktioniert aber auch nicht, wenn ich die andere Rolle „BeschlussRef“ nehme. Wo liegt mein Denkfehler?

Evtl. hast Du den Constraint vor der Association definiert? Falls ja, nutze die Option den Constraint mittels CONSTRAINTS OF zu implementieren.
Siehe dazu auch das Beispiel #5 aus dem Workshop

1 „Gefällt mir“

Danke, daran lag es.

Wenn ich den CONSTRAINTS OF… manuell im ili-File einfüge klappt es. Im UML-Editor kann ich es aber nicht definieren, oder ich wüsste nicht wo.