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]