On 7/6/07, Ingmar Kliche <[EMAIL PROTECTED]> wrote:
Rahul,
it seems to me that the current implementation automatically forwards
(external) events to <invoke>'d child state machines (or other components):
see: triggerEvents() of SCXMLExecuter.java
// Forward events (external only) to any existing invokes,
// and finalize processing
semantics.processInvokes(evts, errorReporter, scInstance);
Do I understand this comment correctly? Is this intended? I actually do not
understand the current SCXML WD in this way [1].
<snip/>
It is my interpretation of, quoted from your reference:
"Note that the <invoke> element may be used to invoke an external
SCXML interpreter to execute a different state machine. In this case,
the external state machine acts as a set of substates of the invoking
state. The behavior is thus similar to a complex state defined with
<state> child elements."
One would expect substates to receive all the same events.
I would like to have
control which events to forward to an invoked component at markup level,
something like:
<state id="invoker">
<invoke targettype="scxml" src="invoked-01.xml">
<param name="foo" expr="'foo'" />
<param name="bar" expr="'bar'" />
<finalize>
<log expr="'Finalizing ...'" />
</finalize>
</invoke>
<transition event="foo">
<send event="foo" target="invokedID" targettype="SCXML"
namelist="_eventdata"/>
</transition>
<transition event="invoker.invoke.done" target="end" />
</state>
What do you think?
<snap/>
Makes sense, and should be possible. If you want to track this, please
open a ticket in JIRA [1]. I may not be able to get to it for a couple
of weeks. If you want to take a stab at it, you will have to modify
the execute() method in oacs.model.Send. Currently, the "invokedID" is
effectively the ID of the parent <state>, but that may need to be
revisited as well.
-Rahul
[1] http://jakarta.apache.org/commons/scxml/issue-tracking.html
Regards,
Ingmar
[1] http://www.w3.org/TR/2007/WD-scxml-20070221/#Invoke
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]