Table 1: Constraints for split gateways.

Split gatewayProcess constraints

525121.table.001a- Only one of the activities may be started
context A inv: next->select(a a.oclIsTypeOf(B1) or or a.oclIsTypeOf(Bn))->size()<=1
- If is completed, at least one of the B1..Bn activities must be created before ending the case
context Case inv: status=‘completed’ implies activities-> select(a a.oclIsTypeOf(A) and a.status=‘completed’)-> forAll (a a.next- exists(b b.oclIsTypeOf(B1) or or b.oclIsTypeOf(Bn)))
525121.table.001b- Since several activities may be started, we just need to verify that if is completed, at least one of the activities is created before ending the case (like in the XOR split above)
525121.table.001c- If A is completed all activities must be eventually started context Case inv:status=‘completed’ implies activity- select(a a.oclIsTypeOf(A) and a.status=‘completed’)->forAll(a a.next->exists(b b.oclIsTypeOf(B1)) and … and a.next->exists(b b.oclIsTypeOf(Bn)))