Boost logo

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