Omschrijving van het probleem:
Sommige attribuut types in UML zijn niet gelinkt aan een classifier die voorkomt binnen de scope van het modelbestand.
Dit is nodig voor het goed functioneren van de nog uit te rollen vernieuwde toolchain (vinden van het correct package om correcte externe dependencies te kunnen linken).
In een correct OSLO UML model in EA moeten in principe alle attributen een type hebben dat gelinkt is aan een classifier (in de praktijk een Klasse, Datatype of Enumeratie).
Dit betekent dat bij het toekennen van het attribuut type een classifier moet geselecteerd worden via Select Type… in de gebruikersinterface.
Het type mag dus in geen geval letterlijk ingetypt worden.
Een uitzondering hierop geldt voor enkele types die door de toolchain impliciet worden gemapt. Deze worden beschreven in de modelleringsregels; Boolean, Date, DateTime, Double, Duration, HTML, Integer, LangString, Literal, Month, MonthDay, String, Time, URI, Year, YearMonth.
Achteraf valt het met de EA gebruikersinterface niet meer te achterhalen of een type manueel werd ingetypt (bij het openen van Select Type… opent de selectie dan op de plaats van de laatste selectie in het algemeen).
Bovendien moet de gelinkte classifier beschikbaar zijn in het model bestand.
Voor de centrale EA repo wil dit zeggen dat de classifier zich niet mag bevinden buiten de package structuur die wordt geëxporteerd.
Een veel voorkomende fout in de centrale EA repo is dat in een applicatieprofiel een type wordt gelinkt aan een classifier uit een ander applicatieprofiel of rechstreeks uit OSLO²_vocabularium.
Opsporen
In het finale .eap bestand kunnen de attributen niet gelinkt aan een classifier opgespoord worden met behulp van een query in EA.
Die query zoekt alleen in attributen die op een diagram voorkomen. Eerst moet dus het relevante diagram opgezocht worden.
Dat kan met een query "DiagramsInBranch.sql":
SELECT Diagram_ID, Name
FROM t_diagram
WHERE t_diagram.Package_ID IN (#Branch#)
ORDER BY Name
Selecteer de te testen branch in de project browser en run deze query.
Het vervolg kan met een query "AttributeTypesWithoutClassifierInDiagrams.sql":
SELECT t_diagram.Diagram_ID, t_diagram.Name AS DiagramName, t_package.Name & ":" & t_object.Name & "." & t_attribute.Name AS AttributeName, t_attribute.Type AS AttributeType
FROM
(((t_diagramobjects INNER JOIN t_diagram ON t_diagramobjects.Diagram_ID = t_diagram.Diagram_ID)
INNER JOIN t_object ON t_object.Object_ID = t_diagramobjects.Object_ID)
INNER JOIN t_package ON t_object.Package_ID = t_package.Package_ID)
INNER JOIN t_attribute ON t_attribute.Object_ID = t_object.Object_ID
WHERE
t_diagram.Diagram_ID IN (<Search Term>)
AND (t_attribute.Classifier IS NULL OR t_attribute.Classifier = '0')
AND t_attribute.Type IS NOT NULL
AND t_attribute.Type NOT IN ('Boolean', 'Date', 'DateTime', 'Double', 'Duration', 'HTML', 'Integer', 'LangString', 'Literal', 'Month', 'MonthDay', 'String', 'Time', 'URI', 'Year', 'YearMonth')
AND 'true' NOT IN (SELECT t_objectproperties.Value FROM t_objectproperties WHERE t_objectproperties.Property = 'ignore' AND t_objectproperties.Object_ID = t_object.Object_ID)
AND 'true' NOT IN (SELECT t_attributetag.VALUE FROM t_attributetag WHERE t_attributetag.Property = 'ignore' AND t_attributetag.ElementID = t_attribute.ID)
ORDER BY 2, 3
Breng het ID van het relevante diagram, gevonden met de vorige query, over naar de Search Term. Meerdere diagrammen kan ook; scheid dan de IDs met kommas.
Run dan deze query. Het resultaat geeft diagram ID, diagram naam, attribuut naam (voorafgegaan door Package en parent) en attribuut type.
Corrigeren
Als de bedoelde classifier niet voorkomt in de eigen package structuur
Voeg een kopie toe in de eigen package structuur
Als de bedoelde classifier zelf op het diagram staat
Zorg ervoor dat de classifier op het diagram zeker deze uit de eigen package structuur is, niet de foutief gelinkte
Los alle (semantische) conflicten met de foutief gelinkte classifier op in deze uit het eigen package.
Corrigeer de link in het attribuut type
Eerst linken naar een type met een andere naam (dit om een bug in EA v12 te omzeilen).
Dan linken naar de correcte classifier, binnen de eigen package structuur!
Link waar het probleem zich voor doet: https://data.vlaanderen.be/
Omschrijving van het probleem: Sommige attribuut types in UML zijn niet gelinkt aan een classifier die voorkomt binnen de scope van het modelbestand.
Dit is nodig voor het goed functioneren van de nog uit te rollen vernieuwde toolchain (vinden van het correct package om correcte externe dependencies te kunnen linken).
In een correct OSLO UML model in EA moeten in principe alle attributen een type hebben dat gelinkt is aan een classifier (in de praktijk een Klasse, Datatype of Enumeratie).
Dit betekent dat bij het toekennen van het attribuut type een classifier moet geselecteerd worden via Select Type… in de gebruikersinterface.
Het type mag dus in geen geval letterlijk ingetypt worden. Een uitzondering hierop geldt voor enkele types die door de toolchain impliciet worden gemapt. Deze worden beschreven in de modelleringsregels; Boolean, Date, DateTime, Double, Duration, HTML, Integer, LangString, Literal, Month, MonthDay, String, Time, URI, Year, YearMonth. Achteraf valt het met de EA gebruikersinterface niet meer te achterhalen of een type manueel werd ingetypt (bij het openen van Select Type… opent de selectie dan op de plaats van de laatste selectie in het algemeen).
Bovendien moet de gelinkte classifier beschikbaar zijn in het model bestand. Voor de centrale EA repo wil dit zeggen dat de classifier zich niet mag bevinden buiten de package structuur die wordt geëxporteerd. Een veel voorkomende fout in de centrale EA repo is dat in een applicatieprofiel een type wordt gelinkt aan een classifier uit een ander applicatieprofiel of rechstreeks uit OSLO²_vocabularium.
Opsporen
In het finale .eap bestand kunnen de attributen niet gelinkt aan een classifier opgespoord worden met behulp van een query in EA.
Die query zoekt alleen in attributen die op een diagram voorkomen. Eerst moet dus het relevante diagram opgezocht worden. Dat kan met een query "DiagramsInBranch.sql":
Selecteer de te testen branch in de project browser en run deze query.
Het vervolg kan met een query "AttributeTypesWithoutClassifierInDiagrams.sql":
Breng het ID van het relevante diagram, gevonden met de vorige query, over naar de Search Term. Meerdere diagrammen kan ook; scheid dan de IDs met kommas. Run dan deze query. Het resultaat geeft diagram ID, diagram naam, attribuut naam (voorafgegaan door Package en parent) en attribuut type.
Corrigeren