R1057 - modelint/shlaer-mellor-metamodel GitHub Wiki

R1057 / M:Mc-1

Decision Action is based on input from one or many Data Flow

Data Flow provides input to zero, one or many Data Flow


The predicate defined by a Decision Action may take any number of data inputs, each supplied by a Data Flow.

It is not really possible to make a useful Decision on no input. Here are a couple of nonsense cases:

true? doA()  // This action will always be executed
false? doB() // This action will never be executed

The value of the above actions is dubious and so we require that every Decision Action take at least one input.

A given Data Flow may or may not provide input to any number of Decision Actions as there are many other possible consumers of a Data Flow.

Formalization

Decision Input.(Decision action, Activity, Domain) -> Decision Action.(Action, Activity, Domain)
Decision Input.(Flow, Activity, Domain) -> Data Flow.(Flow, Activity, Domain)