Allgemein
Regeln des Typs "Löschen (im Anschluss) können nur Businessobjekten zugewiesen werden und müssen das Interface "DeleteFinalRule" implementieren.
Innerhalb des Baums mit der Regelbibliothek werden sie dem Knoten "Löschen (im Anschluss)" zugeschrieben.
Struktur
Quellcode einer Klasse des Typs "Löschen":
package org.nuclet.lager; import org.nuclos.api.rule.DeleteFinalRule; import org.nuclos.api.context.DeleteContext; import org.nuclos.api.annotation.Rule; import org.nuclos.api.exception.BusinessException; /** @name * @description * @usage * @change */ @Rule(name="Loeschen Lagerposition im Anschluss", description="Loeschen Lagerposition im Anschluss") public class LoeschenLagerpositionImAnschluss implements DeleteFinalRule { public void deleteFinal(DeleteContext context) throws BusinessException { } }
Das entsprechende Interface schreibt die Implementierung der Methode "deleteFinal" vor und liefert als Kontext die Klasse DeleteContext. Darin enthalten ist das BusinessObject. Weiterhin können die Funktionen des übergeordneten RuleContexts genutzt werden.
Wurde ein Datensatz des zugewiesenen Businessobjekts gelöscht, erstellt Nuclos im Anschluss eine Instanz dieser Regel und ruft die Methode deleteFinal auf. Der Kontext beinhaltet den im Vorfeld gelöschten Datensatz. Innerhalb der deleteFinal-Methode kann der Regelprogrammierer auch eine BusinessException auslösen, die zum Abbruch des Events und zum Rollback des vorherigen Speichervorgangs selbst führt. Die Fehlermeldung wird in Nuclos angezeigt.
Die Angabe der Annotation "Rule" ist nicht zwingend notwendig, wird aber empfohlen, da die Beschreibungen (name und description) im Regelbibliotheksbaum angezeigt werden.
Zuweisung
Klassen des Typs "Löschen (im Anschluss)" können nur Businessobjekten zugewiesen werden. Nach der Verknüpfung erscheint die Klasse nach Auswahl des Businessobjekt und des Typs im Zuweisungsfenster und bietet folgende weitere Einstellungsmöglichkeiten:
- Ausführen bei einem bestimmten Status
- Ausführen bei einer bestimmten Aktion
Mit dem Symbol des Mülleimers kann die Zuweisung der Klasse zum Businessobjekt gelöscht werden. Wichtig ist, dass damit nur die Zuweisung gelöscht wird. Weiterhin lässt sich mit Hilfe der Pfeile-Buttons die Ausführungsreihenfolge verändern.
Jede Änderung wird automatisch gespeichert.
Beispiel
Hier finden Sie ein Beispiel, das den Aufbau einer Regel vom Typ "Löschen (im Anschluss)" veranschaulicht.
Probleme und Lösungen
Support und Informationen zur Problembehandlung finden Sie hier.
Kommentar
Ramin Göttlich sagt:
> Wichtig ist, dass das Löschen der Daten an dieser Stelle nicht mehr abgebrochen werden kann.
Stimmt das wirklich? Eine Exception muss vollständig zurückrollen, egal ob "Löschen" oder "Löschen (im Anschluss)"
"Im Anschluss" bedeutet nur, dass die Ausführung der Regel nach dem DB-Delete stattfindet (nichtdestotrotz wird bei Exception zurückgerollt)