Appropriate Defaults for Action Successions
-
Key: SYSML21-349
-
Status: open
-
Source: Ansys Government Initiatives ( Mr. Richard Page)
-
Summary:
We need to update the defaults for owned non-abstract Actions to ensure expected interpretations of when and how Actions will start when executing their parent (owning Action, Part, or Occurrence).
Background:
Modelers creating SysML would like good defaults to make modeling Action sequences simple, easy to declare, and easy to interpret. In pursuit of this, we are considering several alternative proposals for updating the defaults for Actions and Successions between Actions. The main discussion stems around potential confusion in the case where some owned Actions have zero incoming successions (but are possibly expected to "start automatically").
In UML, Actions that did not require any incoming control or flow tokens would "start automatically" without requiring a control token. Essentially, they would not be blocked from starting by requiring them to wait for a control token. In SysMLv2, we no longer have control tokens and instead rely on Successions (HappensBefore connectors) to constrain the relative time ordering of behaviors. While it's clear (pending other RTF issues around end multiplicities) that the intent of a succession is to ensure that a target Occurrence occurs for every instance of a source Occurrence, it is less clear what would happen in the absense of any such succession.
Currently, the default multiplicity of Actions in SysML is inherited from KerML as [0..*]. As part of execution, there is some major question around whether there is any indication that such an action would occur at all with a lower bound multiplicity of zero. So, a model where the action does NOT execute is valid!
See attached for reference models. Consider the following textual models:
Explicitaction a0{ action a1{ out x1; } action a2{ in x1; } first start then a1; first start then a2; flow from a1.x1 to a2.x1; }
Implicit
action a0{ action a1{ out x1; } action a2{ in x1; } flow from a1.x1 to a2.x1; }
Mixed
action a0{ action a1{ out x1; } action a2{ in x1; } first start then a1; flow from a1.x1 to a2.x1; }
To address these concerns, we have the following proposals:
1. Require every action to be the target of a succession. This is precise but can significantly clutter the diagram as indicated in the example above that required adding a succession from the start node to a2.2. Introduce an execution rule that states that any action that is not the target of a succession will begin execution after the start of the containing action. This simplifies the diagram and is consistent with SysML v1 activity diagrams (including activity diagrams with streaming flows).
3. Leave as is. This requires modelers to declare a succession from start to the first action, or adding the multiplicity of such actions as [1..1] or [1..*] explicitly.
4. Formalize the default semantics without an execution rule as follows: “The default multiplicity of an action is [1..*]. This would mean that an action has no incoming succession it would start after a0 starts, The default multiplicity can still be overridden with 0..* if it is desired to start.
5. If and only if there are no successions from start, then any concrete actions that have no incoming successions, have default multiplicity 1..1 (or 1..*?). Conversely, if there are any successions from start, then the default multiplicity remains [0..*] and actions will not execute by default unless they are the target of a succession.
We will need to discuss and propose a specific solution regarding what we update in the specification itself. The goal is to standardize as much of the otherwise non-normative "execution rules" as possible.
-
Reported: SysML 2.0b2 — Fri, 5 Sep 2025 19:03 GMT
-
Updated: Fri, 5 Sep 2025 19:03 GMT
-
Attachments:
- ReferenceModels_2025-09-04.png 73 kB (image/png)