[SCXML] Change proposals

Based on my experiences trying to implement the current draft I would 
like to propose two changes to SCXML. I think they would make SCXML 
simpler and more intuitive to use, as well as somewhat easier to implement:

1. Remove <initial> and introduce a new (optional) attribute 'initial' 
(value IDref) for <state>. Make 'initial' incompatible with 'final'.
2. Allow a mixture of <state> and <parallel> as children of <state> and 
<scxml>.

As a consequence of 1)

  <state id="s0">
      <initial>
          <transition target="s1 >
      </initial>
      <state id=s1" ... />
      <state id=s2" ... />
  <state>

can be written as

  <state id="s0" initial="s1">
      <state id=s1" ... />
      <state id=s2" ... />
  <state>

with no loss of expressiveness.

As a consequence of 2)

  <state id="s0" initial="s1">
      <state id=s1" ... />
      <state id=s2">
          <parallel ... />
      </state>          
  <state>

could be replaced with

  <state id="s0" initial="s1">
      <state id=s1" ... />
      <parallel ... />
  <state>

with no loss of expressiveness. However,

  <state id="s0">
      <parallel id="p1" ... />
  <state>

now has to be written

  <state id="s0" initial="p1">
      <parallel id="p1" ... />
  <state>

(Possibly, 'initial' could default to the id of its first <state> or 
<parallel> child, and then the first formulation would work.)

The proposed changes has been implemented in a modified version of SCXML 
Web Laboratory, available here:

  http://www.ling.gu.se/~lager/Labs/S-SCXML-Lab/
   
You may want to compare with the version more in the spirit of the W3c 
Jan Draft spec, available here:

  http://www.ling.gu.se/~lager/Labs/SCXML-Lab/


Best regards,
Torbjörn Lager

Received on Friday, 1 September 2006 14:13:40 UTC