SCXML 兼容性#

描述 Qt SCXML 实现与 SCXML 方案的兼容性。

支持的数据模型#

Qt SCXML 支持以下数据模型

支持的元素和属性#

Qt SCXML 实现遵守 SCXML,但有少数例外

  • 事件数据(_event.data)实现为 QVariant。如果将参数传递给 <send>,则 QVariant 包含 QVariantMap,因此不支持具有相同名称的多个参数。

  • 没有事件的原生表示。

  • 不支持基本 HTTP 事件 I/O 处理器。

  • <script> 标签和 <data> 标签的内容必须针对所选的数据模型有效。例如,XML 内部的 XML 内容不支持。但是,ECMAScript 数据模型支持 JSON 格式的数据。

  • 仅可以通过 <invoke> 实例化 SCXML 状态机。

  • 为了保持动态创建的状态机与编译状态机的行为相同,《em>typeexpr》和《em>srcexpr属性不支持。此外,如果在一个《code class="docutils literal notranslate"><invoke>》标签内使用《code class="docutils literal notranslate"><content>》标签,则该内容必须是 XML。特别是,使用 ECMAScript 数据模型动态创建 SCXML(例如,通过使用字符串连接)不支持。

Qt SCXML 扩展#

Qt SCXML 实现以下扩展 SCXML

  • 如果事件是错误事件,“_event.errorMessage” 将包含错误更详细的描述。