commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Madhwaraj Rao <madhwaraj_...@yahoo.com>
Subject Re: [SCXML] error reporting on invalid events
Date Thu, 05 Oct 2006 14:42:32 GMT
Hi Rahul,

Thanks for your suggested work arounds. I think the
count check on the SCXMLListener tracer would work for
e for now. But I am eagerly waiting for 0.6 with your
enhancement :-)

To clarify, if there had been an onEvent() callback, I
could have easily checked if the event made it. I was
considering events that do not effect to a state
transition (due to a condition, for example). Now,
with the work around, I will ensure that all events do
effect a state transition for now.

Also, thanks for your sugegstions on implementing role
based events. That was very helpful.

Regards
--
Raj

--- Rahul Akolkar <rahul.akolkar@gmail.com> wrote:

> On 9/29/06, Madhwaraj Rao <madhwaraj_rao@yahoo.com>
> wrote:
> > Hi Rahul,
> >
> > I found it difficult to implement your suggestion.
> > Events are asynchronous in my system, and having
> this
> > approach of first triggering an event, and
> verifying
> > that it resulted in a state transition (in an
> > EntryListener.onTransition()) is error prone. What
> if
> > an event didn't result in a state transition?
> >
> <snip/>
> 
> Then you know its "invalid" (I keep quoting it since
> there is no such
> thing, I'm just using the term in the context of
> your application).
> 
> 
> > Can you please sned me a code snippet with your
> > approach so I can really verify that it could be
> > applicable for me?
> >
> <snap/>
> 
> Sure. Here are examples of the workarounds I was
> talking about:
> 
> <example-1>
> 
> Set before =
> executor.getCurrentStatus().getStates();
> 
> // fire the event(s) ... executor.triggerEvent(...)
> etc.
> 
> Set after = executor.getCurrentStatus().getStates();
> 
> // compare before and after (ofcourse, won't work if
> there are self transitions)
> 
> </example-1>
> 
> -- OR --
> 
> <example-2>
> 
> // say tracer tracks the count of the number of
> transitions followed
> SCXMLListener tracer = new TransitionTracer();
> executor.addListener(scxml, tracer); // scxml is the
> oacsm.SCXML instance
> 
> int before = tracer.count();
> 
> // fire the event(s) ... executor.triggerEvent(...)
> etc.
> 
> int after = tracer.count();
> 
> // if after == before, invalid
> 
> </example-2>
> 
> etc. ...
> 
> 
> > Ideally, I would have liked a onEvent() callback
> in
> > the EntryListener.
> >
> <snip/>
> 
> Not sure I understand.
> 
> 
> > My other requirement is to prevent some events to
> > effect a state transition if the user role doesn't
> > have the right privileges.
> >
> <snap/>
> 
> Yes, this is a common requirement. You can implement
> it:
> 
>  * As a layer around Commons SCXML, using whatever
> means you choose to
> verify the user access rights as a function of the
> current user and
> current status of the state machine
> 
>  * As conditionals inside the SCXML document itself,
> guarding
> transitions and datamodel access appropriately
> (possibly using custom
> functions within the expression language chosen)
> 
> -Rahul
> 
> 
> > Thanks
> > --
> > Raj
> >
> > --- Rahul Akolkar <rahul.akolkar@gmail.com> wrote:
> >
> > > On 9/27/06, Madhwaraj Rao
> <madhwaraj_rao@yahoo.com>
> > > wrote:
> > > > Hello,
> > > >
> > > > I tried sending an invalid event to the state
> > > machine
> > > > and didn't see any error being reported. By
> > > invalid I
> > > > mean this event was not expected in the
> current
> > > state.
> > > >
> > > > Does the SCXMLSemanticsImpl report an error
> (via
> > > the
> > > > the ErrorReporter) when such an event is
> silently
> > > > discarded?
> > > >
> > > <snip/>
> > >
> > > No, because the semantics treat it as simply an
> > > inconsequential
> > > trigger (causing no change to the state
> machine),
> > > rather than an
> > > error.
> > >
> > > One of the ways you could track this is to
> register
> > > a SCXMLListener on
> > > the executor and track onTransition() callbacks
> (if
> > > you get none, the
> > > trigger is "invalid" -- per your definition
> above).
> > >
> > > -Rahul
> > >
> > >
> > > > Thanks
> > > > --
> > > > Raj
> > > >
> > >
> > >
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail:
> commons-user-help@jakarta.apache.org
> 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

---------------------------------------------------------------------
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