SCXML 兼容性#
描述 Qt SCXML 实现与 SCXML 方案的兼容性。
支持的数据模型#
Qt SCXML 支持以下数据模型
空数据模型,如 SCXML 规范中所述SCXML 规范 - B.1 空数据模型
ECMAScript 数据模型,如 SCXML 规范中所述SCXML 规范 - B.2 ECMAScript 数据模型
C++ 数据模型,如
QScxmlCppDataModel
文档所述
支持的元素和属性#
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
” 将包含错误更详细的描述。