R905 - modelint/shlaer-mellor-metamodel GitHub Wiki
R905 / Mc:Mc-1
Action produces output for zero, one or many Action
Action requires input from zero, one or many Action
When we execute an Activity, we need to determine the order in which it Actions can execute and which Actions can be executed in parallel.
The primary rule is that an Action cannot execute until all of its inputs are available.
Consequently, we need to know the input output dependencies among all the Actions within an Activity to work out the order of execution.
A Flow Dependency is established for any Flow that takes input from one Action and delivers it to some other Action within the same Activity.
An Action may not feed input directly to itself.
To be useful, an Action must take at least one input or produce one output.
Some inputs such as the executing instance flow or a class accessor flow do not originate from an Action. These Flows do not participate in a Flow Dependency, so we could more accurately call this an 'action to action flow dependency', but we'll keep it to the shorter name with that understanding.