SCXML Compliance#

Describes the compliance of the Qt SCXML implementation with the SCXML specification.

Supported Data Models#

Qt SCXML supports the following data models:

Supported Elements and Attributes#

The Qt SCXML implementation is SCXML compliant, with a few exceptions:

  • Event data (_event.data) is implemented as a QVariant. If parameters are passed to <send>, the QVariant holds a QVariantMap, so multiple parameters with the same name are not supported.

  • There is no “raw” representation of an event.

  • The (optional) basic http event I/O processor is not supported.

  • The contents of a <script> tag and a <data> tag must be valid for the chosen data model. So, as an example: XML content inside <data> is not supported. However, the ECMAScript data model does support data in JSON format.

  • The only service that can be instantiated with <invoke> is another SCXML state machine.

  • To keep the behavior of dynamically created state machines and compiled state machines the same, the typeexpr and srcexpr attributes are not supported. Moreover, if a <content> tag is used inside an <invoke> tag, that content must be XML. Specifically, dynamically creating SCXML, for example by concatenating strings with the ECMAScript data model, is not supported.

Qt SCXML Extensions#

The Qt SCXML implementation extends SCXML in the following ways:

  • If the event is an error event, _event.errorMessage will contain a more detailed description of the error.