Das folgende Beispiel soll den Aufbau einer Regel vom Typ "Job" veranschaulichen.
Fachlicher Hintergrund
Eine bestehende Nuclos-Instanz umfasst das Businessobjekt Bestellungen. Weiterhin wurde ein Job eingerichtet, der jede Nacht um eine bestimmte Uhrzeit ausgeführt wird. Die folgende Regel wird mit dem Job verknüpft und bei jedem Lauf ausgeführt. Aufgabe ist es, alle Bestellungen auf ihre formale Korrektheit zu prüfen und je nach Verstoß Meldungen zu loggen.
Quellcode
package org.nuclet.company; import java.util.List; import org.nuclos.api.annotation.Rule; import org.nuclos.api.context.JobContext; import org.nuclos.api.provider.QueryProvider; import org.nuclos.api.rule.JobRule; /** @name * @description * @usage * @change */ @Rule(name="JobBestellungenPruefen", description="JobBestellungenPruefen") public class JobBestellungenPruefen implements JobRule { public void execute(JobContext context){ // Get all Bestellungen List<Bestellung> lstBestellungen = QueryProvider.execute( QueryProvider.create(Bestellung.class)); for (Bestellung b : lstBestellungen) { // orders that are not confirmed are ok, but should be logged as infos if (Boolean.FALSE.equals(b.getBestaetigt())) { context.joblog("Info: Bestellung " + b.getNummer() + " wurde noch nicht bestätigt."); } // orders without articles are formally valid, but dont make sense if (b.getPosition().size() <= 0) { context.joblogWarn("Warnung: Bestellung " + b.getNummer() + " besitzt keine Positionen"); } // orders without an internal advisor are formally invalid if (b.getSachbearbeiter() == null) { context.joblogError("Fehler: Bestellung " + b.getNummer() + " besitzt keinen Sachbearbeiter"); } } } }
Überblick
Inhalte