Skip to content

fix(build): OCL-Prüfung und C-OCL-Vorschläge im Deployment - #183

Merged
vwfox merged 2 commits into
mainfrom
fix/plugin-build-ocl
Oct 26, 2026
Merged

vwfox merged 2 commits into
mainfrom
fix/plugin-build-ocl

Conversation

@vwfox

@vwfox vwfox commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

Im Deployment (gene.modelatlas.cloud) war die OCL-Prüfung aus, und der C-OCL-Editor machte keine Vorschläge. Gefunden im MCP-Browser am ausgelieferten Build, bestätigt an einem lokalen Produktions-Build.

Ursachen

1. OCL-Engine nicht ladbar (ui-problems-panel)
scripts/build-plugins.js nahm alle @emfts/* aus dem Bundle. Die Laufzeit stellt aber nur die sharedModules bereit. @emfts/ocl.engine und @emfts/ocl.langium blieben als nackte Importe stehen: Failed to resolve module specifier '@emfts/ocl.engine'. Folge: „0 constraints from 0 package(s)“, keine Validierung, keine C-OCL-Filter.
→ Extern bleibt genau SHARED_MODULES, alles andere wird gebündelt. Es gibt nur noch eine Liste statt zwei, die gleich gehalten werden mussten (vgl. b8f4c06).

2. LSP-Worker kaputt (transformation, dmn-editor)
new URL('../workers/ocl-lsp-worker.ts', import.meta.url) baut der Library-Build nicht als Worker. Der rohe TypeScript-Text landete in einer data:video/mp2t-URL. Der Worker startete nicht, die LSP-Initialisierung lief in den Timeout. Beim FEEL-Worker war es genauso.
→ Vites ?worker-Import, worker.format: 'es'.

3. Monaco-Worker 404 (transformation, xml-editor, ui-uimodel-forms)
Der Worker wurde unter /assets/… statt /plugins/<id>/assets/… gesucht, und Monaco wich auf den Haupt-Thread aus.
→ base: './': Die Worker-Dateien werden relativ zum Plugin adressiert.

4. Keine Features nach self. (C-OCL-Editor)

  • Die Kontextklasse ging punktgetrennt (context university.Student) in den Dokumentkopf. Das ist kein gültiges OCL, und der Sprachserver kannte den Typ von self nicht. → oclContextName wandelt in university::Student um.
  • Die Paketregistrierung brach am ersten eingebauten Paket ab (Ecore hat keine Resource). → Jetzt wird jedes Paket einzeln registriert, eingebaute werden übersprungen.

Geprüft

  • Lokaler Produktions-Build (build-plugins.js + prepare-plugins, ausgeliefert per vite preview) mit dem uni-Workspace:
    • Statuszeile „2 constraints from 1 package(s)“
    • Verstoß „KurseNurVonEigenerUni“ erkannt
    • self. schlägt kurse, matrikelnummer, name und uni vor
  • Gebaute Bundles: keine nackten @emfts-Importe, Worker unter assets/ relativ zum Plugin, Worker-Bundles ohne offene Importe.
  • Unit-Tests grün (589), keine neuen Typfehler, ESLint ohne Fehler.

Nicht in diesem PR

  • icons-cwm liefert im Deployment 404, obwohl es im Release-Build enthalten ist.
  • dmn-editor nimmt der Release-Workflow absichtlich heraus.

vwfox added 2 commits October 26, 2026 12:27
Im Deployment war die OCL-Pruefung aus und der C-OCL-Editor machte keine
Vorschlaege. Drei Fehler im Plugin-Build (scripts/build-plugins.js):

- externalFn nahm alle @emfts/* aus dem Bundle, die Laufzeit stellt aber
  nur die sharedModules bereit. @emfts/ocl.engine und ocl.langium blieben
  nackte Importe ("Failed to resolve module specifier"). Jetzt bleibt
  genau SHARED_MODULES extern, alles andere wird gebuendelt - eine Liste
  statt zwei, die mitwachsen mussten.
- Worker per new URL('...worker.ts', import.meta.url) baut der
  Library-Build nicht: der OCL-LSP-Worker (und der FEEL-Worker) landete
  als roher TypeScript-Text in einer data:video/mp2t-URL. Jetzt ueber
  Vites ?worker-Import, als ES-Modul-Worker gebaut.
- Worker-Dateien wurden unter /assets/ statt /plugins/<id>/assets/
  gesucht (Monaco-Worker 404). base './' adressiert sie relativ zum
  Plugin.
Nach self. kamen nur allgemeine OCL-Operationen, keine Features der
Klasse:

- Die Kontextklasse steht im C-OCL punktgetrennt (university.Student),
  der Editor schrieb sie so in den Dokumentkopf. OCL trennt Pakete mit
  ::, der Kopf liess sich nicht parsen und der Sprachserver kannte den
  Typ von self nicht. oclContextName wandelt um.
- Die Paketregistrierung beim Sprachserver brach am ersten eingebauten
  Paket ab (Ecore hat keine Resource zum Serialisieren) - die Modelle des
  Workspace kamen nie an. Jetzt je Paket, eingebaute uebersprungen.
@vwfox
vwfox merged commit becd78f into main Oct 26, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant