问题标签 [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 投票
2 回答
232 浏览

automata - SCXML 描述了什么样的自动机?

SCXML 的局限性是否与确定性有限自动机/确定性有限状态机相同,或者 SCXML 的功能是否可以更好地被其他抽象机器/自动机捕获?例如,SCXML 能否被认为足以描述下推自动机或图灵机?

0 投票
1 回答
606 浏览

java - how to read datamodel values from Apache-commons scxml api in java

I am using SCXML in my java application. I am using apache-commons-scxml api to implement the state machine. I am able to set the value in data model through sxml api but not able to read that value in java code.

Each time read operation fetch the default value that is set in scxml document instead of reading the latest value that is set at runtime. However if we log the expression in scxml doc for the same value then it will print the updated value but in java code I am not able to get the updated value.

Below is the datamodel:

Reading the data model:

Setting the value:

Reading the value:

All the time read operation gives the value "F" not "dummy" that is set at runtime. Any idea how to read the updated value(in this case "dummy") of the node in java code through apache commons-scxml api?

0 投票
2 回答
75 浏览

javascript - 在 D3 中选择 DOM 元素但不选择它们的子元素

我正在使用 SCXML,我的数据是这样的:

我使用 D3 来可视化状态及其转换,但我正在努力准确地选择所需的转换。

我想要的是只为一个状态而不是它的子状态选择转换。例如,state1 的唯一转换是“quit”。我想像:

(并为每个父状态重复此操作,直到达到我想要的状态)。

0 投票
1 回答
199 浏览

java - 如何在 apache commons SCXML 的相同状态下再次调用 Invoker

我在我的项目中使用 Apache commons SCXML 来维护状态机。一旦执行到定义调用程序的状态的转换,我们就使用调用程序执行一些活动。

当调用者从同一状态调用两次时,问题就来了。例如,从状态“A”触发事件“TEMP”,然后它移动到状态“B”。并且一旦它进入状态“B”调用者被调用并且调用者类的回调方法invoke()被调用。

当从状态 A 再次触发事件“TEMP”并且没有调用 Invoker 时,问题就来了。invoke() 方法不再被调用。调用者只能调用一次吗?

请让我知道如何再次调用调用者/调用()。我在互联网上没有得到太多帮助。

提前致谢。

0 投票
3 回答
1211 浏览

c - C 的有限状态机编译器来模拟网络协议

我一直在寻找一个好的状态机编译器来测试一些自定义网络协议。我已经查看了一些工具,例如 Yakindu、Ragel(编译器)、SCXML(语言),但我不确定它们是否可以用于网络协议。

SCXML(language) 看起来不错,但我找不到任何专门用于 C 的编译器(scxmlcc 用于 C++)。有谁知道基于 SCXML 的 C 编译器?Yakindu 工具看起来很有希望,但我不确定是否可以测试 BGP/OSPF 等网络协议。任何人都可以请给出任何指示吗?Ragel 看起来也不错,但我再次不确定是否可以使用此编译器生成复杂的网络协议客户端。

我特别提到网络协议的原因是,我还希望能够在“事件”发生后执行自定义例程,例如 packet_create/packet_send(具有自定义数据包大小)等,作为“操作”的一部分。

我是否需要始终从状态图中生成代码,或者有没有办法直接与状态交互?我对 FSM 很陌生,任何帮助/建议/建议/链接都将不胜感激。

0 投票
1 回答
681 浏览

scxml - 从 scxml 中的状态转换

我正在尝试使用 Apache scxml 实现控制流。我的状态转换就像

作为状态机,它工作正常并且没有任何问题。但我有几个要求,我面临的问题

  1. 我必须检查每个状态中的外部事件,如果该事件为真,我必须进入循环的最后一个状态。实现这一目标的最佳方法是什么?

  2. 有可能当我在里面时,state2我可以去state4state5通过state3. state3在检查条件后,我是否可以触发事件或更改state4状态state5

上述两个问题似乎都有相同的解决方案,但我无法找出实现它们的最佳方法。

0 投票
1 回答
132 浏览

scxml -

0 投票
1 回答
127 浏览

scxml - 在 SCXML 中聚合本地事件

每次创建某些请求事件时,我的状态机都有一个自循环。我想根据一个键将这些事件存储在本地上下文列表中,并且每次执行此自循环时,都会将一个元素附加到列表中。然后这个列表在某个过期时间之后,比如 1 小时,被添加到 SCXML 的全局上下文中。我怎样才能做到这一点?

基本上我想在触发特定操作之前聚合请求。

0 投票
1 回答
748 浏览

java - 如何验证我的 SCXML 定义了有效的状态机?

我刚刚开始研究定义状态机,SCXML看起来很有吸引力,尤其是Apache Commons SCXML for Java。显然我可以验证 XML(使用适当的 XSD)。

但是我显然找不到任何方法来验证定义的状态机是否有效(没有死胡同,没有无法到达的状态等)。

但是如何在执行之前验证定义的状态机呢?特别是我对可以集成到构建工具链中的工具(即从命令行)感兴趣。

0 投票
1 回答
318 浏览

java - Apache SCXML:添加自定义操作

我正在使用 Apache Commons SCXML 0.9,但找不到如何添加 CustomAction。我找到了使用 v2.0-SNAPSHOT 的示例(顺便说一句,我不知道从哪里得到它),但似乎在 v0.9 上不起作用,到目前为止我得到了这样的东西:


对于 v2.0-SNAPSHOT,我可以写:

之后,获取SCXMLExecutor并调用该SCXMLExecutor.go方法,但我找不到 v0.9 的任何选项,请在这里需要您的帮助。
最好的祝福