commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jacob Beard <jbea...@cs.mcgill.ca>
Subject Re: [scxml] question on datamodel
Date Tue, 04 Dec 2012 06:13:28 GMT
On Mon, Dec 3, 2012 at 2:13 PM, Francesco Spegni
<francesco.spegni@gmail.com> wrote:
> On 03/12/2012 16:02, Jacob Beard wrote:
>>
>> Hi Francesco,
>
> Hi Jacob,
>
> thanks for your solution that I've read with interest. First of all, your
> solution has a minor issue I'm concerned about:
>
> - in Statecharts, AFAIK, the notion of timeout implies that something must
> be executed after a known amount of time; in the semantics I've in mind,
> borrowed from Timed Automata, a transition is enabled/disabled in certain
> time-windows. This means that nothing *happens* but something *can happen*
> (non deterministically) when the condition is true ... but this may be a
> minor issue, because it happened that our work stemmed from Timed Automata

Just to be clear, what's happening in the SCXML example I cited is
that an event ("$timeout_1") is sent to the state machine after a
specified amount of time. The mechanism by which the event is
scheduled is platform-specific. If the system is in a state which does
not have a transition with a trigger corresponding to that event, then
the event will be ignored. This behaviour is deterministic, but
whether the state machine will select a particular transition that has
a timeout after the amount of time specified in the timeout, is
non-deterministic.

>
> A major concern we have is that right now we have in mind more complex
> expressions. For instance, at the moment we consider two kinds of conditions
> on transitions:
> - time conditions that enable/disable a transition;
> - a conjunctive boolean formula, that refers to a finite set of propositions
> in description logic;
> - a combination of the above two.
>

It sounds like the second item on your list could be accomplished
through scripting. I'd have to see an example of the third item to
understand what this looks like.

> This apparently heterogeneous language is aimed at describing parametrized
> FSMs (i.e. FSM with an undefined number of running "instances") to reason on
> timed and RESTful services.

As SCXML is just XML, it's easy to parameterize, for example using XSLT.

> Due to the fact that the research project is a
> work-in-progress, the "shape" of those expressions are not yet definitive
> and may change, so we'd figure leveraging the flexibility of SCXML (in
> particular its datamodel) would give us a more "stable" ground to work on,
> possibly re-using the base Apache Commons libraries and Eclipse editor, and
> maybe extend it.
>
> -FS
>
>>
>> The example you describe looks like the special "timeout" event described
>> by Harel in his original papers on Statechart semantics:
>> http://research.microsoft.com/apps/pubs/default.aspx?id=148785
>> http://dl.acm.org/citation.cfm?id=235322
>>
>> If so, this event can be implemented in SCXML as a transformation, as in
>> the following example: https://gist.github.com/4195449
>>
>> In this example, on entering state "a", the event "$timeout_1" is
>> scheduled
>> to be sent after 1 second. If the state is exited before that time, the
>> scheduled event will be cancelled via the <cancel> action. If the machine
>> stays in state "a", and after 1 second the event is sent, then the
>> transition in state "a" with event "$transition_1" will be selected, and
>> the machine will leave state "a" and enter state "b".
>>
>> This transformation can be implemented easily in a language like XSLT.
>> Therefore, SCXML should be able to handle your example out of the box.
>> Does
>> your application have other, more complex requirements for transition
>> conditions?
>>
>> Jake
>>
>> On Mon, Dec 3, 2012 at 9:30 AM, Francesco Spegni
>> <francesco.spegni@gmail.com
>>>
>>> wrote:
>>> The first problem we are trying to solve is: how to extend the definition
>>> of Transition to accept custom XML nodes to be interpreted as complex
>>> conditions? E.g. we would like to express something as:
>>>
>>> <scxml
>>> xmlns="http://www.w3.org/2005/**07/scxml<http://www.w3.org/2005/07/scxml>
>>>
>>> "
>>>         version="1.0"
>>>         initialstate="a"
>>>         datamodel="xmlns:cc="someurl" >
>>>
>>>      <state id="a">
>>>          <transition target="b" cond="cc:eval(//condition)" >
>>>              <cc:condition>
>>>                  <time exp="clock > 1 sec" />
>>>              </cc:condition>
>>>          </transition>
>>>      </state>
>>>
>>>      <state id="b" final="true">
>>>
>>>      </state>
>>> </scxml>
>>>
>
>
> --
> Francesco Spegni
>
>
> "Ama le nuvole, le macchine, i libri, ma prima di tutto ama l'uomo" -
> Nazim Hikmet
>
> http://www.manuefra.eu
> skype: francesco.spegni
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org

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


Mime
View raw message