Labeled Flow - modelint/shlaer-mellor-metamodel GitHub Wiki
Labeled Flows are analagous to temporary variables in a programming language.
Just like a variable, a Labeled Flow associates an input parameter or the output of some Action with a descriptive name.
In Scrall, for example we might see:
cabin in shaft .= /R2/Cabin
Here the output of a relationship traversal is labeled on the left hand side of an assignment.
Not all Flows need to be labeled. We'll often see a series of Actions propagating data on unlabeled flows since ew only care about the final result.
Identifiers
- ID + Activity + Domain
Attributes
Name
A descriptive name defined by the user in some action language.
While the Labeled Flows within the same Activity are often unique, there are some cases where it is helpful to reuse the same name.
For example, a Decision Action may propagate two distinct flows, one if the true case fires and another on the false case. In either case, the same label name is used. For example:
fwd dest? dest aslev .= fwd dest : dest aslev .= rev dest
Here we will have two distinct Labeled Flows each named dest aslev
since there are two distinct assignments. Both Flows are fed into a Gate Action since only one of the two assignments will fire in any given execution of the enclosing Activity. The Gate Action will pass its output to yet a third Labled Flow, also named dest aslev
. Conceptually there is only one piece of data flowing, but the resultant data flow diagram must still account for two possible assignments.
Type: Flow Name, based on String