Derived Objectlists in OCL

Nur Versionen vor 5.8

Folgende OCL Expression, welche für einen Bearbeiter die Anzahl aller Phasen seiner zugeordneten Projekte zählt, führt zu einem Fehler in OCL:

bearbProjekte.allephasen.list->size

Bei der Abfolge "bearbProjekte.allephasen" handelt es sich um eine sogenannte implizite Collect Operation (ein Member wird auf einem Listenmember ausgewertet). Das Ergebnis sollte eine zusammengefasste Liste aller "allephasen" Werte der Liste "bearbProjekte" sein.

Der OCL Evaluator in Vertec Versionen vor 5.8 unterstützt dies für ObjectList Attribute nicht (alle Member, welche mit dem .list Operator verwendet werden müssen). Was jedoch funktioniert, ist eine explizite Collect Operation mit Hilfe des ->collect Operators:

bearbProjekte->collect(allephasen.list)->size

Mit der Version 5.8 von Vertec wurde das Handling von derived ObjectLists grundlegend geändert. Neu reicht es, bearbProjekte.allephasen aufzurufen. Siehe dazu den Artikel OCL.


31.05.2007 | 16.08.2013: Hinweis auf Version 5.8 eingefügt.