On Tue, Mar 1, 2011 at 6:57 PM, Jacob Beard <jbea...@cs.mcgill.ca> wrote: > Please keep an eye on the www-voice thread. I think there may still be > problems with the current step algorithm, and I'm drafting a reply to > elaborate on this. > <snip/>
Sure. -Rahul > Thanks, > > Jake > > On Tue, Mar 1, 2011 at 6:50 PM, Rahul Akolkar <rahul.akol...@gmail.com> wrote: >> On Sun, Feb 27, 2011 at 11:51 AM, Jacob Beard <jbea...@cs.mcgill.ca> wrote: >>> Hi, >>> >>> I'm currently working on revising scxml-js so that it implements the >>> semantics defined by the step algorithm of the SCXML specification (as >>> opposed to the mixture of SCXML semantics and Rhapsody semantics which >>> it currently implements). I've run into a part of the step algorithm >>> which is somewhat unclear, and because it may relate to a limitation >>> in the Commons SCXML implementation, I thought I would ask about this >>> on the Commons SCXML list before asking about it on the w3-voice list. >>> >>> Consider the following SCXML document: >>> >>> <scxml initial="p"> >>> >>> <parallel id="p"> >>> >>> <history id="h"> >>> <transition target="A.2 B.2"/> >>> </history> >>> >>> <state id="A" initial="A.1"> >>> <state id="A.1"/> >>> <state id="A.2"/> >>> </state> >>> >>> <state id="B"> >>> <state id="B.1"/> >>> <state id="B.2"/> >>> </state> >>> >>> </parallel> >>> >>> </scxml> >>> >>> (https://gist.github.com/846316) >>> >>> >>> I believe the step algorithm in the SCXML specification would >>> interpret the document in the following way: >>> >>> addStatesToEnter would at some point be called for parallel state p. >>> addStatesToEnter would then be called recursively for each of p's >>> children: h, A, B. >>> >>> addStatesToEnter would first be called for h. Because this is the >>> first time h was entered, addStatesToEnter will be recursively called >>> for each of the targets of its default transition: A.2 and B.2. A.2 >>> and B.2 will then be added to statesToEnter. >>> >>> addStatesToEnter would then be called for state A. A is a compound >>> state, so addStatesToEnter would then be called for A's initial state: >>> A.1. A.1 would then be added to statesToEnter. >>> >>> The same would occur for B, and so B.1 would be added to statesToEnter. >>> >>> The resulting configuration would then be: p,h,A,B,A.1,A.2,B.1,B.2, >>> which is not a legal configuration, as A and B are both OR states. >>> >>> >>> >>> Is my interpretation of the specification correct, in that the step >>> algorithm would allow this illegal configuration, or am I missing >>> something? >>> >>> >>> >>> I'm asking this question here, rather than on the w3-voice list, >>> because I believe Commons SCXML does not currently support history in >>> parallel: >>> http://mail-archives.apache.org/mod_mbox/commons-user/201001.mbox/%3cce1f2ea81001131340w2aaaf5bfs84b9db2252287...@mail.gmail.com%3E >>> >>> It's not clear whether this is due to possible conflicts in SCXML >>> semantics, or whether this is simply Commons SCXML implementation >>> lagging a bit behind changes in the specification. >>> >> <snip/> >> >> Its lag. I believe you have your answer on w3-voice, if not, let me >> know and I'll look further. >> >> -Rahul >> >> >>> I'd appreciate any guidance you can offer. Thanks, >>> >>> Jake >>> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org