Соответствие SCXML
Поддерживаемые модели данных
Qt SCXML поддерживает следующие модели данных:
- Модель данных null, как описано в Спецификации SCXML — B.1 Модель данных null
- Модель данных ECMAScript, как описано в Спецификации SCXML — B.2 Модель данных ECMAScript
- Модель данных C++, как описано в документации QScxmlCppDataModel
Поддерживаемые элементы и атрибуты
Реализация Qt SCXML соответствует SCXML, за исключением некоторых моментов:
- Данные события (
_event.data) реализованы как QVariant. Если параметры передаются в<send>, QVariant содержит QVariantMap, поэтому несколько параметров с одинаковым именем не поддерживаются. - Нет "сырого" представления события.
- Дополнительный базовый обработчик ввода/вывода http не поддерживается.
- Содержание тега
<script>и тега<data>должно быть валидным для выбранной модели данных. Например, содержимое XML внутри <data> не поддерживается. Однако модель данных ECMAScript поддерживает данные в формате JSON. - Единственный сервис, который можно инициализировать с помощью
<invoke>— это другая машина состояний SCXML. - Для сохранения одинакового поведения динамически созданных и скомпилированных машин состояний атрибуты typeexpr и srcexpr не поддерживаются. Более того, если тег
<content>используется внутри тега<invoke>, это содержимое должно быть XML. В частности, динамическое создание SCXML, например, путём конкатенации строк с моделью данных ECMAScript, не поддерживается.
Расширения Qt SCXML
Реализация Qt SCXML расширяет SCXML следующим образом:
- Если событие является событием ошибки,
_event.errorMessageбудет содержать более подробное описание ошибки.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qtscxml-scxml-compliance.html