2010/9/16 Thiébault Benoît <[email protected]>:
> Hi everyone,
>
> I'm using SCML with custom actions. I followed the Custom Actions tutorial 
> successfully (http://commons.apache.org/scxml/guide/custom-actions.html), but 
> the Hello action only uses parameters provided in the SCXML file.
>
> What I want to do is to provide a payload to the triggering event and 
> retrieve it in my custom action. Is this possible ?
>
> // In the method firing the event
> TriggerEvent[] evts = {new TriggerEvent(event.getId(),
>           TriggerEvent.SIGNAL_EVENT, myPayload)};
>       try {
>           engine.triggerEvents(evts);
>       } catch (ModelException me) {
>           logError(me);
>       }
>
> // In the custom action class
> public void execute(EventDispatcher evtDispatcher, ErrorReporter errRep, 
> SCInstance scInstance, Log appLog, Collection derivedEvents) throws 
> ModelException, SCXMLExpressionException {
>       // Here I want to retrieve myPayload
<snip/>

When using v0.9, for the above external trigger:

  Object payload = scInstance.getRootContext().get("_eventdata");

When processing internal / derived events, the following:

  Object payload =
scInstance.getRootContext().get("_eventdatamap").get("my.event.name");

For examples which may illustrate where the payload resides in the
root context, see the eventdata-*.xml files here (this may help to see
how the values may be retrieved programmatically within a custom
action):

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

-Rahul


>   }
>
> Kind regards
> Ben
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to