Соответствие 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-6.2/qtscxml-scxml-compliance.html