|
Boost : |
Subject: [boost] [msm] internal/external conflicting transitions
From: Michael Caisse (boost_at_[hidden])
Date: 2009-12-06 22:35:59
Christophe -
The docs have a section on "Conflicting Transitions". It has
two conflicts described:
1. an event enables multiple transitions because
multiple guards test valid,
2. an internal and external transition are both enabled
I see a clear definition for the behavior of #1 in the
discussion; however, it is not clear that #2 will follow
the same rule.
It was actually a little surprising to me that the order
of the transition definitions affected #2. (Well, maybe
not surprising ... but not what I wanted). I used
the SimpleTutorial to test the behavior with:
a_row < Stopped , play , Stopped , &p::test_conflict >,
a_row < Stopped , play , Playing , &p::start_playback >,
a_row < Stopped , open_close , Open , &p::open_drawer >,
and
a_row < Stopped , play , Playing , &p::start_playback >,
a_row < Stopped , play , Stopped , &p::test_conflict >,
a_row < Stopped , open_close , Open , &p::open_drawer >,
The last transition defined "wins" in a conflict.
I believe that there is strong historical precedent that
internal transitions are always considered before external
transitions.
I suspect that if this is the behavior that I desire then
I can order the transitions so that internals are listed
last.
Perhaps some additional clarification for case #2 in the docs
would be helpful.
Thanks -
michael
-- ---------------------------------- Michael Caisse Object Modeling Designs www.objectmodelingdesigns.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk