On <scxml> not being a <state>

I am increasingly forced to move all states in my machine under a single <state id="wrap">...except for the <final> states.

In this case I want my app to be able to have a <history type="deep"> element that allows me to boot/restore the machine into a particular complex state (restoring an application after the interpreter was torn down). But <history> is not allowed on <scxml>.

Previously I had to move them all into a wrapper just so that I could add this debug transition:
<transition event="error"><log expr="_event.name..'->'.._event.data" label="An error occurred!"/></transition>

The fact that the root <scxml> element is not just another compound state seems to make many areas inelegant and special-cased. Why can't <scxml> have <onentry>, <onexit>, <transition>, <history> and <invoke>?

I don't want to delay any ratification of the standard, but for the next version I hope that we might be able to make a more self-consistent system that's also easier to use.

Received on Tuesday, 19 February 2013 17:38:38 UTC