About OR Join Behavior (Synchronized vs. Unsynchronized)
The behavior of OR joins differs between Process Engine version 7.x and Process Engine version 8.0 and later. If you intend to import process models from version 7.x into version 8.0 or later, be aware of the following points:
In
Process Engine version 7.x, the OR join is referred to as an
unsynchronized OR. In this case, the join is satisfied immediately upon arrival of a valid input. However, if multiple inputs arrive, an output is generated for each of the inputs, resulting in multiple outputs; in other words, the join can be satisfied more than one time.
Note: The failure of an unsynchronized OR join step for any reason, including an unsatisfied join, always results in a dead path notification. In Process Engine versions 9.6 and earlier, a process-level option was available to enable or suppress dead path notifications for unsynchronized OR join steps. This option is no longer available in versions 9.7 and later. A model imported from earlier versions into version 9.7 and later may behave differently because of this change. In this cases, you must modify your process model to accommodate this change.
In
Process Engine version 8.0 and later, the OR join behaves as a
synchronized OR. As expected, the OR join is satisfied by one (or more) valid input transitions. However, the synchronized OR waits for
all input transitions to arrive (valid or dead path) before the join is evaluated. A synchronized OR has the ability to create multiple tracks through a process for every true inbound transition, where this is not possible with an unsynchronized OR join step. A synchronized OR step failure always results in a dead path notification.
When you import a version 7.x process model into a version 8.0 or later environment, any OR joins contained in the model will continue to function as unsynchronized OR joins, as described above.
Important: After you import the version 7.x process model, you are advised to determine whether an unsynchronized or synchronized OR join is the proper construct, depending on your process model.
For these reasons, you can select the join type Unsynchronized Or when you specify the join type for a step on the Joins page of the Property view.