Action - modelint/shlaer-mellor-metamodel GitHub Wiki

Statements in an action language such as Scrall must be parsed into a set of Actions.

An Action is a unit of computation that takes a set of inputs and produces a set of outputs. The empty set is possible in either or both cases.

Each input and output is a Flow and the required Flows and flow types (Data, Control, Instance, etc) are defined by each Action.

Typically, each Action is defined either in its own class model subsystem or as a component of some class model subsystem.

While a statement in an action language has a structure and syntax specific to that language, Actions represent metamodel semantics defined independently of any action language. Thus you can define your own action language, or adapt some existing action language by having it populate the same, or at least as subset, of the Actions defined here in the Shlaer-Mellor Metamodel.

An Action may also require non-flowing data available prior to run-time which never changes. The Traverse Action, for example, requires the specification of a Path to navigate. The Path specifies a series of Hops through the metamodel to travel from an input instance set to an output instance set. While the instance set vary during runtime, the path never changes.

To find out how any particular Action is specified, see the relevant action language class model subsystem.

Identifiers

  1. ID + Activity + Domain

Attributes

ID

Each Action is assigned a unique number within its Activity in the format: ACTN1, ACTN2, ...

Type: Action ID -> Nominal('ACTN') -> Text