W3C home > Mailing lists > Public > www-voice@w3.org > October to December 2011

SCXML entry order

From: Carlos Verdes <cverdes@gmail.com>
Date: Tue, 29 Nov 2011 23:53:49 +0000
Message-ID: <CAMZOHDPFeoF6Jd2TF1FEcUwvY9Gef0pRUraNoSD8zZ00BSDPZg@mail.gmail.com>
To: Jim Barnett <Jim.Barnett@alcatel-lucent.com>, www-voice@w3.org
Hi Jim,

I'm trying to implement SCXML in Java, and is crazy that I started with
this because I used to work for CSC with people from Alcatel and their
state machine oriented platform for intelligent networking.

Now I have a simple question about entry order I hope you could answer.

If we have the state machine:
<parallel id="P">
    <state id="S1">
        <state id="S11"/>
        <state id="S12"/>
    </state>
    <state id="S2">
        <state id="S21"/>
        <state id="S22"/>
         <transition event="e" target="S22" />
    </state>
    <state id="S3">
        <state id="S31"/>
        <state id="S32"/>
    </state>
      <transition event="e" target="S32" type="internal"/>
</parallel>

Which should be the entry order?

If I interprets ancestors before I should do like:
P-->S1-->S2-->S3-->*S11-->S21--S31*

But for me it has more sense:
P-->S1-->*S11*-->S2-->*S21*-->S3-->S31

Which is the same as document order... which is the proper one?


And I have another question about this part of the algorithm
procedure enterStates(enabledTransitions)
....

for s in statesToEnter:
        statesToInvoke.add(s)

statesToEnter = statesToEnter.toList().sort(enterOrder)


When we add states in statesToInvoke we are not following any concrete
order, however statesToEnter is an ordered set.
Should be this order the document order, or insertion order in states to
enter?

To put an example with the previous configuration [P,S1,S11,S2,S21,S3,S31],
event e occur:
---------------------
atomicStates [S11,S21,S31]
S11 has no transition, go to parent S1, no transitions, parent P enables
transition P-->S32
S2 enables transition S2-->S21
enabledTransitions[P-->S32, S2-->S21]

---------------------
transition1: P-->S32 internal
ancestor-->P (t.source)
statesToEnter [S32]

getProperAncestors(S32) -->[S3]
statesToEnter[S32,S3]

S3 is not parallel --> next transition

---------------------
transition 2: S2-->S21
ancestor --> P (LCA)
statesToEnter[S32,S3,S21,S2]

-----------------------------------
And do for s in statesToEnter:

        statesToInvoke.add(s)

statesToEnter = statesToEnter.toList().sort(enterOrder)

So
statesToInvoke[S32,S3,S21,S2]
statesToEnter[S2,S3,S21,S22] or [S2,S21,S3,S31]



Could you please give me some light on this scenario please?

Regards,
Carlos Verdes.
Received on Thursday, 1 December 2011 09:34:09 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 1 December 2011 09:34:15 GMT