Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 9 Nächste Version anzeigen »

Allgemein


Regeln des Typs "Aktualisieren (im Anschluss)" können nur Entitäten zugewiesen werden und müssen das Interface "UpdateFinalRule" implementieren. Im Gegensatz zum Typ "Aktualisieren" werden Regeln dieser Art nach dem Aktualisieren eines neuen Datensatzes ausgeführt.

Innerhalb des Baums mit der Regelbibliothek werden sie dem Knoten "Aktualisieren (im Anschluss)" zugeschrieben.

Struktur

Quellcode einer Klasse des Typs "Aktualisieren (im Anschluss)":

package org.nuclet.lager; 

import org.nuclos.api.rule.UpdateFinalRule; 
import org.nuclos.api.context.UpdateContext; 
import org.nuclos.api.annotation.Rule; 
import org.nuclos.api.exception.BusinessException; 

/** @name        
  * @description 
  * @usage       
  * @change      
*/

@Rule(name="Aktualisieren Lagerposition im Anschluss", description="Aktualisieren Lagerposition im Anschluss")
public class AktualisierenLagerPositionImAnschluss implements UpdateFinalRule {
   
 public void updateFinal(UpdateContext context) throws BusinessException { 
    }
}

 

Das entsprechende Interface schreibt die Implementierung der Methode "updateFinal" vor und liefert als Kontext die Klasse UpdateContext. Darin enthalten ist das BusinessObject. Weiterhin können die Funktionen des übergeordneten RuleContexts genutzt werden.

Wurde ein Datensatz der zugewiesenen Entität aktualisiert, erstellt Nuclos im Anschluss eine Instanz dieser Regel und ruft die Methode update auf. Der Kontext beinhaltet den im Vorfeld aktualisierten Datensatz. Innerhalb der updateFinal-Methode kann der Regelprogrammierer auch eine BusinessException werfen, die zum Abbruch des Events, aber nicht zum Abbruch des 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 "Aktualisieren (im Anschluss)" können nur Entitäten zugewiesen werden. Nach der Verknüpfung erscheint die Klasse nach Auswahl der Entität 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 zur Entität 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 "Aktualisieren (im Anschluss)" veranschaulicht.

Troubleshooting

Problem
Mögliche Ursachen
Eine Regel wird trotz korrekter Zuordnung nicht ausgeführt
  • Die Regel wurde im Editor nicht auf "aktiv" gesetzt.
  • Die Regel beinhaltet Kompilierfehler und kann nicht als Klasse gebaut werden.
  • Die Regel wurde korrekt gebaut, aber noch keiner Entität zugewiesen.
  • Die Regel wurde einer falschen Entität zugewiesen. Beispiel: Ein Auftrag kann Auftragspositionen beinhalten. Eine Regel, die mit der Entität Auftragspositionen verknüpft wurde, wird nicht beim Editieren eines Auftrags ausgeführt, selbst wenn die Auftragspositionen als Unterformular in der Maske des Auftrags vorhanden sind.
  • Innerhalb der Zuweisung wurde (wie im Screenshot) kein Status angegeben. Datensätze mit einem speziellen Status( z.B. eine Bestellung wurde "storniert") werden nicht berücksichtigt. Gleiches gilt für Aktionen.

 

Eine Regel lässt sich nicht kompilieren.
  • Die Struktur der Klasse entspricht nicht der Grammatik und der Syntax der Programmiersprache Java
  • Die Businessobjekte werden nicht gefunden, weil der Import der Businessobjekt-Klasse fehlt.
  • Die Businessobjekte werden nicht gefunden, da sie noch nicht erstellt wurden. Erst beim Durchlauf des Entity-Wizzards werden die Businessobjekte gemäß der Entitäts-Metadaten (Namen, Felder, Datentypen, etc.) neu erstellt. 

 

Ein BusinessObject kann nicht aus dem Kontext gelesen werden
  • Das BusinessObject entspricht der Entität, die der Regel zugewiesen wurde. Hängt eine Regel etwa an der Entität Auftrag, so kann der Aufruf getBusinessObject(Kunde.class), nicht funktionieren, da nur ein Auftrag im Kontext sein kann.

 

 

  • Keine Stichwörter