R1050 - modelint/shlaer-mellor-metamodel GitHub Wiki

R1050 / 1:1c

Action outputs zero or one Sequence Flow

Sequence Flow is output by exactly one Action


An upstream Action may define a named Sequence Flow that prevents one or more downstream Actions from beginning execution until the upstream Action has completed. Ordinarily, a sequential dependency could be achieved implicitly through a Data Flow or Condition Flow. But in this case, there is no such dependency and so an explicit sequence, absent any other obvious dependency as described above, is defined.

The output Sequence Flow essentially means 'wait on for this Action to complete' which is either the case or not. Therefore, there can be at most one such output for any given Action. But multiple downstream Actions may be sequenced by the Action outputting the Sequence Flow. If none are sequenced, then the 'wait on this Action to complete' is non-existent.

The upstream (source) Action outputs single Sequence Flow which delays any downstream Action taking the Sequence Flow as an input until the upstream Action has completed execution.

A given Sequence Flow must enable at lease one Action otherwise there is no actual Sequence Dependency and, hence, no actual Sequence Flow.

Formalization

Sequence Flow.(Source action, Activity, Domain) -> Action.(ID, Activity, Domain)