Wenn Sie beim Verwenden von schlüsselbasiertem Merge parallele Prozesspfade wieder zusammenführen möchten, müssen Sie für das Startereignis des zusammenführenden Fragments mehrere Merge-Schlüssel für die Endereignisse der Vorgängerfragmente berechnen. Im XML-Element multikey geben Sie hierfür ein mehrwertiges Attribut und ein Trennzeichen an. Mehrwertig bedeutet, dass der Wert des angegebenen Attributes mit Hilfe des Trennzeichens in mehrere Teile aufgespalten wird. Für jeden Teil wird ein Merge-Schlüssel berechnet.
Beispiel
Die Fragmente einer Prozessinstanz sind über die Merge-Attribute THIS_KEY und PREV_KEY miteinander verknüpft. Der Schlüssel zum Vorgänger wird im Attribut PREV_KEY gespeichert. Wenn ein System-Event mehrere Vorgänger hat, wird jeder Schlüssel der Vorgänger im Attribut PREV_KEY mehrfach in die Protokolldatei geschrieben. Das verwendete Attribut-Mapping ist so konfiguriert, dass das Attribut PREV_KEY mehrwertig als AT_KEY an den Merge-Ereignissen instanziiert wird.
Die Extraktion aus Ihrem Quellsystem enthält folgendes System-Event:
...
<attribute type="EVENTTYP">Change customer order</attribute>
<attribute type="PROC_ID">123456</attribute>
<attribute type="THIS_KEY">3</attribute>
<attribute type="PREV_KEY">1</attribute>
<attribute type="PREV_KEY">2</attribute>
<attribute type="USER">Team A</attribute>
...
Die verwendete Mapping-Datei enthält folgendes Attribut-Mapping für Start- und Endereignisse:
...
<!-- mapping startevents -->
<attribute ppmattributetype="AT_KEY">
<multieventattributetype delimiter=";">PREV_KEY</multieventattributetype>
</attribute>
<!-- mapping endevents -->
<attribute ppmattributetype="AT_KEY">
<eventattributetype>THIS_KEY</eventattributetype>
</attribute>
...
Die aktive Merge-Konfiguration enthält folgende Regel:
...
<mergekeyrule>
<refobjects>
<refobject objecttype="OT_EVT"></refobject>
</refobjects>
<keyparts>
<multikey attributetype="AT_KEY" delimiter=";" />
</keyparts>
</mergekeyrule>
...
Im Fragment, dessen Startereignis ein Attribut THIS_KEY mit dem Wert 3 hat, werden die Vorgängerfragmente zusammengeführt, deren Endereignisse ein Attribut THIS_KEY mit dem Wert 1 bzw. 2 haben.
Nach dem Zusammenführen von Fragmenten werden die Attribute unverändert übernommen, d. h. die entstandene Gesamtmenge der Teilschlüssel wird nicht konsolidiert an das Merge-Attribut des verbleibenden Ereignisses zurück geschrieben.
Beispiel
Wenn Sie beispielsweise ein Regelwerk verwenden, das aus dem Multivalue-Attribut AT_KEY einen Merge-Schlüssel berechnet, und AT_KEY am System-Event A den Wert x;y und an System-Event B den Wert y;z hat, hat das Attribut AT_KEY den Wert des Attributes von System-Event B, unter der Annahme, dass System-Event B das später importierte ist. Das Zusammenführen von Fragmenten bleibt davon unberührt, da Fragmente über bereits beim Import berechnete Merge-Schlüssel zusammengeführt werden.