Show TOC

Korrelation: Zuordnung Messages zu Prozessinstanzen definierenLocate this document in the navigation structure

Verwendung

Eine Korrelation dient dazu, zusammengehörige Messages derselben Prozessinstanz zuzuordnen. Ein Integrationsprozess soll z. B. eine Bestellung und den zugehörigen Auftrag verarbeiten. Die Bestellung und der Auftrag enthalten jeweils dieselbe Bestellnummer. Um sicherzustellen, dass die Bestellung und der zugehörige Auftrag von derselben Prozessinstanz verarbeitet werden, definieren Sie eine Korrelation über die Bestellnummer. Folgendes Beispiel erläutert dies:

Tipp

In einem Prozess empfängt 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 ist sichergestellt, dass die Bestellung und der zugehörige Auftrag von derselben Prozessinstanz verarbeitet werden.

Korrelation

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 Sie die Message-ID kennen müssen.

Eine Message kann von mehreren Prozessen verarbeitet werden, wenn sie die entsprechenden Korrelationen erfüllt. Eine Message wird pro Prozess jedoch nur einmal zugestellt.

Definition einer Korrelation

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 (weitere Informationen: Werte-Mapping ). Folgendes Beispiel erläutert dies:

Tipp

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.

Korrelation aktivieren und verwenden

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. 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 (weitere Informationen: Beispiel: Messages eines Interfaces sammeln und bündeln ).

Gültigkeit einer Korrelation

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.

Weitere Informationen: Checkliste: Korrelationen richtig einsetzen

Vorgehensweise
  1. Geben Sie im Objektbereich des Prozess-Editors in der Liste der Korrelationen den Namen der Korrelation ein.

    Der Name muss innerhalb des Prozesses eindeutig sein.

    Weitere Informationen: Prozess-Editor

  2. Wählen Sie das Symbol mit Quick-Info Details.

    Der Korrelationseditor erscheint im Editierbereich.

  3. Definieren Sie unter Korrelationscontainer die Elemente, über die die Messages korreliert werden sollen.

    Um die Korrelation für obiges Beispiel zu definieren, legen Sie ein Containerelement für die Bestellnummer an.

  4. Wählen Sie unter Beteiligte Messages die Messages, die zur Laufzeit die Korrelation erfüllen können.

    Um eine Message anzugeben, wählen Sie das gewünschte Services-Interface bzw. die Operation des Service-Interfaches.

    Weitere Informationen: Service-Interface

  5. Geben Sie 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.