问题标签 [scxml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
transitions - 有条件的目标在SCXML 中支持的块?
我想在 SCXML 中实现这种条件转换:
SCXML 是否支持这种条件目标?
将其放入 SCXML 语言中,是否可能等效于以下代码段?
将不胜感激任何指向他们的文档。为此/替代策略来处理它。
谢谢。
scxml - Commons SCXML2 无法跳转到提供的状态
我正在使用具有状态和任务的 commons SCXML2 来控制工作流引擎,最初引擎以初始状态启动并在流中执行状态和任务。我们的要求是,如果工作流退出,我们希望保持状态。我们将状态存储在要从中恢复工作流的数据库中。现在我无法以给定的状态恢复工作流程。我尝试了什么...
我无法找到如何跳转到给定状态并使用上面的代码来执行此操作,但这对我没有帮助。
uml - Enterprise Architect - 是否可以导入 SCXML 文件?如何?
是否可以将SCXML文件作为“状态机”或其他图表导入 Enterprise Architect?
如果是,那怎么办?
qt - 为 Qt SCXML 创建自定义数据模型
我将 Qt 与SCXML 状态机一起使用。我想通过QScxmlStateMachine
. 但是,Qt 仅支持 SCXML 的 Null、EcmaScript 和 C++ 数据模型。我的状态机有一个自定义数据模型。
我想子类化QScxmlDataModel
以支持我的状态机。我可以看到实现setup()
、hasScxmlProperty()
、setScxmlProperty()
和scxmlProperty()
函数将如何允许从数据模型中设置/获取值。
但是,我不知道如何在我的自定义数据模型中正确评估表达式和其他特定于模型的项(例如 with<transition cond="...">
或)。<script>...</script>
我怎样才能制作一个自定义数据模型,它知道如何做的不仅仅是获取/设置属性?
android - 设置方向 Ionic/ scxml
我正在尝试锁定我的离子屏幕以使其不完全翻转。目前我将它设置在我的 scxml 文件中。我只能将其设置为纵向,但是如果您将设备倒置,它仍然会翻转。我研究过的大多数答案只解释了如何将其设置为纵向,但这并不能阻止颠倒翻转。这是我的代码行:
qt - 如何测试 Qt SCXML 状态机
我正在尝试使用 Qt 测试框架验证状态机的行为。我根本不明白我应该如何测试 Qt SCXML 实现。当然有QSignalSpy
,但这仅适用于不需要事件循环运行的信号/斜率。我本质上想要做的是:
我尝试QCoreApplication::processEvents()
这样做有时会奏效,但有时在调用时也会卡住processEvents()
。我想我可能会触发一个无限循环。谷歌搜索也没有帮助,但必须有办法正确地做到这一点。
xml - 在 scxml 中的转换条件评估中调用自定义函数
我想script
在评估cond
intransition
块时调用标签中定义的自定义函数。
例如,我想将函数定义为:
然后我想在转换 eval 表达式中调用它们(有副作用):
是否可以在 scxml 状态机定义中完成此操作?
qt - Qt 状态图:如何调用已编译的状态机?
阅读了SCXML 调用示例后,我问自己如果要调用使用qscxmlc
. 我注意到可以通过使用标签src
中的属性来调用另一个状态机。invoke
我通过设置src
SCXML 文件的文件系统路径来完成这项工作。但是,我无法弄清楚如何在 Qt 资源中引用 SCXML 文件(使用qrc:///...
不起作用)或如何调用已编译的状态机。
更新
我在 Qt 的文档中找不到任何内容,所以我查看了源代码(5.8 版):
加载qscxmlcompiler.cpp
在QScxmlCompilerPrivate::DefaultLoader::load(..)
(第 2447 行)中实现:
我注意到它使用 QUrl,因此应该能够使用我尝试使用的资源:/mystatemachinefile.scxml
而不是rsc://mystatemachinefile.scxm
它并且它有效:) 但是这应该添加到文档恕我直言。
我仍然想知道如果您想在使用状态图之前对其进行编译,应该如何实现它们,但我想这目前是不可能的?
qt - Qt 5.8 如何使用带有子状态机的 SCXML 框架?
我正在尝试构建一个系统,该系统由主状态机编排,并针对正在执行的任务具有不同的子状态机。作为一个长期使用 Qt 的用户,我查看了 Qt 5.8 中新的 SCXML 实现。但是我无法弄清楚如何使用 5.8 提供的 API 来正确实现子状态机。
我的想法是使用一个主状态机,然后在主状态机的状态下调用特定的子状态机。在调用子状态机工作时,我无法弄清楚在顶级状态机对象发出后如何访问它们,invokedServicesChanged(..)
我可以访问指向 QScxmlInvokableService
但不能访问相关状态机的指针。
此外,顶级状态机对象仅从顶部公开状态和事件,而不是从调用的状态机公开。例如 topLevelStateMachine->activeStateNames()
只列出顶级状态。
查看 Qt 的源代码,我看到它QScxmlInvokableService
实际上是一个基类,QScxmlScxmlService
其中包含一个指向相关状态机的指针。不幸的是,正如名称所示,它QScxmlScxmlService
被定义qscxmlinvokableservice_p.h
为私有。_p
那么我应该如何使用公共 SCXML API?我错过了什么吗?IIRC SCXML 支持是 5.7 中的技术预览,但现在作为正常分布的一部分包含在 5.8 中。