Das folgende Beispiel soll den Aufbau einer Regel vom Typ "Löschen im Anschluss" und die Weiterverarbeitung der übergebenen Inhalte veranschaulichen.

Fachlicher Hintergrund

Eine bestehende Nuclos-Instanz umfasst das Businessobjekt Bestellungen. Die Aufgabe besteht darin, nach dem Löschen einer Bestellung alle Einträge in der Businessobjekt History mit Bezug auf diese Bestellung zu aktualisieren.

Quellcode

 

package org.nuclet.company; 

import java.util.Date;
import java.util.List;
import org.nuclos.api.annotation.Rule;
import org.nuclos.api.businessobject.BusinessObject;
import org.nuclos.api.businessobject.Query;
import org.nuclos.api.context.DeleteContext;
import org.nuclos.api.exception.BusinessException;
import org.nuclos.api.provider.BusinessObjectProvider;
import org.nuclos.api.provider.QueryProvider;
import org.nuclos.api.rule.DeleteFinalRule;

/** @name        
  * @description 
  * @usage       
  * @change      
*/
@Rule(name="BestellungFinalDelete", description="BestellungFinalDelete")
public class BestellungFinalDelete implements DeleteFinalRule {
   
 public void deleteFinal(DeleteContext context) throws BusinessException { 
            
		Bestellung businessObject = context.getBusinessObject(Bestellung.class);

        Query<History> allHistoryEntries = QueryProvider.create(History.class);
        allHistoryEntries.where(History.EntityId.equals(businessObject.getId()));
        
        List<History> results = QueryProvider.execute(allHistoryEntries);
        
        for (History b : results) {
            if (context.isLogical()) {
                b.setBemerkung("logical delete");                
            } else {
                b.setBemerkung("physical delete");
            }
            BusinessObjectProvider.update(b);
        }
    }
}
  • Keine Stichwörter