Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Info
titleVorhandene Regeln überführen

Sollen vorhandene Regeln überführt werden? Am schnellsten geht es, in dem die Regeln aus dem alten NUCLOS_HOME/data/codegenerator/src-rule Verzeichnis gesichert werden.

Es ist denkbar, dass neben der Nuclos API weitere Drittbibliotheken in den Regeln Verwendung finden, oder eine bereits vorhandene Server-Extension. Hierfür müssen in der pom.xml entsprechende Dependencies nachgetragen werden.
Beispiel siehe angehängte pom.xml


Verwendung der Regeln

Regeln aus einer Extension stehen zur Konfiguration ganz normal zur Verfügung. Können also einem BO, Job etc. zugewiesen werden.

Eine Besonderheit bildet die neue Checkbox Extension Regel im Regeleditor.

Image Added

Regeln in der Datebank bzw. im Nuclet können neben dem eigentlichen Code auch einige weitere Eigenschaften aufweisen und zusätzlich berechtigt werden (CustomRestRule). Um einer Extension Regel diese Eigenschaften zuzuweisen oder sie zu berechtigen wird eine Dummy Regel ohne "Inhalt" aber mit dieser neuen Eigenschaft benötigt. Damit der Name der Klasse aus dem Code ermittelt werden kann ist lediglich ein valider Rumpf von Nöten.

Codeblock
languagejava
titleDummy Regel Rumpf Beispiel
package extension.example.rest;
public class CustomRestTestRuleExtension {}


Regel Kompilierung

Hier kann die volle Bandbreite des Maven Frameworks eingesetzt werden.

...

Wie unter dem Punkt der Auslieferung bereits angedeutet sind bereits ein paar Unterschiede bekannt die hier beschrieben werden. Diese Liste darf gerne um weitere Erfahrungen erweitert werden (Zwinkern)

SetupProblem
Extension im Nuclet; In einer Regel Klasse soll mittels AspectJ (@Configurable) ein Autowiring @Autowired durchgeführt werden.
Ein Beispiel wäre diese Klasse im Integrationstest Nuclet Java8RuleExtension.java,
mit einer @Configurable Annotation; Integrationstest RulesTest würde fehlschlagen.

Die @Component Klasse wird bei Ausführen der Regel nicht gefunden, da AspectJ mit dem Standard Application ClassLoader arbeitet . Es wird nicht der RuleClassLoader von Nuclos verwendet, bzw. dessen Context der das Objekt kennen würde.
Mögliche Lösungen:
1. Extension mittels Installer installieren, womit auch die @Component Klasse im Standard Application ClassLoader landet.
2. Wie im Beispiel zu sehen, auf AspectJ an dieser Stelle verzichten und somit auf "Standard Spring" setzen.

...