Control nodes
The sequencing of action usages is controlled using control nodes. Control nodes are always connected to other action usages by incoming and outgoing successions (with or without guards). Kinds of control nodes include the following:
- Fork node
- Has one incoming succession and one or more outgoing successions.
- The actions connected to the outgoing successions cannot start until the action connected to the incoming succession has completed.
- Join node
- Has one or more incoming successions and one outgoing succession.
- The action connected to the outgoing succession cannot start until all the actions connected to the incoming successions have completed.
- Decision node
- Has one incoming succession and one or more outgoing successions.
- Once the action connected to the incoming succession has completed, exactly one of the actions connected to an outgoing succession can start based on the guard condition of the outgoing succession that is satisfied (the else condition is the complement of all other guard conditions). See the Guard conditions page.
- Merge node
- Has one or more incoming successions and one outgoing succession.
- The action connected to the outgoing succession cannot start until any one of the actions connected to an incoming succession has completed.
Creating control nodes
Creating control nodes via the Textual Editor
To create control nodes via the Textual Editor
- In the Textual Editor, place the cursor where you want to create the element and declare the keyword:
fork for a fork node.
- join for a join node.
- decide for a decision node
- merge for a merge node.
- (Optional) Specify the node name.
- Click the Synchronize button.
action transportPassenger {
first start;
then action enterVehicle;
then action startVehicle;
then mergeNode;
merge mergeNode; // named merge node declaration; it waits for the 'startVehicle' action to happen before continuing
then forkNode;
fork forkNode; // named fork node declaration; it enables all its successors to happen after it
then action driveVehicle; // the source of this succession is the fork node
then action providePower; // the source of this succession is the fork node
then joinNode;
then joinNode;
join joinNode; // named join node declaration; it waits for all its predecessors to happen before continuing
then action exitVehicle;
then decideNode;
decide decideNode; // named decide node declaration; typically followed by one or more conditional successions from which it chooses exactly one to happen after it
if anotherDestination then mergeNode; // references the merge node named 'mergeNode' as the target of the succession
else done;
}
Creating control nodes via the view palette
To create control nodes via the view palette
- In the view palette, under the Actions group, click one of the following:
fork for a fork node.
- join for a join node.
- decide for a decision node
- merge for a merge node.
- Click in the view pane where you want to create the node symbol.