Konfiguration von Korrelationen in Workflows
In Workflows ist es möglich auf die Auslösung von Event Services zu reagieren. Dafür kann im WebModeler das abfangende Signal-Zwischenereignis verwendet werden. Neben dem Signal-Zwischenereignis kann außerdem ein angeheftetes Signal-Zwischenereignis sowie ein Signal-Startereignis auf die gleiche Weise konfiguriert werden.

In der Regel möchte man in Workflows nicht auf jedes ausgelöste Ereignis reagieren, sondern abhängig von den Daten, die im Ereignis enthalten sind. Dafür kann bei der Spezifikation des Signal-Zwischenereignisses eine Korrelation angegeben werden.

Bei der Konfiguration der Korrelationen muss pro Korrelation ein Schlüssel und ein Wert angegeben werden. Über den Schlüssel wird angegeben, wo sich in dem abgefangenen Ereignis der Wert befindet, über den korreliert werden soll. Dazu wird XPath verwendet.
Der Schlüssel kann dabei auf einen einzelnen Wert oder auf eine Liste von Werten zeigen. Im Fall einer Liste muss, zusätzlich zum eigentlichen Pfad, außerdem der Datentyp angegeben werden.
<CorrelationIds>
<guid>a518e125-9687-4aec-a564-f2612eef1fac</guid>
</CorrelationIds>
Für das obenstehende Event lautet der XPath-Ausdruck CorrelationIds/xgSc:Guid.
Der Wert für die Korrelation kann statisch sein oder ein Verweis auf ein Datenobjekt. Der so angegebene Wert wird mit dem aus dem Ereignis extrahierten verglichen. Entsprechen die Werte einander, so wird das Ereignis an den Workflow zugestellt.

Hinweise zur Verwendung von XPath
Insbesondere bei der Verwendung von Listen für die Korrelation sind besondere Hinweise zu beachten, damit es nicht zu unerwartetem Verhalten kommt. Dazu schauen wir uns das Beispiel von oben noch einmal genauer an.
Gegeben sei ein Event mit einer ID:
<CorrelationIds>
<guid>a518e125-9687-4aec-a564-f2612eef1fac</guid>
</CorrelationIds>
Der korrekte XPath-Ausdruck lautet, wie bereits oben beschrieben, CorrelationIds/xgSc:Guid und liefert die Guid a518e125-9687-4aec-a564-f2612eef1fac.
Würde man stattdessen den inkorrekten XPath-Ausdruck CorrelationIds ohne die Angabe des Guid-Anteils verwenden, so würde dieser in dem vorliegenden Fall ebenfalls die Guid a518e125-9687-4aec-a564-f2612eef1fac als Ergebnis liefern.
<CorrelationIds>
<guid>a518e125-9687-4aec-a564-f2612eef1fac</guid>
<guid>59433ac3-d3b5-45e6-ac7d-a37cad7e936d</guid>
<guid>ba5cc9a9-15e7-455d-b6a9-049ad4c02a2d</guid>
</CorrelationIds>
Enthält das Event jedoch mehrere Guids, so liefert der korrekte XPath-Ausdruck ein Array von Guids, auf dem ein sinnvoller Vergleich möglich ist. Der inkorrekte XPath-Ausdruck liefert jedoch einen String zurück, in dem alle Guids konkateniert sind. Ein Vergleich mit dem im WebModeler konfigurierten Wert scheitert dann.