| Auszug | ||
|---|---|---|
| ||
Nuclos Event-Regel Objektgenerierung: Interface, GenerateContext, Struktur, Zuweisung im Server-Regelmanager, Beispielcode (Java). |
Sprache: Deutsch · English
Ereignis-Regel „Objektgenerierung“: Interface, Kontext und ein Beispiel – so reagierst du auf dieses Nuclos-Ereignis.
| Status | ||||
|---|---|---|---|---|
|
| Status | ||||
|---|---|---|---|---|
|
| Status | ||||
|---|---|---|---|---|
|
| Status | ||||
|---|---|---|---|---|
|
| Panel | ||||
|---|---|---|---|---|
| ||||
Auf dieser Seite
|
...
Regeln des Typs "Objektgenerierung" können nur Objektgenerierungen zugewiesen werden und müssen das Interface "GenerateRule" implementieren.
Innerhalb des Baums mit der Regelbibliothek werden sie dem Knoten "Arbeitsschritt" zugeschrieben.
Quellcode einer Klasse des Typs "Arbeitsschritt":
...
|
Diese serverseitige Regel wird ausgeführt während einer Objektgenerierung (vor dem Speichern). Sie kann einem Objektgenerator zugewiesen werden.
Grundgerüst der Regelklasse (der Regeleditor legt es automatisch an):
| Codeblock | ||
|---|---|---|
| ||
package org.nuclet.lager;
import org.nuclos.api.rule.GenerateRule;
import org.nuclos.api.context.GenerateContext;
import org.nuclos.api.annotation.Rule;
import org.nuclos.api.exception.BusinessException;
/** @name
* @description
* @usage
* @change
*/
@Rule(name="Arbeitschritt Lager", description="Arbeitschritt Lager")
public class ArbeitschrittLager implements GenerateRule {
public void generate(GenerateContext context) throws BusinessException {
}
} |
| Info | ||
|---|---|---|
| ||
Der Kontext |
Im Server-Regelmanager per Drag-and-Drop dem Ziel zuweisen. Optional lässt sich die Ausführung auf einen Status oder eine Aktion einschränken; die Reihenfolge steuerst du über die Pfeil-Buttons.
Das folgende Beispiel soll den Aufbau einer Regel vom Typ „Objektgenerierung„ und die Weiterverarbeitung der übergebenen Inhalte veranschaulichen.
| Codeblock | ||
|---|---|---|
| ||
package org.nuclet.company;
import org.nuclos.api.rule.GenerateRule;
import org.nuclos.api.context.GenerateContext;
import org.nuclos.api.annotation.Rule;
import org.nuclos.api.exception.BusinessException;
import java.util.Collection;
/** @name
* @description
* @usage
* @change
*/
@Rule(name="BestellungErstellen", description="BestellungErstellen")
public class BestellungErstellen implements GenerateRule {
public void generate(GenerateContext context) throws BusinessException {
Collection<Anfrage> sourceObjects = context.getSourceObjects(Anfrage.class);
int sumOfArticles = 0;
for (Anfrage a: sourceObjects) {
// How many articles are in this inquiry
sumOfArticles += a.getAnfrageposition().size();
}
Bestellung targetObject = context.getTargetObject(Bestellung.class);
targetObject.setKurzbeschreibung("Diese Bestellung umfasst " + sumOfArticles + " Artikelpositionen.");
}
} |
Das entsprechende Interface schreibt die Implementierung der Methode "generate" vor und liefert als Kontext die Klasse GenerateContext. Darin enthalten sind die Einträge der Quellentität, das Zielobjekt und - falls angegeben - das Parameterobjekt. Weiterhin können die Funktionen des übergeordneten RuleContexts genutzt werden.
Innerhalb der generate-Methode kann der Regelprogrammierer auch eine BusinessException auslösen, die zum Abbruch des Events führt. Die Fehlermeldung wird in Nuclos angezeigt.
Die Angabe der Annotation "Rule" ist nicht zwingend notwendig, wird aber empfohlen, da die Beschreibungen (name und description) im Regelbibliotheksbaum angezeigt werden.
Klassen des Typs "Arbeitsschritt" können nur Arbeitsschritten zugewiesen werden. Nach der Verknüpfung erscheint die Klasse nach Auswahl des Arbeitsschrittes und des Typs im Zuweisungsfenster .
Mit dem Symbol des Mülleimers kann die Zuweisung der Klasse zum Arbeitsschritt gelöscht werden. Wichtig ist, dass damit nur die Zuweisung gelöscht wird. Weiterhin lässt sich mit Hilfe der Pfeile-Buttons die Ausführungsreihenfolge verändern.
Jede Änderung wird automatisch gespeichert.
Hier finden Sie ein Beispiel, das den Aufbau einer Regel vom Typ "Arbeitsschritt" veranschaulicht.