是否有类似于基于 Eclipse 的 Visual SCXML 编辑器来构建 Harel 状态表的工具?目前项目页面中的状态是代码未发布。我如何安装插件?
在SCXML状态机中,我怎么说"在我进入这个状态3分钟后发生一次事件,但如果我在该状态下坐了2.9分钟然后离开就不行.如果我重新进入状态,重启计时器"不会在0.1分钟后离开)"
我正在尝试使用 Qt 测试框架验证状态机的行为。我只是不明白我应该如何测试 Qt SCXML 实现。当然有QSignalSpy
,但这仅适用于不需要事件循环运行的信号/斜率。我本质上想做的是:
myStateMachine.submitEvent("MyEvent");
// Run event loop
// Check result
Run Code Online (Sandbox Code Playgroud)
我尝试QCoreApplication::processEvents()
这样做有时会奏效,但有时在调用processEvents()
. 我想我可能会触发一个无限循环。谷歌搜索也没有帮助,但必须有一种方法可以正确地做到这一点。
我知道用户以不同的方式定义它们(XML与UML工具相比),但两者之间的语义有何不同?
或者,SCXML中的状态图是否与UML中的可比状态图相同?
我刚刚开始研究定义状态机,SCXML看起来很有吸引力,尤其是Apache Commons SCXML for Java。显然我可以验证 XML(使用适当的 XSD)。
但是,我显然找不到任何方法来验证定义的状态机是否有效(没有死胡同,没有无法访问的状态等)。
但是如何在执行之前验证已定义的状态机?特别是我对可以集成到构建工具链中的工具(即从命令行)感兴趣。
可以在W3C SCXML规范进行下模型驱动开发的考虑?即状态图作为 scxml 的模型,可以使用工具自动生成,而不是手动编码。我正在寻找这样一种用于平板电脑 GUI 交互的工具。
David Harel 的工具从系统行为的状态图中生成了 c/c++ 代码。用于硬件状态图的 IBM Statemate(ilogix Statemate Magnum)和用于嵌入式软件状态图的 IBM Rhapsody。
我正在寻找一个好的状态机编译器,以便测试一些自定义网络协议.我查看了一些工具,如Yakindu,Ragel(编译器),SCXML(语言),但我不确定是否有任何工具可用于网络协议.
SCXML(语言)看起来不错,但我找不到任何专门用于C的编译器(scxmlcc用于C++).有没有人知道基于SCXML的C编译器?Yakindu工具看起来很有前景,但我不确定是否可以测试像BGP/OSPF这样的网络协议.任何人都可以对此提出任何指示吗?Ragel看起来也不错,但我不确定是否可以使用此编译器生成复杂的网络协议客户端.
我特别提到网络协议的原因是我还希望能够在"事件"发生后执行自定义例程,例如packet_create/packet_send(具有自定义数据包大小)等,作为"操作"的一部分.
我是否需要始终从状态图生成代码,或者有没有办法直接与状态交互?我是FSM的新手,任何帮助/建议/建议/链接将不胜感激.