Repository navigation
OCL im Instanz-Editor: Validate wieder verdrahtet, Live-Prüfung, Constraint-Dateien des Workspace - #180
Closed
vwfox wants to merge 4 commits into
Closed
OCL im Instanz-Editor: Validate wieder verdrahtet, Live-Prüfung, Constraint-Dateien des Workspace#180vwfox wants to merge 4 commits into
vwfox wants to merge 4 commits into
Conversation
…bjekte richtig Im Uni-Workspace bekam ein Student einen Kurs einer fremden Uni, ohne dass die Invariante KurseNurVonEigenerUni anschlug. - attachTo merkte sich die Ressource nur. Jetzt haengt ein EContentAdapter daran: jede echte Aenderung prueft die Ressource entprellt neu, je Ressource ein eigener Takt. detachFrom nimmt Adapter und Befunde wieder weg. - validateResource ersetzte die ganze Problemliste. Jetzt nur die Pruef-Befunde dieser Ressource; Parser-Meldungen und andere Tabs bleiben. - wrapEObjectForOcl baute bei jedem Zugriff eine neue Huelle. OCL vergleicht per Identitaet, `uk = k` war damit nie wahr - jeder Kurs haette als fremder gegolten. Jetzt eine Huelle je Objekt. - Vitest wandelt @emfts/ocl.* selbst um: deren dist importiert ohne Dateiendung, unter Node liess sich OCL bisher nicht laden und nicht testen. Tests mit dem Uni-Modell: Verstoss auf Anfrage und live, Korrektur raeumt auf, spaeter hinzugefuegte Objekte, abgeloeste Ressource, andere Tabs und Parser-Meldungen bleiben, Referenz-Filter der .c-ocl.
… live geprueft Der Menuepunkt "Validate OCL (local)" sendete validate-ocl-request, aber seit der Menueleiste je Perspektive (d42388f) hoerte niemand darauf. Der alte Handler im Instanzbaum pruefte zudem die gemeinsame Ressource statt des Dokuments im Tab. - Das Plugin beantwortet die Anfrage: alle Ressourcen des Dokuments im vorderen Tab (validateDocument). - Jedes Instanz-Tab-Dokument meldet seine Ressourcen an einen Beobachter; das Plugin reicht sie an den Problems-Dienst (live pruefen) und loest sie beim Schliessen des Tabs wieder. Problems-Dienst und Event-Bus koennen spaeter kommen - auf beide wird gewartet. - Der tote Handler im Instanzbaum ist entfernt. Tests: Beobachter (kommen, gehen, Tab zu, spaeter gesetzt), Validieren eines Dokuments, Plugin hoert auf die Anfrage und meldet die Dokumente an.
…tgeladen Die Workspace-Datei kennt keine Constraint-Dateien. university.c-ocl mit dem Referenz-Filter "nur Kurse der eigenen Uni" lag neben uni.wsp und wurde nie geladen, ausser man oeffnete sie von Hand - ausgegraut wurde nichts. Jetzt kommen alle .c-ocl/.cocl im Ordner der .wsp mit, nach den Modellen und vor den Instanzen, damit schon die erste Pruefung die Filter hat. Nur dieser Ordner: ein Workspace an der Wurzel einer Quelle zieht nicht alles darunter. Ein Feld in der .wsp waere die ausdrueckliche Loesung, braucht aber ein neues Generat - und das eingecheckte passt schon heute nicht zum Modell (EditorBinding fehlt darin).
…achen das Feld rot Nach #180 schlug die Pruefung beim Zuweisen an, aber im Editor war nichts zu sehen: das Kurse-Feld blieb unmarkiert, die Auswahl bot fremde Kurse an. - Eine mehrwertige Referenz wird ueber den Suchdialog gefuellt. Der bekam nur Filter aus Annotationen; jetzt auch den REFERENCE_FILTER aus geladenen .c-ocl-Dateien fuer die Klasse des Besitzers. - Der Filter spricht von zwei Objekten: self (Student) und target (Kurs). Die Suche gab bei solchen Ausdruecken auf. Jetzt wertet sie sie auf dem Besitzer aus, mit target je Kandidat gebunden - query nimmt dafuer Variablen an (die OCL-Engine kann das, gene reichte sie nicht durch). - Das Referenzfeld wertet den Filter ebenso je Kandidat aus statt den Ausdruck in eine Menge umzuschreiben und per Name zu vergleichen. Zugewiesene Werte, die der Filter ablehnt, sind markiert, das Feld zeigt die Meldung. - Rot war nie rot: var(--red-500) gibt es im PrimeVue-4-Theme nicht. In den Feldern des Instanz-Editors jetzt var(--p-red-500) mit Rueckfall. Tests: query mit target, Feld markiert Informatik bei Martin und laesst Mathe unmarkiert, die Suche sperrt die Kurse der fremden Uni. Im Browser geprueft mit dem Uni-Workspace.
Contributor
Author
|
Aufgegangen in #182. |
vwfox
added a commit
that referenced
this pull request
Oct 26, 2026
…achen das Feld rot Nach #180 schlug die Pruefung beim Zuweisen an, aber im Editor war nichts zu sehen: das Kurse-Feld blieb unmarkiert, die Auswahl bot fremde Kurse an. - Eine mehrwertige Referenz wird ueber den Suchdialog gefuellt. Der bekam nur Filter aus Annotationen; jetzt auch den REFERENCE_FILTER aus geladenen .c-ocl-Dateien fuer die Klasse des Besitzers. - Der Filter spricht von zwei Objekten: self (Student) und target (Kurs). Die Suche gab bei solchen Ausdruecken auf. Jetzt wertet sie sie auf dem Besitzer aus, mit target je Kandidat gebunden - query nimmt dafuer Variablen an (die OCL-Engine kann das, gene reichte sie nicht durch). - Das Referenzfeld wertet den Filter ebenso je Kandidat aus statt den Ausdruck in eine Menge umzuschreiben und per Name zu vergleichen. Zugewiesene Werte, die der Filter ablehnt, sind markiert, das Feld zeigt die Meldung. - Rot war nie rot: var(--red-500) gibt es im PrimeVue-4-Theme nicht. In den Feldern des Instanz-Editors jetzt var(--p-red-500) mit Rueckfall. Tests: query mit target, Feld markiert Informatik bei Martin und laesst Mathe unmarkiert, die Suche sperrt die Kurse der fremden Uni. Im Browser geprueft mit dem Uni-Workspace.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Worum es geht
Im Uni-Workspace (
genE/uni) bekam ein Student einen Kurs einer fremden Uni:Modell und Daten sind in Ordnung – Martin (Uni Jena) mit Informatik (Mittweida) verletzt
KurseNurVonEigenerUni. Gene hat schlicht nicht geprüft.Ursachen und Änderungen
„Validate OCL“ war tot
validate-ocl-request; seit d42388f hörte niemand darauf. Der alte Handler prüfte zudem die gemeinsame Ressource statt des Tab-Dokuments.Keine Live-Prüfung
attachTomerkte sich die Ressource nur (sein Kommentar versprach anderes). Jetzt hängt einEContentAdapterdaran: jede echte Änderung prüft entprellt neu.validateResourceersetzt nur noch die Befunde dieser Ressource – Parser-Meldungen und andere Tabs bleiben.OCL verglich Objekte falsch
wrapEObjectForOclbaute bei jedem Zugriff eine neue Hülle;uk = kwar nie wahr. Sobald die Prüfung lief, hätte jeder Kurs als fremder gegolten. Jetzt eine Hülle je Objekt.Constraint-Dateien des Workspace
.c-ocl/.coclim Ordner der.wspwerden beim Öffnen mitgeladen (vor den Instanzen). Damit greift der Referenz-Filter ausuniversity.c-oclund graut fremde Kurse aus..wspwäre die ausdrückliche Lösung, bräuchte aber ein neues Generat – das eingecheckte passt schon heute nicht zum Modell (EditorBindingfehlt).Tests
@emfts/ocl.*importiert indistohne Dateiendung, Node lehnt das ab; Vitest wandelt die Pakete nun selbst um..c-ocl. Ohne die Änderungen scheitern 5 von 6 der Live-Tests..c-oclneben der.wsp(nur dieser Ordner, Wurzel,.cocl, Fehler bricht nichts ab).Nachtrag: Anzeige im Editor
Nach dem ersten Stand schlug die Prüfung an, im Editor war aber nichts zu sehen.
kursewird über die Suche gefüllt. Sie bekommt jetzt auch denREFERENCE_FILTERaus der.c-oclund wertet Filter mitself(Student) undtarget(Kurs) aus –querybindet dafürtargetje Kandidat. Bisher gab die Suche bei solchen Ausdrücken auf.var(--red-500)gibt es im PrimeVue-4-Theme nicht; die Felder des Instanz-Editors nutzen jetztvar(--p-red-500)mit Rückfall. Andere Bereiche (Layout, Atlas, Aktionen) haben dieselbe Variable noch.querymittarget, das Feld (Informatik bei Martin markiert, Mathe nicht) und die Suche (Kurse aus Mittweida gesperrt); im Browser mit dem Uni-Workspace.