Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Inhalt
maxLevel2

Definition

Ab Nuclos v4.30 können Geschäftsregeln einfach als Maven Projekt in einer IDE eingebunden werden. Nuclos generiert hier für automatisch eine pom.xml unter <NUCLOS-HOME>/data/codegenerator


Voraussetzungen:

  1. Der Server wird lokal ausgeführt und das codegenerator Verzeichnis befindet sich entsprechend auf dem Entwicklungsrechner, oder es wurden die Parameter CODEGENERATOR_POM_LIBDIR, CODEGENERATOR_POM_AXIS_LIBDIR und CODEGENERATOR_POM_EXTENSION_LIBDIR konfiguriert.
  2. Der Server wird im Entwicklungsmodus betrieben (Siehe Installation fortgeschritten)
  3. Eine IDE Ihrer Wahl mit Maven Unterstützung. Hier im Beispiel wird die IntelliJ IDEA Community Edition verwendet.


Info
iconfalse
titleBerechtigung

Es ist auch ratsam Nuclos mit normalen Benutzerrechten zu installieren und zu betreiben, nicht als Dienst. Ansonsten könnte es Probleme mit den Berechtigungen und den Zugriff auf die Dateien geben. Auch kann es unter Umständen helfen das codegenerator Verzeichnis zu löschen und beim nächsten Start vom Server neu erstellen zu lassen.

Stand:

Die aktuelle Anleitung wurde getestet mit Nuclos 4.2024.8 und IntelliJ IDEA 2024.1.1 (Community Edition)


In diesem Fall empfiehlt es sich auch, die Automatische Kompilierung aktiviert zu lassen.


Neues Projekt anlegen.



Wählen Sie das codegenerator Verzeichnis aus. Normalerweise befindet sich in <NUCLOS-HOME>/data Ihrer Installation.


Intellij erkennt dieses Verzeichnis automatisch als Maven Projekt an.



*Import Maven projects automatically" wurde hier zusätzlich ausgewählt.


Gefundenes codegenerator Projekt bestätigen.

(warning) Wichtig, der Server sollte im Hintergrund ausgeführt werden. Nur dann ist sichergestellt, das auch alle verwendeten Bibliotheken gefunden werden.


Beim ersten Start wird vermutlich noch ein SDK fehlen. Derzeit benötigt Nuclos ein Java JDK der Version 8. Über den Plus-Button können Sie eines hinzufügen. Am besten verwenden Sie das Gleiche womit auch der Server betrieben wird.


So sollte es dann mit ausgewählten SDK aussehen.


Der Name kann so übernommen werden. Schließen Sie den Wizard mit Finish ab.


Im Projekt Fenster können Sie nun zu Ihren bereits geladenen Regeln navigieren. Durch den Import und das Erkennen als Maven Projekt sind bereits alle Abhängigkeiten korrekt gesetzt.


Über das Menü

Run → Attach to Process...

können Sie sich mit dem Server verbinden. Dies ermöglicht einerseits das Debuggen Ihrer Regeln über Breakpoints, als auch Änderungen direkt in die laufenden VM zu übernehmen.


Eine Auswahl mit den laufenden Java Prozessen wird angezeigt. Wählen Sie Ihren Nuclos Server aus. Standardmäßig lautet der Debug Port 8000.


Nun können Sie mit Hilfe von Breakpoints komfortabel Ihre Regeln debuggen.


Damit nicht noch zusätzlich alle Regeln von Nuclos kompiliert werden, sollten Sie die Automatische Kompilierung von Nuclos deaktivieren.

Image Removed

Über das Menü

Build → Build Project...

wird eine Neukompilierung der Regeln angestoßen.

Nach Bestätigen der Rückfrage (siehe Screenshot) werden die geänderten Klassen ohne Umwege sofort an die laufende VM übermittelt. Dies geschieht über den Debug Port.

Die Kompilierung schlägt mit folgender Meldung fehl?
Error: java: JDK isn't specified for module 'codegenerator'

Dann müssen Sie das SDK neu setzen. Lesen Sie hier wie Sie am besten vorgehen.


Um Konflikte mit dem Nuclos Compiler zu vermeiden (automatisch erzeugte Klassen werden ncht gefunden) sollte die Option "Delegate IDE build/run actions to Maven" aktiviert werden.

Eine andere Lösung ist, die Automatische Kompilierung in Nuclos zu deaktivieren, dies erfordert aber ein Neuladen der Regeln vom Dateisystem (siehe nächster Schritt).

Image Added

Alternativ (ab Nuclos 4.53) können Sie über den Button Importiere Dateiänderungen (Ergebnisliste der Regeln) Änderungen an Dateien direkt eingelesen werden.

Dies ist z.B. hilfreich, wenn der Server in einer VM (oder Docker Container) betrieben wird und die automatische Überwachung von Dateiänderungen nicht greift, da die Dateien möglicherweise auf einem "Share" Laufwerk abgelegt werden (im Falle von Docker z.B. auf dem volume /opt/nuclos/home/data/codegenerator)

Image Modified

Ein kleiner Test für eine zusätzliche Ausgabe in das Server.log war in unserem Beispiel erfolgreich.


Die Möglichkeit zu debuggen und die Code Completion einer IDE wird Ihre Produktivität deutlich steigern. Probieren Sie es aus!

Viel Spaß (wink)



Probleme mit der IDE?



Dateikonflikte:

Beim gleichzeitigen Arbeiten in Nuclos und der IDE kann es sein, dass Nuclos eine neuere Version einer Regel erzeugt, die die in der IDE gemacht Änderungen rückgängig machen würde. In dem Fall muss der Dateikonflikt zugunsten der in intelliJ bearbeiteten variante aufgelöst werden ("Keep Memory Changes" bzw. Alt+K).

Um das Auftreten solcher Konflikte zu reduzieren, kann die Autosave-Funktion von intelliJ weitgehend deaktiviert werden. Änderungen können dann wenn nötig per Strg+S auf das Dateisystem geschrieben werden.

Image AddedImage Added

Nicht immer erkennt eine IDE schnell genug das sich Sourcecode geändert hat, in diesem Fall sollte ein Reimport durch Maven Abhilfe schaffen.

Ein typisches Beispiel wäre ein Wechsel des Datenbank Schemas mit einem ganz anderem Nuclet, oder nach dem Einspielen eines Datenbank Dumps.


Error: java: JDK isn't specified for module 'codegenerator'

Sie erhalten die obige Fehlermeldung beim kompilieren der Regeln?

Dann tragen Sie das JDK erneut ein. Dieser Fehler kann bei einem ganz neuen Projekt oder auch wenn Sie das JDK ändern auftreten.

Gehen Sie wie folgt vor:


Im Menü

File → Poject Structure...

aufrufen

Das Project SDK einmal leeren mit dem Eintrag <No SDK> → Apply
Und wieder wie hier im Beispiel 1.8 auswählen → OK

Im Anschluss sollten Ihre Regeln wieder kompilieren.