标签: statechart

使用xstate,是否可以配置一个适用于所有状态并在所有状态和子状态下以相同方式处理的事件?

我是 xstate 的新手,我尝试在应用程序中使用它,用户可以根据父状态和/或子状态在应用程序中请求不同的内容。但是,无论应用程序处于什么状态/子状态,用户都应该能够发出一些请求。无论之前的状态是什么,对这些事件的响应都是相同的。如何配置此事件,以便我不必在所有状态/子状态下重复定义它?

javascript fsm statechart node.js xstate

3
推荐指数
1
解决办法
2304
查看次数

更多Javascript状态图框架

我正在使用ExtJS并认为它是一个了不起的框架.但是,它们没有内置状态图,这使得应用程序开发依赖于状态非常痛苦.

我最近发现了这个:

https://github.com/jakesgordon/javascript-state-machine

对JS应用程序来说,这似乎是一个非常可靠的状态图.

我想知道是否有其他这样的框架,以便我可以在我决定使用之前进行比较.

谢谢!

javascript statechart

2
推荐指数
1
解决办法
3660
查看次数

状态图模型的自动 scxml 代码合成

可以在W3C SCXML规范进行下模型驱动开发的考虑?即状态图作为 scxml 的模型,可以使用工具自动生成,而不是手动编码。我正在寻找这样一种用于平板电脑 GUI 交互的工具。

David Harel 的工具从系统行为的状态图中生成了 c/c++ 代码。用于硬件状态图的 IBM Statemate(ilogix Statemate Magnum)和用于嵌入式软件状态图的 IBM Rhapsody。

statechart scxml

2
推荐指数
1
解决办法
1074
查看次数

Xstate:导致相同状态的不同动作和守卫

我正在用 xstate 库编写状态图。

状态图代表一个中等复杂的 UI。

我有几个平行的状态,但对于这个问题,让我们只考虑两个:

SelectionStatus,代表选择项,区分子状态SelectedNoneSelectedOneSelectedMany

Operation,代表当前正在进行的操作。它有一个名为Idle(当然还有其他一些)的子状态。

有一些事件会触发循环回到Idle子状态的动作,而不会转到另一个状态。让我们将它们视为即时操作,例如removeSelected仅删除所选项目的操作(这就是问题的重点)。

removeSelected如果选择仅限于单个项目(实际上是树中的一个节点)或多个(树的一个分支),我将向事件添加条件以执行不同的操作。

用于描述事件的操作和条件的 xstate 语法将是:

removeSelected: {
    Idle: {
         cond: isSelectedOneGuard,
         actions: ['removeOne']
    },
    Idle: {
         cond: isSelectedManyGuard,
         actions: ['removeMany']
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我Idle在同一对象嵌套级别编写了两个键,这是无效的。

我已经考虑过重构状态图以将两个操作分支作为选择分支的子状态,但这似乎是一种比问题更糟糕的治疗方法。

我还考虑过使用中间虚拟状态,比如RemovingOneRemovingMany,这只会触发返回到 的转换Idle,但我对此并不满意。

我可以通过删除保护条件来解决这个问题,在通用removeOneOrMany操作处理程序中进行测试,但是我会在状态图中丢失有关不同处理的信息。

任何人都遇到过类似的问题,可以就此提供一些建议吗?

(注意:这是指当前版本的 xstate,即 3.1.1,3.2 快到了,我不知道是否可以更轻松地处理这种情况)

谢谢!

statechart xstate

2
推荐指数
1
解决办法
865
查看次数

在 boost 状态图库中捕获丢弃的事件

我正在查看 Boost StateChart lib 文档,但找不到捕获异常事件的方法。

例如,如果我处于状态 A,它只处理 EventA,我调用

machine.proces_event(EventB())
Run Code Online (Sandbox Code Playgroud)

该事件似乎被默默地忽略了。有没有办法让我抓住那些,这样我就可以记录状态和非法行为?

谢谢你。

c++ boost state-machine statechart

1
推荐指数
1
解决办法
560
查看次数

使用 .inject() 时指定代理属性

出于逻辑测试目的,我使用了触发“source.inject()”的可点击按钮。代理的上述逻辑取决于代理特征。因此,最好在测试模型逻辑时控制它们在启动期间获得的特征。在源块的注入()函数上搜索 AnyLogic 文档并没有显示任何方法来强制要求初始特征。

在此处输入图片说明 在此处输入图片说明

我试过使用“add_patients();” 这允许创建代理,并且我可以根据需要在括号内指定特征。但是,如果我使用此功能,代理将不会进入状态图。

modeling agent-based-modeling statechart anylogic

0
推荐指数
1
解决办法
175
查看次数