commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ouyang, Landon - ES/RDR -Gil" <Landon.Ouy...@itt.com>
Subject RE: [SCXML] W3C specs compatibility and state transition issues
Date Fri, 11 Apr 2008 21:01:18 GMT
I figured out the solution:

I needed to remove the event properties from the conditional
transitions. So if I change the state to:

<state id="six">
        <datamodel>
                <data name="result">
                        <value>0</value>
                </data>
        </datamodel>
 <transition cond="result.value eq '1'" target="zero"/>
 <transition cond="result.value eq '0'" target="five"/>
 <transition target="three" event="display.prev"/>
</state>

the code will work! Am I missing any other crucial details?

--
Landon Ouyang
Member Technical Staff
ITT Electronics Systems, Radar Systems - Gilfillan
7821 Orion Ave,
Van Nuys, CA 91406
(818) 901-2982


-----Original Message-----
From: Ouyang, Landon - ES/RDR -Gil [mailto:Landon.Ouyang@itt.com]
Sent: Friday, April 11, 2008 1:34 PM
To: Jakarta Commons Users List
Subject: RE: [SCXML] W3C specs compatibility and state transition issues

Hi Rahul,

Thanks for the quick and helpful response. I am still having trouble
creating a conditional state transition. Using your example, I added a
conditional transition in my XML file as follows:

<state id="six">
<datamodel>
        <data name="result">
                <value>0</value>
        </data>
</datamodel>
 <transition cond="$(result.value eq '1')" target="zero"
event="display.next"/>
 <transition cond="$(result.value eq '0')" target="seven"
event="display.next"/>
 <transition target="five" event="display.prev"/>
</state>

My handler for state 6 is the following:
public void six(){
      getEngine().getRootContext().set("result.value", "1");
        }

I have a NEXT button in my GUI that fires off the 'display.next' event.
In state 5, I hit this NEXT button and this code gets executed. I would
assume that when I hit the NEXT button again I should be in state 0, but
instead I stay in state 6 indefinitely!

Can you tell me what I am doing wrong?

--
Landon Ouyang
Member Technical Staff
ITT Electronics Systems, Radar Systems - Gilfillan
7821 Orion Ave,
Van Nuys, CA 91406
(818) 901-2982

-----Original Message-----
From: Rahul Akolkar [mailto:rahul.akolkar@gmail.com]
Sent: Thursday, April 10, 2008 6:22 PM
To: Jakarta Commons Users List
Subject: Re: [SCXML] W3C specs compatibility and state transition issues

On Thu, Apr 10, 2008 at 8:30 PM, Ouyang, Landon - ES/RDR -Gil
<Landon.Ouyang@itt.com> wrote:
> Apologize for the duplicate e-mail, I had to be schooled on the proper
format by Mr. Cooper. :)
>
>
> I am a new user of Commons SCXML. I have two very basic questions:
>
> 1)      How much of the W3C specs for SCXML is supported with Common
SCXML? Are all of the tags recognized?
>
<snip/>

Not supported:
  <anchor> (supporting this one is optional for engines)
  <validate>

Experimental (due to missing pieces in draft spec, see TBD markers for
example):
  <invoke>


> 2)      Basing my code off of the simple stopwatch example, I created
a simple Java app that navigated across 10 states. I noticed that if I
put any code in the state handler methods that fires off events to
transition to other states, the application still thinks I am in the
*previous* state! For example, if I am in the state 5 subroutine and
fire off an EVENT_NEXT event to go to state 6, the app actually keeps me
in state 5 because it still thinks I am in state 4! Is it true that the
state machine transitions *after* the handler for the new state is
called? If so, how do I put custom code so that the state can make
transition decisions based on certain conditions?
>
<snap/>

You'd have to do that asynchronously (the executor is still processing
the earlier event). However ...

I'd store the result of "certain conditions" in the datamodel, and
query the datamodel later, like so:

public void foo() { // handler for state "foo"

    // check certain conditions, create someresultbean

    getEngine().getRootContext().put("fooresult", someresultbean);
}

And further, in a totally fictitious example:

<state id="foo">
    <transition cond="fooresult.success" target="bar"/>
    <transition cond="fooresult.numfailures gt 2" target="exit"/>
    <transition cond="not fooresult.success" target="foo"/> <!-- try
again -->
    <!-- foo's other content -->
</state>

-Rahul


>
>
> --
> Landon Ouyang
> Member Technical Staff
> ITT Electronics Systems, Radar Systems - Gilfillan
> 7821 Orion Ave,
> Van Nuys, CA 91406
> (818) 901-2982
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


This e-mail and any files transmitted with it may be proprietary and are
intended solely for the use of the individual or entity to whom they are
addressed. If you have received this e-mail in error please notify the
sender. Please note that any views or opinions presented in this e-mail
are solely those of the author and do not necessarily represent those of
ITT Corporation. The recipient should check this e-mail and any
attachments for the presence of viruses. ITT accepts no liability for
any damage caused by any virus transmitted by this e-mail.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


This e-mail and any files transmitted with it may be proprietary and are intended solely for
the use of the individual or entity to whom they are addressed. If you have received this
e-mail in error please notify the sender. Please note that any views or opinions presented
in this e-mail are solely those of the author and do not necessarily represent those of ITT
Corporation. The recipient should check this e-mail and any attachments for the presence of
viruses. ITT accepts no liability for any damage caused by any virus transmitted by this e-mail.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message