Advanced Control Flow Relating Interactions
In addition to the basic control flow constructs, there are advanced control
flow constructs in Let’s Dance. Several interactions can belong to a composite
interaction. None of the contained interaction instances can become enabled
before the enclosing composite interaction instance has become enabled, and
the composite interaction instance can only complete after all contained interaction
instances have completed or been skipped.
Interactions can also be guarded, meaning that at the moment an interaction
instance could become enabled, a guard condition must be fulfilled. If this
condition is not fulfilled, the instance is skipped. Finally, repetitions and parallel
branching with an unbounded number of branches are modelled through
repeated interactions. There are four types of repeated interactions, similar
to those in programming languages: while, repeat, for each (sequential), and
for each (concurrent).
“For each” repetitions have an expression attached that determines a collection
over which the repetition is performed. The knowledge about how
many instances are to be created for this interaction might be available at
design time or might be known only at run time.
Repetitions can have stop conditions attached to them. For instance, a
repeated receive interaction should be stopped as soon as answers from ten
participants have arrived.
The expressions attached to guarded and repeated interactions can be
written in plain English, as Let’s Dance is not tied to any specific expression
language. However, it must be defined which actor is going to check whether
a condition evaluates to true or which collection results from a repetition
After a buyer has submitted her order to a supplier, the supplier
sends back an order response for every item in the order. After all responses
have been sent, the order cannot be cancelled by the buyer.
This desired semantics of the process choreography is expressed through
the inhibits relationship from the Order Response interaction to the Cancel Order interaction. If a cancellation is issued by the buyer on time, the supplier
can decide whether it can still be cancelled or not.
If cancellation is still possible, the remaining order responses are skipped
and the buyer does not need to pay. In the case where cancellation is not
possible, a corresponding rejection notice is sent to the buyer and the buyer
has to pay for the order. The buyer notifies the supplier through a payment