If you want to merge parallel process paths again when using a key-based merge, you must calculate several merge keys for the end events of the preceding process fragments for the start event of the merging fragment. You specify a multi-valued attribute and a separator for this purpose in the multikey XML element. Multi-valued means that the value of the specified attribute is split into several parts using a separator. A merge key is calculated for each part.
Example
The fragments of a process instance are linked by the THIS_KEY and PREV_KEY merge attributes. The key for the predecessor is saved in the PREV_KEY attribute. If a system event has several predecessors, each key for the predecessors is written to the log file multiple times in the PREV_KEY attribute. The attribute mapping used is configured in such a way that the PREV_KEY attribute is instantiated with several values for the merge events as AT_KEY.
The data extraction from your source system includes the following 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>
...
The mapping file used contains the following attribute mapping for start and end events:
...
<!-- mapping startevents -->
<attribute ppmattributetype="AT_KEY">
<multieventattributetype delimiter=";">PREV_KEY</multieventattributetype>
</attribute>
<!-- mapping endevents -->
<attribute ppmattributetype="AT_KEY">
<eventattributetype>THIS_KEY</eventattributetype>
</attribute>
...
The active merge configuration contains the following rule:
...
<mergekeyrule>
<refobjects>
<refobject objecttype="OT_EVT"></refobject>
</refobjects>
<keyparts>
<multikey attributetype="AT_KEY" delimiter=";" />
</keyparts>
</mergekeyrule>
...
In the fragment whose start event has a THIS_KEY attribute with the value 3, the preceding fragments whose end events have a THIS_KEY attribute with the value 1 or 2 are merged.
After merging fragments, the attributes are transferred unchanged, i.e., the resulting set of sub-keys is not written back to the merge attribute for the remaining event in consolidated form.
Example
For example, if you are using rules that calculate a merge key from the multi-valued AT_KEY attribute, and AT_KEY has the value x;y at the system event A and the value y;z at the system event B, the AT_KEY attribute has the value of the attribute of the system event B, assuming that the system event B was imported later. Merging of fragments is unaffected by this, as fragments are merged using merge keys that are already calculated during the import.