You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CLASS ClassA =
Nr: MANDATORY TEXT*8;
END ClassA;
CLASS ClassB =
Nr: MANDATORY TEXT*8;
END ClassB;
CLASS Point =
Geometry: MANDATORY GeometryCHLV95_V1.Coord2;
END Point;
ASSOCIATION ClassA_Punkt =
ClassA -<#> {0..1} ClassA;
Point -- {0..1} Point;
END ClassA_Punkt;
ASSOCIATION ClassB_Punkt =
ClassB -<#> {0..1} ClassB;
Point -- {0..1} Point;
END ClassB_Punkt;
Ziel:
Es soll mittels Constraint** geprüft werden, dass jedes Objekt der Klassen ClassA und ClassB einen Punkt zugeordnet hat.
** Die Bedingung wird mittels Constraint formuliert, weil im originalen Modell neben Punkten auch Linien oder Flächen möglich sind und daher die Kardinalitäten mit {0..1} modelliert wurden.
Die Constraints werden in einem Viewmodell und in zwei Views wie folgt implementiert: MANDATORY CONSTRAINT DEFINED(Point);
Beobachtet:
Der ilivalidator wertet nur den Constraint mit bezug zur alphabetisch*** ersten Klasse korrekt aus (ClassA). Die Referenzen zwischen ClassB und Point werden allesamt als fehlerhaft evaluiert.
Wird die Association zwischen ClassA und Point deaktiviert, so evaluiert der ilivalidator den Constraint korrekt und findet die Objekte der ClassB ohne Referenz zur Klasse Point.
Die Beobachtung ist unabhängig der Implementierungsart der Constraints. Auch wenn diese im Hauptmodell integriert werden, ist das Ergebnis dasselbe.
Auch die eindeutige Benennung der Rollennamen ("Point") ändert nichts am Umstand.
*** = starke Vermutung aufgrund zweier unabhängiger Testdatensätze.
Bedeutet: Wenn für eine Klasse mehr als eine Association bzw. Rolle definiert ist (wie hier im Beispiel bei Point), kann nur auf der alphabetisch ersten Rolle navigiert werden. Auf allen weiteren Rollen trifft somit z.B. DEFINED(Pfad) nicht mehr zu und INTERLIS.objectCount(Pfad) ist 0.
Ausgangslage:
Ziel:
Es soll mittels Constraint** geprüft werden, dass jedes Objekt der Klassen ClassA und ClassB einen Punkt zugeordnet hat.
** Die Bedingung wird mittels Constraint formuliert, weil im originalen Modell neben Punkten auch Linien oder Flächen möglich sind und daher die Kardinalitäten mit {0..1} modelliert wurden.
Die Constraints werden in einem Viewmodell und in zwei Views wie folgt implementiert:
MANDATORY CONSTRAINT DEFINED(Point);
Beobachtet:
Der ilivalidator wertet nur den Constraint mit bezug zur alphabetisch*** ersten Klasse korrekt aus (ClassA). Die Referenzen zwischen ClassB und Point werden allesamt als fehlerhaft evaluiert.
Wird die Association zwischen ClassA und Point deaktiviert, so evaluiert der ilivalidator den Constraint korrekt und findet die Objekte der ClassB ohne Referenz zur Klasse Point.
Die Beobachtung ist unabhängig der Implementierungsart der Constraints. Auch wenn diese im Hauptmodell integriert werden, ist das Ergebnis dasselbe.
Auch die eindeutige Benennung der Rollennamen ("Point") ändert nichts am Umstand.
*** = starke Vermutung aufgrund zweier unabhängiger Testdatensätze.
modelA.zip
ilivalidator-1.13.4-SNAPSHOT.jar --config modelA.ini --log .\output.log .\testdata.xtf
The text was updated successfully, but these errors were encountered: