commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rahul Akolkar" <rahul.akol...@gmail.com>
Subject Re: SCXML error
Date Thu, 12 Apr 2007 18:16:03 GMT
Please discuss before filing JIRA tickets (unless you are fairly
confident of a bug in the codebase). I've closed SCXML-42 [1] and
SCXML-43 [2], we can reopen one of them if this is indeed a problem
that needs to be fixed (doesn't seem like that at first glance).

I've inlined my response below:

On 4/12/07, Rajendran, John Tom (STSD) <john.rajendran@hp.com> wrote:
> Hi there,
> While implementing the parallelism in SCXML we are encountering an
> exception which I am attaching herewith. Is there any work around for
> this.
>
<snip-top-of-log/>
>
> 2007-04-12 11:52:45,109 WARN
> [org.apache.commons.scxml.env.SimpleErrorReporter] NON_DETERMINISTIC
> (Multiple conflicting transitions enabled.):  [transition (event =
> CreateATaskEvent, cond = _eventdata.slotAvailable=true, from =
> /testMain/null/slotState/MSlotInitState, to =
> /testMain/null/slotState/MSlotHeldState.aquireSlot), transition (event =
> CreateATaskEvent, cond = !_eventdata.slotAvailable, from =
> /testMain/null/slotState/MSlotInitState, to =
> /testMain/null/slotState/MSlotQueuedState.queueSlot), transition (event
> = CreateATaskEvent, cond = _eventdata.slotavailable=true, from =
> /testMain/null/slotState/MSlotInitState, to =
> /testMain/null/slotState/MSlotLockedState.lockSlot)]
> 2007-04-12 11:52:45,109 WARN
> [org.apache.commons.scxml.env.SimpleErrorReporter] ILLEGAL_CONFIG
> (Multiple OR states active for state slotState):
> /testMain/null/slotState :
> [/testMain/null/slotState/MSlotHeldState.aquireSlot,
> /testMain/null/slotState/MSlotQueuedState.queueSlot,
> /testMain/null/slotState/MSlotLockedState.lockSlot]
> 2007-04-12 11:52:45,109 ERROR [com.hp.m.msched.core.MSlotTaskFSM]
> Illegal state machine configuration!
> org.apache.commons.scxml.model.ModelException: Illegal state machine
> configuration!
>
<snip-trace/>

As indicated in the messages above, this state machine has reached an
error condition (non-determinism) due to multiple candidate
transitions being followed, each leading to states which do not belong
to individual regions of the same parallel.

This usually happens due to one of two reasons:

 * The model itself is flawed (hence the SCXML description can lead to
non-determinism)
 * The expressions representing the guard conditions are not doing
what the author intends

I suspect the latter in this case. It looks like you are using JEXL as
the expression language, in which case this fragment that you posted
to SCXML-43 [2] seems to be a problem:

    <transition event="CreateATaskEvent"

cond="_eventdata.slotAvailable=true"

target="MSlotHeldState.aquireSlot" />
    <transition event="CreateATaskEvent"

cond="_eventdata.slotavailable=true"

target="MSlotLockedState.lockSlot"/>
    <transition event="CreateATaskEvent"

cond="!_eventdata.slotAvailable"

target="MSlotQueuedState.queueSlot" />

The first two transitions seem to have the same guard (perhaps, the
casing of 'slotavailable' is different, maybe thats a typo). Moreover
you are using assignment (=) rather than equality (==). I generally
recommend using the 'eq' operator in JEXL rather than = signs anyway.
Try correcting those bits, providing mutually exclusive guards (as the
model you attached to JIRA seems to have), and see if it fixes the
behavior. For reference, the JEXL syntax is here [3].

As an aside, in the next release of Commons SCXML, non-determinism
will be resolved by document order preference as indicated in the
latest version of the W3C SCXML Working Draft.

-Rahul

[1] http://issues.apache.org/jira/browse/SCXML-42
[2] http://issues.apache.org/jira/browse/SCXML-43
[3] http://jakarta.apache.org/commons/jexl/reference/syntax.html

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


Mime
View raw message