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] _eventdata not included in collection events ?
Date Tue, 29 Apr 2008 17:22:29 GMT
On 4/29/08, Tony Seebregts <tony@iveri.com> wrote:
> Hi,
>
>  I'm trying to pass information from a class that extends Action via a
>  TriggerEvent payload but in the SCXML script the _eventdata value for
>  the associated event transition seems to be null.
>
>  Any ideas ?
>
>  The payload works fine if I call triggerEvent but not if I just add the
>  event to the events Collection and I can't figure out why (for various
>  reasons triggerEvent doesn't work in the scenario).
>
<snip/>

Yup, you shouldn't use triggerEvent here.

The way derived events are handled is to process all of them in a
microstep. Since there may be more than one event, _eventdata is
ambigous, and _eventdatamap['event.name'] should be used instead for
derived events.

For example, see the eventdata_* test case documents in the JUnit test
suite ... few of them are here:

http://svn.apache.org/repos/asf/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/env/jexl/

-Rahul


>  The relevant code is:
>
>  public void execute(EventDispatcher dispatcher,
>                     ErrorReporter   reporter,
>                     SCInstance      instance,
>                     Log             log,
>                     Collection      events) throws
>  ModelException,SCXMLExpressionException
>        { Evaluator evaluator = instance.getEvaluator();
>          Context   context   = instance.getContext  (getParentState());
>          String    uidx      = null;
>          String    pinx      = null;
>          int       serviceID;
>          User      user;
>
>          try
>             { if (uid != null)
>                  uidx = (String) evaluator.eval(context,uid);
>
>               if (pin != null)
>                  pinx = (String) evaluator.eval(context,pin);
>
>               if ((user = login(uidx,pinx)) == null)
>                  { events.add(INVALID);
>                    return;
>                  }
>
>               events.add(new  TriggerEvent("ok",
>  TriggerEvent.SIGNAL_EVENT, user));
>                        return;
>             }
>          catch(Throwable x)
>             { log.error("Error logging in: " + x.toString());
>             }
>
>          instance.getExecutor().triggerEvent(ERROR);
>        }
>
>  regards
>
>  Tony Seebregts
>

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


Mime
View raw message