- Qt 5.15
- Qt SCXML
- SCXML Compliance
- Qt 5.15.2 Reference Documentation

# SCXML Compliance

## 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 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.