问题标签 [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.

0 投票
0 回答
266 浏览

javascript - 如何将 C++ 函数注册到 scxml ecmascript 数据模型?

这个问题已弃用

此后,我将状态机转换为使用额外的状态来调用 C++ 函数,并sendEvent 在函数返回值时触发。

老问题如下:

我有一个用 Qt 设计的简单 SCXML 模型。它缺少一些功能,例如监听 pub/sub 队列,为此我想将一些函数注册到QScxmlStateMachine实例中,以便我可以从状态机的 ECMAScript 部分调用它们。我看了看QScxmlEcmaScriptDataModel,但我不明白如何修改评估函数来注册回调。是否可以将 C++ 函数和回调注册到 Qt scxml 状态机?如果是这样,怎么做?

附加信息:

我创建了一个名为 的类RegisterJs,这是registerjs.h

这是registerjs.cpp

这就是我注册课程的方式:

这是 testflow.js 的内容:

这是来自 testflow.scxml 的相关内容:

但是没有显示信息消息。

0 投票
1 回答
329 浏览

python - PySide2 中 QScxmlStateMachine.connectToEvent 的奇怪行为

我正在尝试使用后端的 Python、前端的 QML 和用于创建状态机的 scxml 编写桌面应用程序。我正在使用 PySide2。我的目的是通过状态机来描述应用程序的逻辑。基于状态,QML 中的 UI 应该做出相应的反应。此外,后端应根据进入状态等执行方法。

我的项目包含 3 个文件:main.py带有后端逻辑、ui.qml带有 UI、stateMachine.scxml带有状态机。

内容main.py

UI 非常简单:它仅包含 3 个向状态机(ui.qml文件)提交事件的按钮:

状态机stateMachine.scxml由 3 个状态组成:、s1和转换、s2、:s3t1t2t3

这里的问题是一切正常。行my_state_machine.connectToEvent("t1", backend, "aev_slot()")有一个错误:方法名称是ev_slot(),不是aev_slot()。但是,如果我将其更改为正确的名称,则会收到以下错误:

不知何故,方法名称中的第一个字母被忽略了。难道我做错了什么?我对 Qt 和 PySide2 很陌生。总的来说这是一个好方法吗?我正在使用 PySide2 5.11.1a1.dev1530708810518

0 投票
0 回答
48 浏览

c++ - 如何访问 QScxmlEcmaScriptDataModelPrivate 的成员?

我想将一些 C++ 类型注册到一个QScxmlStateMachine带有 ecmascript 数据模型的实例中。我阅读了 scxml 的源代码,发现为了访问底层的 QJSEngine 实例,我必须使用类的assertEngine()成员函数QScxmlEcmaScriptDataModelPrivate。如何调用assertEngine()?如果这不可能,我如何将 C++ 函数注册到 QScxmlStateMachine?我以前的尝试是在这里

0 投票
1 回答
294 浏览

recursion - scxml 事件中的循环调用

我有一个带有“调用”元素的 scxml 事件。当事件被调用时,这个调用元素会更新数据模型元素。我怎样才能使这种情况定期发生?例如,是否可以每秒定期调用此调用?或者也许每秒都过渡到事件?

后者的问题是,如果我在调用的 finalize 部分放置一个转换,调用它自己,它似乎不会多次调用调用部分。

0 投票
1 回答
391 浏览

c++ - Events handling in QtScxml state machine

I'm trying to use the QScxmlStateMachine object, but unfortunately, I don't manage to trigger an event when the cond attribute of my transition is filled, whatever the value.

machine.scxml:

main.cpp:

test_scxml.pro:

When I remove this attribute, everything works fine.

Any idea?

0 投票
1 回答
132 浏览

java - 从 SCXML 文件生成有限状态机的所有转换

我已经用 SCXML 实现了状态机,我需要知道如何获得从头到尾的所有转换,以便为状态机制作测试用例

0 投票
1 回答
35 浏览

c# - 我们如何才能不调用子元素 f scxml(子元素)?

我正在使用 C# 为状态图 XML 制作解析器。正如我们所知,状态图 XML 状态和并行可能有 2 个子级,因此我制作了 2 个函数,一个用于状态,另一个用于并行。我如何才能在我的代码中调用 scxml 的子代而不是其子代的子代,它正在调用所有子代+孙代+grand_grand 等等。所以请有人解释一下如何只调用 scxml 的子代

我试图给它的孩子打电话,但它所有的孩子都来了

错误是在我的 xml 中,xml 的一个子项是状态,并且状态子项是并行的,因此它也调用子项的子项。xml代码是

0 投票
1 回答
317 浏览

c++ - 如何在 QScxmlStateMachine 中使用 QScxmlCppDataModel?

在我的项目中,我使用 C++,QScxmlCppDataModel,当我启动状态机时,总是出现错误,“没有数据模型实例化”,

我按照 Qt 文档说

1、在scxml文件中添加数据模型

2、新建数据模型子类

3、加载和启动状态机

错误图像

但仍然有一个错误:“没有数据模型实例化”,当我启动状态机时,有人知道如何修复它吗?谢谢你

0 投票
1 回答
52 浏览

javascript - 用于浏览器应用程序的 JavaScript 中的状态图 xml 处理器

我需要 Javascript 中的 State Chart XML 处理器,以便在浏览器上运行单玩家应用程序。有人知道,如果它存在吗?

0 投票
0 回答
116 浏览

qt - 如何从内部发起/发送事件