Das folgende Beispiel soll den Aufbau einer Regel vom Typ "Statuswechsel" und die Weiterverarbeitung der übergebenen Inhalte veranschaulichen.

Fachlicher Hintergrund

Eine bestehende Nuclos-Instanz umfasst das Businessobjekt Auftrag. Die Aufgabe besteht darin, einen Auftrag, der in den Status "beauftragt" überführt werden soll, fachlich zu prüfen. Fehlen wichtige Daten, soll dem Benutzer eine Fehlermeldung angezeigt und der Statuswechsel abgebrochen werden.

Im Beispiel wird beim Fehlen einer Auftragsnummer, eines Kunden oder eines Bestellwerts eine Fehlermeldung mit passendem Text erfasst und zurückgeworfen. Dies führt einerseits dazu, dass die Meldung dem Benutzer angezeigt wird und andererseits dazu, dass der Statuswechsel - aufgrund einer technischen Exception - abgebrochen wird.

Quellcode

 

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.");
 
	}
} 
  • Keine Stichwörter