Nuclos Event-Regel Statuswechsel: Interface, StateChangeContext, Struktur, Zuweisung im Server-Regelmanager, Beispielcode (Java). |
Sprache: Deutsch · English
Ereignis-Regel „Statuswechsel“: Interface, Kontext und ein Beispiel – so reagierst du auf dieses Nuclos-Ereignis.
Auf dieser Seite |
Diese serverseitige Regel wird ausgeführt bei einem Statuswechsel (vor dem Wechsel). Sie kann einem Statusmodell zugewiesen werden.
Grundgerüst der Regelklasse (der Regeleditor legt es automatisch an):
package org.nuclet.lager;
import org.nuclos.api.rule.StateChangeRule;
import org.nuclos.api.context.StateChangeContext;
import org.nuclos.api.annotation.Rule;
import org.nuclos.api.exception.BusinessException;
/** @name
* @description
* @usage
* @change
*/
@Rule(name="Statuswechsel Lagerbestand", description="Statuswechsel Lagerbestand")
public class StatuswechselLagerbestand implements StateChangeRule {
public void changeState(StateChangeContext context) throws BusinessException {
}
} |
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 „Statuswechsel„ und die Weiterverarbeitung der übergebenen Inhalte veranschaulichen.
package org.nuclet.company;
import org.nuclos.api.rule.StateChangeRule;
import org.nuclos.api.context.StateChangeContext;
import org.nuclos.api.annotation.Rule;
import org.nuclos.api.exception.BusinessException;
/** @name
* @description
* @usage
* @change
*/
@Rule(name="BeauftragungPrüfen", description="Beauftragung prüfen")
public class BeauftragungPrüfen implements StateChangeRule {
public void changeState(StateChangeContext context) throws BusinessException {
Auftrag neuerAuftrag = context.getBusinessObject(Auftrag.class);
if (neuerAuftrag.getBestellwert() == null)
throw new BusinessException("Der Bestellwert darf nicht leer sein.");
if (neuerAuftrag.getKunde() == null)
throw new BusinessException("Es wurde kein Kunde für diesen Auftrag hinterlegt.");
if (neuerAuftrag.getAuftragsnr() == null)
throw new BusinessException("Der Auftrag besitzt keine Nummer.");
}
} |