Metamodel user guide
The Complex Gateway can be used to model complex synchronization behavior. An Expression activationCondition is used to describe the precise behavior. For example, this Expression could specify that tokens on three out of five incoming Sequence Flow are needed to activate the Gateway. What tokens are produced by the Gateway is determined by conditions on the outgoing Sequence Flow as in the split behavior of the Inclusive Gateway. If token arrive later on the two remaining Sequence Flow, those tokens cause a reset of the Gateway and new token can be produced on the outgoing Sequence Flow. To determine whether it needs to wait for additional tokens before it can reset, the Gateway uses the synchronization semantics of the Inclusive Gateway.
Figure 66 : ComplexGateway class diagram
|string ActivationExpression [1..1]|
An activationExpression is a boolean Expression that refers to data and to the activationCount of incoming gates. For example, an activationExpression could be x1+x2+?+xm >= 3 stating that it needs 3 out of the m incoming gates to have a token in order to proceed. To prevent undesirable oscillation of activation of the Complex Gateway, ActivationCount variables should only be used in subexpressions of the form expr >= const where expr is an arithmetic Expression that uses only addition and const is an Expression whose evaluation remains constant during execution of the Process.
|DefaultFlow : BpmnSequenceFlow [0..1]|
The Sequence Flow that will receive a token when none of the conditionExpressions on other Sequence Flow evaluate to true. The default Sequence Flow should not have a conditionExpression. Any such Expression SHALL be ignored.