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