Das folgende Beispiel soll den Aufbau einer Regel vom Typ "Aktualisieren (im Anschluss)" und die Weiterverarbeitung der übergebenen Inhalte veranschaulichen.
Fachlicher Hintergrund
Eine bestehende Nuclos-Instanz umfasst die Entität Bestellungen. Diese wiederum besitzt den Reiter Positionen, der alle Artikel einer konkreten Bestellung auflistet. Die Regel wird mit der Entität Bestellungen verknüpft und soll alle Positionen durchlaufen, die Anzahl der Artikel aufsummieren und anschließend in einem Hinweisfeld ablegen.
Quellcode
package org.nuclet.company; import java.util.List; import org.nuclos.api.rule.UpdateRule; import org.nuclos.api.context.UpdateContext; import org.nuclos.api.annotation.Rule; import org.nuclos.api.exception.BusinessException; /** @name * @description * @usage * @change */ @Rule(name="UpdateFinalBestellung", description="UpdateFinalBestellung") public class UpdateFinalBestellung implements UpdateFinalRule { public void updateFinal(UpdateContext context) throws BusinessException { // this is the businessObject after storing the updated data in the database Bestellung curBestellung = context.getBusinessObject(Bestellung.class); // changes are not recognized, because data has already been saved // the following description will not be stored in the database curBestellung.setKurzbeschreibung("Bestellung wurde im Schnellverfahren abgeschlossen."); // we want to re-update all positions after the order has been updated properly // so we use the QueryProvider for (Bestellposition pos : curBestellung.getPosition()) { pos.setBemerkung("Position im Gesamtkontext von " + curBestellung.getNr()); BusinessObjectProvider.update(pos); } } }
Überblick
Inhalte