Korrelation von Messages
Eine Korrelation dient dazu, zusammengehörige Messages derselben Prozessinstanz zuzuordnen. Eine Korrelation verknüpft Messages, die für ein oder mehrere XML-Elemente denselben Wert aufweisen. Eine Korrelation ist also eine lose Kopplung von Messages: Über eine Korrelation können Sie zur Definitionszeit festlegen, auf welche Message ein Empfangsschritt wartet, ohne dass die Message-ID bekannt sein muss.

In einem Prozess empfängt beispielsweise Empfangsschritt_1 die Message Bestellung, Empfangsschritt_2 die Message Auftrag. Empfangsschritt_1 erzeugt eine Korrelation, die festlegt, dass der zugehörige Auftrag dieselbe Bestellnummer enthalten muss. Empfangsschritt_2 verwendet diese Korrelation. Dadurch verarbeitet eine Instanz des Prozesses jeweils eine Bestellung und den Auftrag, der dieselbe Bestellnummer enthält.
Eine Message kann von mehreren Prozessen verarbeitet werden, wenn sie die entsprechenden Korrelationen erfüllt. Eine Message wird pro Prozess jedoch nur einmal zugestellt.
In einer Korrelation legen Sie fest, über welche Elemente die entsprechenden Messages korreliert werden sollen. Dazu definieren Sie die Elemente im Korrelationscontainer. Dann geben Sie eine oder mehrere Messages an, die zur Laufzeit die Korrelation erfüllen können. Pro Message legen Sie fest, aus welchen XML-Elementen der Payload der Message die Elemente des Korrelationscontainers gefüllt werden.
Die Messages, die die Korrelation erfüllen können, müssen
die Werte im selben Format liefern. Ist dies nicht der Fall, müssen Sie zuerst
ein
Werte-Mapping
vornehmen, wie folgendes Beispiel erläutert:

Sie möchten für Message_A und Message_B eine Korrelation über das Bestelldatum definieren. Business-System A liefert in Message_A das Bestelldatum im Format TT.MM.JJJJ, Business-System B liefert in Message_B dagegen das Bestelldatum im Format JJJJ.MM.TT. Bevor die entsprechenden Messages in den Integrationsprozess gelangen, müssen Sie ein Werte-Mapping definieren, das für das Bestelldatum in beiden Messages ein einheitliches Format für die Datumswerte liefert.
Eine Korrelation kann von einem Empfangsschritt oder von einem Sendeschritt aktiviert werden. Dazu geben Sie in dem Empfangs- bzw. Sendeschritt die zu aktivierende Korrelation an und legen fest, wie der Korrelationscontainer zur Laufzeit gefüllt werden soll. Dazu steht der gesamte Prozesscontainer zur Verfügung (siehe auch: Container). Für die aktivierte Korrelation wird automatisch ein eindeutiger Schlüssel (GUID) erzeugt und persistiert.
Eine Korrelation kann in einem Empfangsschritt verwendet werden. Dazu geben Sie in dem Empfangsschritt die zu verwendende Korrelation an. Zur Laufzeit wird der Korrelationscontainer wie in der Korrelation definiert mit den Daten der empfangenen Message gefüllt. Das System erzeugt eine Korrelation, vergleicht diese mit den vorhandenen GUIDs und ordnet die Message der Prozessinstanz mit derselben GUID zu.
Innerhalb einer Schleife kann eine Korrelation vom selben Empfangsschritt erzeugt und verwendet werden (siehe auch: Beispiel: Messages eines Interfaces sammeln und bündeln).
Eine Korrelation ist normalerweise innerhalb des gesamten Prozesses gültig und kann im gesamten Prozess aktiviert und verwendet werden. Sie können eine Korrelation jedoch auch als lokale Korrelation definieren, indem Sie sie einem bestimmten Block zuordnen. Eine lokale Korrelation kann nur in dem Block, dem sie zugeordnet ist, aktiviert und verwendet werden. Lokale Korrelationen können z. B. in Blöcken mit dynamischer Verarbeitung verwendet werden, um für jede Blockinstanz die Verarbeitung eines eigenen Werts für die Korrelation zu ermöglichen.
1. Geben Sie im Objektbereich des grafischen Prozess-Editors den Namen der Korrelation ein.
Der Name muss innerhalb des Prozesses eindeutig sein.
2.
Klicken Sie auf
(Details).
Der Korrelationseditor wird im Editierbereich angezeigt.
3. Definieren Sie unter Korrelationscontainer die Elemente, über die die Messages korreliert werden sollen.
4. Wählen Sie unter Beteiligte Messages die Messages, die zur Laufzeit die Korrelation erfüllen können.
5. Geben Sie über den Ausdruckseditor für jede Message an, durch welches Element der Message die entsprechenden Elemente des Korrelationscontainers gefüllt werden sollen.
Dazu können Sie Kontextobjekte oder XPath-Angaben verwenden.
Siehe auch: