Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Ein typischer Anwendungsfall dafür ist die gezielte Aktualisierung einzelner Felder in Businessobjekten aus einer Regel hinaus, bei der man z.B. aus Performancegründen oder um Endlosschleifen durch sich gegenseitig aktualiserende Regeln bzw. Businessobjekte zu vermeiden, verhindern will, dass die Speichernregeln (UpdateRule, UpdateFinalRule) des zu aktualisierenden Businessobjektes ausgeführt werden. Natürlich ist bei Einsatz der im Folgenden beschriebenen Methode darauf zu achten, dass man die fachliche Logik der Regeln nicht aushebelt, es ist also mit Bedacht vorzugehen.

Einführung einer ThreadLocal-Variable in der zu deaktivierenden Regel

...

ThreadLocal-Variablen sind lokal auf den Thread bezogen, dass heisst die Deaktivierung einer Regel bezieht sich immer nur auf den aktuellen Thread bzw. Benutzerkontext. Die Regel wird also nicht generell deaktiviert, wie z.B. über das Aktiv-Flag der Regel.

Deaktivierung aus aktualisierender (anderer) Regel heraus

...

Es ist unbedingt darauf zu achten, dass die Deaktivierung zuverlässig wieder zurückgesetzt wird (auch im Fehlerfall), daher sollte diese immer wie in diesem Beispiel im finally-Block geschehen.