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] How to retrieve the transition target in a custom action
Date Tue, 21 Sep 2010 22:07:40 GMT
2010/9/21 Thiébault Benoît <dev@artenum.com>:
>
> Le 21 sept. 2010 à 00:12, Rahul Akolkar a écrit :
>
>> <snip/>
>>
>> I believe you mean a transition thats not a stay nor self transition,
>> since the only way a custom action will ever execute is if some
>> transiton is being followed (in order for SCXML executable content to
>> execute).
>
> Thank you Rahul for your answer.
> Indeed I want to know wether I'm in a stay or self transition. I confirm that my custom
action is within a transition (or onentry/onexit).
>>
>> There isn't a direct way to access information about the transition
>> target. I imagine your custom action is within a transition element.
>> If so, you could walk up the SCXML object model and check whether the
>> parent transition has a target attribute and whether it is the parent
>> state id itself.
>
> How can you do this from within a custom action?
>
<snip/>

See class Javadocs [1] for details, but briefly:

  Action#getParent() gives you the parent Executable container (such
as transition object)

  Action#getParentTransitionTarget() gives you the parent state (or
parallel etc.)

With a handle to those two, it should be possible to figure out
whether its a stay or self transition.

-Rahul

[1] http://commons.apache.org/scxml/0.9/apidocs/org/apache/commons/scxml/model/Action.html


>> It may also be possible to infer whether a (non-stay)
>> transition is being followed and what the target is, by using a
>> suitable SCXMLListener impl.
>>
>> For long computations, you should consider using the external
>> communications module (either <send> or <invoke>) to send an event to
>> (or invoke) some external process which manages the computation and
>> fires a completion event on the state machine when done.
>
> I quickly looked at the invoke examples provided in SCXML tests and they seem less appropriate
than using custom actions, which make the XML file more readable IMHO.
>
>>
>> -Rahul
>>
>>
>>> I need this info to know if it is possible to launch a long computation in a
different thread:
>>> - if there is a transition target, the state machine will go to the new state
and my computation will be started in one state and continue in another one, which I want
to avoid.
>>> - if there is no transition target, it means that my computation is performed
within the original state (internal transition) and I can use my computation without fearing
an undetermined state machine.
>>>
>>> Kind regards,
>>>
>>> Ben
>>

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


Mime
View raw message