-
Notifications
You must be signed in to change notification settings - Fork 0
State model semantics
With regard to state models, action language provides the ability to send a signal, possibly delayed, to a state machine instance and to access any parameter values received with a signal.
A signal must be directed to a single state machine instance.
A state machine instance is either a class instance or an association. In the case of a class instance, the state machine instance represents the lifecycle of that instance. For example, an aircraft instance takes off, flies around and then lands. An association state machine represents an assigner which manages competition on the association. For example, association R7 between classes Missile and Target executes an algorithm to bind two together since it wouldn’t be possible to let a Missile instance choose a Target or vice versa without resource locking or race conditions occurring. The assigner provides a necessary single point of control. So, yes, you can send a signal to an association (assuming it has an assigner state machine) in xUML.
An assigner is either single (identified by the association only) or multiple (identified by both the association and an instance of the assigner’s partitioning class). In the multiple assigner case, imagine that a Missile can track only those Targets within some Tracking Zone. In that case we need a separate assigner state machine instance for each Tracking Zone (the partitioning class). Each of these state machine instances is on the same association.
In the case of a lifecycle, an event is directed at a single class instance.
In the case of a single assigner, an event is directed at the association (R number).
In the case of a multiple assigner, an event is directed at the association with the target state machine identified by an instance of the partitioning class. In the Missile/Target example, we could send a signal to the R7 assigner state machine instance identified by Tracking Zone 22, let’s say.
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