R1051 - modelint/shlaer-mellor-metamodel GitHub Wiki

R1051 / M:Mc-1

Control Flow enables zero, one or many Action

Action is enabled by zero, one or many Control Flow


Many text action languages, including Scrall, employ the concept of an action block. This is a list of Actions enclosed in brackets or some other grouping syntax.

But an action block is only relevant to the line by line nature of textual representation. When you think in terms of data flow semantics, such as a data flow diagram, it is sufficient to feed the same condition flow (often represented by a dashed arrow) into multiple actions. That's what this relationship is modeling.

A given Control Flow must enable at least one Action because if it didn't there would be no need for the Control Flow.

Furthermore, the same Action may be enabled by any number of different conditions, including none at all. An Action with no control input simply executes as soon as its input data is available.

By analyzing the resultant data flow graph, it should be possible to reconstruct whatever nesting is required to present the same logic in a textual action language format.

Here, of course, we are only interested in the semantics necessary to support any kind of visual representation.

Formalization

Control Dependency.(Control flow, Activity, Domain) -> Control Flow.(Flow, Activity, Domain)
Control Dependency.(Action, Activity, Domain) -> Action.(ID, Activity, Domain)