Assignment Action - modelint/shlaer-mellor-metamodel GitHub Wiki
A collection of computational operations that, taken together, yields a single named result is an assignment.
When describing an Activity textually in a language such as Scrall, we use local variables to collect intermediate results.
Consider an example assignment in Scrall:
destination heights #= ((requested stops.(Floor, Shaft) + requested floors) ## Floor[Name >> Floor]).(Floor, Height)
Here we are using the #=
table assignment operator to place a table value in the destination heights
variable.
On the right hand side (RHS) of the assignment there is a nested expression consisting of multiple operands and operators that ultimately yield the assigned value.
The metamodel action semantics must be independent of any action language. To accomplish this, we think in terms of data flow semantics. So what we really see in our example is set of computational operations UNION +
, JOIN ##
and some relational restriction, projection, and attribute rename >>
operations.
Note that the outputs of many of these operations are unlabeled. It is only the final result of the RHS expression that is assigned a name on the LHS.
In data flow terms, we can think of each operator defining some computation that takes one or more data flow inputs. Each such input may be either a variable in which case we think of it as a labeled data flow, or the result of some other computation which is an unlabled data flow output. Think of each nested operation as yielding an labeld result.
Identifiers
- ID + Activity + Domain
Attributes
(No non-referential attributes)