Einmalverarbeitung ausgeführt?
Siehe auch: Einmalverarbeitung ausgeführt (Ereignisaktion)
Regeltyp - Kurzfassung
Zweck: Gilt als "bestanden", wenn vor dem Zeitpunkt der Prüfung innerhalb derselben Transaktion durch eine Einmalverarbeitung ausgeführt-Ereignisaktion ein "Merker" mit exakt übereinstimmenden Parametern gesetzt wurde.
Die Regel Einmalverarbeitung ausgeführt? wird in Verbindung mit der Einmalverarbeitung ausgeführt-Ereignisaktion eingesetzt, um die mehrfache Ausführung von Aktionen innerhalb derselben Transaktion zu verhindern. Das kann auch notwendig sein, um Endlosschleifen zu verhindern, wenn wechselseitige Abhängigkeiten zwischen Ereignisbehandlungen bestehen.
Die Ereignisaktion Einmalverarbeitung ausgeführt setzt einen Merker, der durch die über Wertauflöser definierten Parameter Job Name und Job Besitzer identifiziert wird.
Die Regel Einmalverarbeitung ausgeführt? gilt als "bestanden", wenn vor dem Zeitpunkt der Prüfung innerhalb derselben Transaktion ein Merker mit exakt denselben Parameterwerten gesetzt wurde.
Konfiguration
In der Konfiguration für die Regel definieren dieselben Parameter, welcher Merker geprüft wird:
Der optionale Parameter Job Name wird durch einen Wertauflöser bestimmt, dessen Rückgabewert als Zeichenfolge interpretiert wird, sofern er nicht "kein Wert" (null) ist.
Der optionale Parameter Job Besitzer wird durch einen Wertauflöser bestimmt, dessen Rückgabewert als Datenobjekt interpretiert wird.
Die Einmalverarbeitung ausgeführt?-Regel vergleicht den Job Name als Zeichenfolge und den Job Besitzer als Datenobjekt, um festzustellen, ob ein bestimmter Merker im bisherigen Verlauf der Transaktion durch die Ereignisaktion Einmalverarbeitung ausgeführt (mit entsprechenden Werten für diese Parameter) gesetzt wurde oder nicht.
►HINWEISE◄
Da beide Parameter optional sind, kann die Regel auch ohne Parameterwerte (bzw. mit den Werten null/null) verwendet werden. Sie wird dann bestanden, wenn die Ereignisaktion Einmalverarbeitung ausgeführt ebenfalls mit den Parameter-Werten null/null ausgeführt wurde.
Ausschlaggebend für die Übereinstimmung beim Parameter Job Name ist eine exakte Übereinstimmung des in eine Zeichenfolge umgewandelten Rückgabewerts des Wertauflösers. Dabei kann z. B. eine Ganzzahl (z. B. ein Long-Wert aus einem id-Feld einer Entität) mit einer als Text bereitgestellten Ziffernfolge verglichen werden. Sollen "Kommazahlen", Datums/Zeitangaben, usw. mit z. B. als "Literal" bereitgestellten Texten verglichen werden, muss die Formatierung exakt so gewählt werden, dass sie dem Ausgabeformat des jeweiligen Werts innerhalb einer Hinweis anzeigen (Popup)-Ereignisaktion entspricht.
Wie Datenobjekte im Parameter Job Besitzer verglichen werden, hängt vom jeweiligen Objekttyp ab:
Wird eine Entität bzw. ein Attribut einer Entität mit einer vom System verwalteten ID (id) als Job Besitzer angegeben, dann prüft die Regel, ob das als Job Besitzer referenzierte Datenobjekt identisch mit dem Datenobjekt ist, das in der Ereignisaktion Einmalverarbeitung ausgeführt referenziert wurde. Dies bedeutet einerseits, dass die Regel eine Entität auch dann noch "wiedererkennt", wenn deren Daten seit dem Ausführen der Ereignisaktion Einmalverarbeitung ausgeführt verändert wurden. Andererseits bedeutet das aber auch, dass zwei "geklonte" Instanzen auch dann als nicht übereinstimmend gewertet werden, wenn sie identische Daten für dieselbe Entität beinhalten. Es wird kein tiefer Vergleich (s. Ist Gleich) ausgeführt. Dieser Effekt macht sich z. B. beim Versuch bemerkbar Entitäten aus dem Anmeldekontext (s. Sitzungsbasiert (Wertauflöser)) als Job Besitzer zuzuweisen. Die Wertauflöser für Benutzer der Session, Firma der Session und Rolle der Session erzeugen bei jedem Aufruf einen neuen "Klon" der jeweiligen Entität, so dass die zurückgegebenen Datenobjekte nie identisch sind, obwohl sie dieselbe Entität repräsentieren und bei einem "tiefen Vergleich" (s. Ist Gleich) auch als "gleich" gewertet werden.
Wird ein frei definiertes Datenobjekt (z. B. ein "Client Objekt") als Job Besitzer zugewiesen, dann wertet der Abgleich alle im Objekt enthaltenen Daten (also seinen Hash-Wert) aus. Die Einmalverarbeitung ausgeführt?-Regel wird dann nur bestanden, wenn die aktuellen Objektdaten exakt dem Stand beim Setzen des Merkers über die Einmalverarbeitung ausgeführt-Ereignisaktion entsprechen. Ob es sich tatsächlich um dieselbe Objektinstanz (s. a. Erzeuge Instanz) handelt, ist dagegen unerheblich, solange alle Merkmale übereinstimmen.
►HINWEIS◄ Die Einmalverarbeitung ausgeführt?-Regel wird in der Praxis oft "negiert" (s. "!" im Screenshot; Details s. Nicht-Regel), da die Ereignisaktionen unterhalb typischerweise genau dann ausgeführt werden sollen, wenn die Regel nicht zutrifft.
Im Screenshot ist der Parameter Job Name als statischer Text (mit dem Wert "TS_UPDATE") definiert, während als Job Besitzer die Id (eindeutige interne Kennung im Feld id) des Bezugsobjekts im Datenkontext der Regel verwendet wird. Falls eine Transaktion mehrere Bezugsobjekte betrifft, wird so ein eindeutiger Merker für jedes Bezugsobjekt geprüft.
Beispiel
Ein konkretes Anwendungsbeispiel für die Verwendung der Einmalverarbeitung ausgeführt? wird auf der Hilfe-Seite für die Ereignisaktion Einmalverarbeitung ausgeführt beschrieben.