Versionen im Vergleich

Schlüssel

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

...

Codeblock
languagejava
titleDeaktivierende Regel
 public class SomeOtherRule {

    ...
		...
		MyBusinessObject mbo = QueryProvider.getById(MyBusinessObject.class, id);
		mbo.setMyField(value);
 		try {
			//deactivate rule
            MyUpdateRule.ACTIVE.set(Boolean.FALSE);
			//content of if-block of update rule (see above) will not be executed this time
            BusinessObjectProvider.update(mbo);
 		} finally {
			//activate rule again
			MyUpdateRule.ACTIVE.set(Boolean.TRUE);
		}
		...
	...
}
    

Es ist unbedingt darauf zu achten, dass die Deaktivierung zuverlässig wieder zurückgesetzt wird (auch im Fehlerfall), daher sollte diese dies immer wie in diesem Beispiel im finally-Block geschehen. Die Aktivierung und Deaktivierung befindet sich in diesem Beispiel also in einem try-catch-finally-Block, um sicherzustellen, dass selbst nach Auftreten einer Exception in BusinessObjectProvider.update() die Regel anschliessend wieder aktiviert wird.

...