SCXML 兼容性
支持的数据模型
Qt SCXML 支持以下数据模型
- 空数据模型,如 SCXML 规范 - B.1 空数据模型 中所述
- ECMAScript 数据模型,如 SCXML 规范 - B.2 ECMAScript 数据模型 中所述
- C++ 数据模型,如 QScxmlCppDataModel 文档中所述
支持元素和属性
Qt SCXML 实现是 SCXML 兼容的,有一些例外
- 事件数据(
_event.data
)实现为 QVariant。如果<send>
传递参数,则 QVariant 会包含一个 QVariantMap,因此不支持具有相同名称的多个参数。 - 没有事件的原生表示。
- 不支持(可选)基本 http 事件 I/O 处理器。
<script>
标签和<data>
标签的内容必须适用于所选数据模型。例如:<data> 内部的 XML 内容不受支持。但是,ECMAScript 数据模型支持 JSON 格式的数据。- 只有可以通过
<invoke>
实例化的服务是另一个 SCXML 状态机。 - 为了保持动态创建的状态机和编译的状态机的行为一致,不支持 typeexpr 和 srcexpr 属性。此外,如果在
<invoke>
标签内使用<content>
标签,该内容必须是 XML。具体来说,不支持动态创建 SCXML,例如使用 ECMAScript 数据模型连接字符串。
Qt SCXML 扩展
Qt SCXML 实现以下扩展 SCXML
- 如果事件是错误事件,
_event.errorMessage
将包含对错误的更详细描述。
© 2024 Qt 公司有限公司。此处包含的文档贡献的版权归其各自的所有者。此处提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授予许可。Qt 和相应标志是芬兰的 Qt 公司及其全球其他国家的商标。所有其他商标均为其各自所有者的财产。