Imvertor / Imvertor-Maven

Mavenized version of Imvertor
http://www.imvertor.org
9 stars 12 forks source link

BRO: Onterechte foutmelding over gebruik stereotype 'enumeratiewaarde' #524

Closed jacobvosimpronotion closed 1 month ago

jacobvosimpronotion commented 3 months ago

In Imvertor 4.1 en de nightly build verschijnen onverwachte foutmeldingen, als volgt:

Attribute with stereotype "ENUMERATIEWAARDE" must not appear here, expecting (any of) "ENUMERATIE"

en, als variant erop:

Attribute with stereotype "ENUMERATIEWAARDE", "IMBRO/A" must not appear here, expecting (any of) "ENUMERATIE"

Het zijn onterechte foutmeldingen, want het betreft daadwerkelijke enumeratiewaarden. Bijv. het element 'Mijnbouwconstructies (EPC) - conceptueel Model::BoortrajectCategorie.primair (attrib)'. Hierin is 'BoortrajectCategorie' gerstereotypeerd als 'CodeLijst' (EA type = DataType).

ArjanLoeffen commented 3 months ago

Ik zie in 2024-08-14-08-54-35-196 dat jullie een Codelijst gebruiken met daarin enumeratiewaarden. Dat kan niet volgens MIM 1.2. Er kunnen geen UML attributen in de Codelijst komen. Check

https://docs.geostandaarden.nl/mim/mim/#codelijst https://docs.geostandaarden.nl/mim/mim/#codelijst-0

Twee opmerkingen: 1/ Dat is ook weer een zwakke specificatie, want daar staat:

De representatie van een lijst met een opsomming van de mogelijke domeinwaarden van een attribuutsoort, die buiten het model in een externe waardelijst worden beheerd. [...] In het gebruik is een Codelijst daarom analoog aan een Enumeratie.

Dat is dus niet correct.

2/ De melding van Imvertor is ook niet goed. De melding moet zijn dat er geen enumeraties komen voorkomen in een codelijst.

ArjanLoeffen commented 3 months ago

Tav. 2/:

De melding is vervangen door: Attribute with stereotype "ENUMERATIEWAARDE", "IMBRO/A" must not appear here, but as attribute of (any of) "ENUMERATIE" In dat geval is de melding juist / conform MIM 1.2.

jacobvosimpronotion commented 3 months ago

@ArjanLoeffen In de melding die je voorstelt, komt niet tot uitdrukking dat "enumeratiewaarde" niet past bij "codelijst". Het wijst de gebruiker daarmee niet op wat er fout zit in het aangeboden model.

ArjanLoeffen commented 3 months ago

@jacobvosimpronotion je vraagt nu om in de melding te zeggen: Codelijst kan geen UML attribuut hebben (dus ook geen enumeratieve waarden). Imvertor heeft nog niet zo'n logica, maar zegt: ik tref een UML attribuut aan met een niet toegestaan stereotype. We kunnen een regel toevoegen die (ook) zegt:

Class with stereotype "CODELIJST" may not have any attributes.

Is dat wat je bedoelt?

jacobvosimpronotion commented 3 months ago

@ArjanLoeffen Ja, inderdaad.

jacobvosimpronotion commented 2 months ago

@ArjanLoeffen Ik zie dat dit nog niet is aangepast. Wordt dit een aanpassing op lange termijn?

ArjanLoeffen commented 1 month ago

Wegens de impact van de door jou voorgestelde verandering geef ik als optie om de melding te veranderen in:

Attribute with stereotype "ENUMERATIEWAARDE", "IMBRO/A" must not appear here. It can only appear as attribute of (any of) "ENUMERATIE"

@jacobvosimpronotion Is dat acceptabel?

jacobvosimpronotion commented 1 month ago

Zojuist getest met nightly build, en het is opgelost.