Skip to content

backmp11: Provide additional possibilities to defer events (?) #155

@chandryan

Description

@chandryan

Problem statement

MSM currently allows 2 ways to defer events:

  • Via a deferred_events property in a state and
  • Via an action within a transition

The first possibility is consistent with the UML standard, but the second one is not foreseen by it. While this mechanism supports more than what is foreseen by UML, such as conditional event deferrals with the help of guards in the transition, it leads to undesired (and likely unsolvable, see #72 for more details) issues:

  • due to the need to dispatch the event for evaluation, UML-compliant behavior cannot be ensured with this mechanism in orthogonal regions; events can be deferred and processed by different regions at the same time
  • the event has to be removed from the deferred events queue and dispatched for evaluation and then get pushed back to it, leading to potential issues wrt. deferred event orders in the queue - worst case to infinite recursion

Possible solutions

For backmp11 there are 2 possiblities to handle the problem:

  1. Remove support for event deferral as an action, as it's anyway not foreseen by UML
  2. Provide an alternative approach that allows deferral evaluation at runtime, but is more similar to the deferred_events state property

Feedback required ❗

Solution no. 1 "remove support" is currently targeted for the next Boost release 1.91, mainly because it's not clear whether this functionality is needed in the first place.

If a more sophisticated event deferral mechanism than described in the UML standard is needed, please provide feedback by stating your use case and your needs.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions