SCXML Compliance#
Describes the compliance of the Qt SCXML implementation with the SCXML specification.
Supported Data Models#
Qt SCXML supports the following data models:
null data model, as described in SCXML Specification - B.1 The Null Data Model
ECMAScript data model, as described in SCXML Specification - B.2 The ECMAScript Data Model
C++ data model, as described in the
QScxmlCppDataModel
documentation
Supported Elements and Attributes#
The Qt SCXML implementation is SCXML compliant, with a few exceptions:
Event data (
_event.data
) is implemented as aQVariant
. If parameters are passed to<send>
, theQVariant
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.