On 4/29/08, Tony Seebregts <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
