Parallel paths with multi-valued keys

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.