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:
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)))
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