A succession within the body of an action definition or usage may be given a guard condition represented as a Boolean expression, forming a conditional succession. A conditional succession asserts that the target action can start only if the guard condition is true. The conditional succession shorthand notation is particularly useful for notating several conditional successions outgoing from a Control nodes

Specifying guard conditions for successions

Specifying guard conditions for successions via the Textual Editor

To specify guard conditions for successions via the Textual Editor


  1. In the Textual Editor, place the cursor between the succession's source and target and declare the if keyword followed by the condition.

    • The target of a conditional succession must be specified as a qualified name or feature chain and cannot be a full action usage declaration, even when the shorthand notation is used.
    • You can specify multiple guards by declaring multiple conditional successions.
  2. (Optional) Declare the else keyword followed by its succession target. It indicates a succession to be taken if the guards evaluate to false.
  3. Click the Synchronize button.

// ------------ Full conditional succession

action transportPassenger {
    ...
    decide decideNode;   
    first decideNode;                                          // specifies the succession source 
    if anotherDestination then mergeNode;      // 'if anotherDestination' specifies a guard condition, followed by a succession 'then mergeNode'
    else done;                                                     // specifies a succession to be taken if the guard condition evaluates to false
}

 // ------------ Shorthand conditional succession 

action transportPassenger {
    ...
    decide decideNode;                                         // omits the succession source as it is identified from the lexically previous action 'decide decideNode'
        if anotherDestination then mergeNode;     // 'if anotherDestination' specifies a guard condition, followed by a succession 'then mergeNode'
        else done;                                                    // specifies a succession to be taken if the guard condition evaluates to false
}