-
Notifications
You must be signed in to change notification settings - Fork 0
Domain interactions
Interactions initiated by external domains invoke domain operations in the local domain. Interactions initiated by the local domain outward are mediated by operations on external entities. An external entity is a model element that serves as a proxy for an external domain.
Both external entity and domain operations are specified with action language.
A domain operation is defined much like a class method with input and output parameters. Domain operations are invoked synchronously so it is possible to produce output values.
The same action language used to yield output values in a class method activity can be used in a domain operation.
To interact with an external domain either a synchronous or an asynchronous operation may be invoked on an external entity.
An external entity serves as a proxy for the target domain. It may, or may not be named the same as that domain. For example, the ROBOT external entity might actually be connected to a Signal IO (SIO) domain.
An asynchronous operation does not produce any output parameters since it implies a deferred response from the external domain. To invoke this kind of operation, say from a state activity, an outgoing asynchronous signal is sent using the => symbol like this:
Open door( Shaft ID : Shaft ) => SIO
A synchronous operation may produce output parameters just like a class method or domain operation.
press status = SIO.Above inject pressure()
Here, the Above inject pressure()::Boolean operation is invoked on the SIO external entity. It completes and assigns a boolean result to the press status variable.
Copyright 2020, 2021, 2022, 2023, 2025 © Leon Starr under MIT Open Source License
- Why they are problematic
- Instance attribute creation values
- Boolean values
- Special values
- Enumerated values
- Action block
- Statement
- Single line action
- Multiple dependent actions on a single line
- An action spread across multiple lines
- A conditional group of single line actions
- Comments
- Finding instances
- Attribute access
- Creation and deletion
- Subclass migration
- Creating a table from a class
- Creating a table with a definition
- Converting a table into a class
- Set operations on tables
- Set comparisons on tables
- Join
- Rename
- Extend
- Aggregation
- Rank
- Image
- Input values
- Signatures and name doubling
- Output values
- Execution order
- Sequential execution
- Conditional execution
- Signals
- Scrall has no for_each action
- Iteration