commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ingmar Kliche" <>
Subject Re: [SCXML] XML engine decoupled from code
Date Tue, 29 Apr 2008 20:15:41 GMT

I'm not sure if your CheckRotation is really a state. To me it sounds more
like a guard condition (i.e. a condition) to decide which state to enter
(e.g. the state machine is in state A and some event arrives - which one ? -
then check the guard condition and decide to go to B or C). Could you
elaborate a little on your state machine. What is the event which
is triggered? What drives your state machine? Is it a timer which triggers
the engine on a regular basis? Or is it an external process that sends
events, or is it some user input, ...?

The information which you need to check (i.e. bRotating) seems to be
available in the container application (the one that embedds the SCXML
engine). Isn't it possible to pass this information (bRotating) along with
the event (i.e. as payload of the event) into the engine (something like
triggerEvent("???", bRotation))? In this case you could access bRotation
within the SCXML code:

<state id="A">
   <transition event="???" cond="_eventdata.bRotation == true" target="B"/>
   <transition event="???" cond="_eventdata.bRotation == false" target="C"/>

Or could you use a CustomAction to access bRotation?

There is certainly a solution for your problem, but it would help (at least
me) if you could describe a little more (if possible).

2008/4/29 Ouyang, Landon - ES/RDR -Gil <>:

> Hi,
> A conceptual issue has arisen after creating a working application that
> uses the Commons SCXML engine.
> Based on what we want out of the engine, it is essentially important
> that the code implementation (Java) is decoupled/independent of the
> underlying engine (XML file).
> To illustrate the problems I encountered, here is an example: there is a
> state called CheckRotation that can detect whether there is or isn't a
> rotation. We need the ability for a developer to be able to place this
> state anywhere in the state machine (possibly multiple times) and direct
> the state machine based on one of the two outcomes without having to
> write any Java code; he should only have to edit the XML file. For
> example, one path could be A -> CheckRotation -> C or D and another
> could be E -> CheckRotation -> F or G.
> We can modify the Java code so the CheckRotation method could fire
> different events to direct the path.
> if(PrevState == A)
> {
>        if(bRotating)
>                fireEvent(EVENT_C);
>        else
>                fireEvent(EVENT_D);
> }
> else if(PrevState == E)
> {
>        if(bRotating)
>                fireEvent(EVENT_F);
>        else
>                fireEvent(EVENT_G);
> }
> But this solution adds complexity and defeats the whole purpose of using
> the engine in the first place! The CheckRotation state would need
> multiple conditional transitions defined (instead of two) in the XML
> file and the Java code would be interlinked with the XML engine! Is
> there a more proper solution to this issue?
> --
> Landon Ouyang
> Member Technical Staff
> ITT Electronics Systems, Radar Systems - Gilfillan
> 7821 Orion Ave,
> Van Nuys, CA 91406
> (818) 901-2982
> 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:
> For additional commands, e-mail:

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message