On Thu, Jun 23, 2011 at 6:46 PM, Artem Vovk <vovk.ar...@googlemail.com> wrote:
> Thanks for the answer! I have also implemented on this way, but I think it 
> makes all complicated and I see no benefits from static states
> I give an example where dyn states are useful and much less verbose:
>
> I have 10 basic_states that under some condition(internet is not available) 
> can be transitioned to another special_state(NoInternetConnection), but this 
> state must know the basic_state from which it receives the event, to go back 
> under another condition(internet is available). With dynamic states it takes 
> only one assign per basic_state and one transition in special_state and I 
> does not need to change special_state each time when I want to add a new 
> basic_state
>
<snip/>

Use history states (see mention in previous email).

-Rahul


> On Jun 23, 2011, at 11:54 PM, Rahul Akolkar wrote:
>
>> On Tue, Jun 21, 2011 at 3:42 PM, Artem Vovk <vovk.ar...@googlemail.com> 
>> wrote:
>>> Can I use dynamic transition targets? Something like this?
>>>
>>> <datamodel>
>>>        <data id="dyn_state" expr="State1">
>>> </datamodel>
>>>
>>> ...
>>>
>>> <transition  ... target="dyn_state"/>
>>>
>>> If I use it on this way, I receive an exception: Transition target with ID 
>>> "dyn_state" not found -> Interpreter thinks that it is a name of the state, 
>>> but not the variable... Is there a way to define such transitions?
>>>
>> <snip/>
>>
>> Not directly as you are illustrating above. Most state machines in
>> general, and SCXML in particular, requires you specify fixed target(s)
>> for each transition. This is actually quite useful because it allows
>> static analysis to determine whether all transition targets are legal
>> even before the state machine is executed. It is also not as limiting
>> as it may seem at first, because of the existence of things like guard
>> conditions on transitions and history states.
>>
>> For the above, a literal translation may appear to be as follows
>> (replacing dynamic target with static ones):
>>
>>  <transition  cond="dyn_state eq 'State1'" target="State1"/>
>>  <transition  cond="dyn_state eq 'State2'" target="State2"/>
>>  ...
>>
>> The above pattern can certainly be used, and may seem more verbose.
>> But note that there are usually two <assign> or similar statements
>> elsewhere that are updating the data 'dyn_state'. Often, these can
>> instead be replaced as appropriate guard conditions on the two
>> transitions above so the net effect is no change in verbosity.
>>
>> -Rahul
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
>> For additional commands, e-mail: user-h...@commons.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
> For additional commands, e-mail: user-h...@commons.apache.org
>
>

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

Reply via email to