Seitenhistorie
...
| Codeblock | ||||
|---|---|---|---|---|
| ||||
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.
...
Überblick
Inhalte