当前位置: 首页 > 知识库问答 >
问题:

当状态机进入某个状态时触发事件

宿嘉
2023-03-14

我有一个状态机,有三种可能的状态:状态1,状态2,状态3。

每当一个对象进入状态_3时,我想触发一个事件event1。

在我state_machine,我有

      after_transition :on => :state_3, :do => :event1.

但只要状态从state1更改为state3或从state2更改为state3,就会正确触发事件。但当状态从state3转换到state3时,不会触发event1。我怎样才能做到这一点?

我知道从3号州到3号州不是一个州的过渡。我可以使用类似于after_save callback的方法,检查状态是否为state3。但我想知道有没有一种有效的方法来实现这一点,即在状态机中?

我想触发state3到state3上的事件的原因是,我有一个表单。只有所有的问题都得到了回答,表格才到达状态3。在所有问题都得到回答后,我正在计算分数。如果用户只是更改了答案呢?。状态将从state3更新到state3。这就是我想从state3到state3触发事件的情况。

共有1个答案

魏岳
2023-03-14

当用户更改他们的答案时,他们会影响重新运行状态2到3的转换。所以在应用更改之前,请将状态更改为状态2。

或者,创建一个更新状态,并在应用更改之前将问题放入该状态。

 类似资料:
  • #全局事务状态表 状态 代码 备注 全局事务开始(Begin) 1 此状态可以接受新的分支事务注册 全局事务提交中(Committing) 2 这个状态会随时改变 全局事务提交重试(CommitRetry) 3 在提交异常被解决后尝试重试提交 全局事务回滚中(Rollbacking) 4 正在重新回滚全局事务 全局事务回滚重试中(RollbackRetrying) 5 在全局回滚异常被解决后尝试事

  • 我有一个场景,只有当特定JIRA项目下的所有问题都更改为“IN PROGRESS”状态时,Jenkins构建才会自动触发。假设我的JIRA项目下有3个问题,其中2个处于“TO DO”状态,其中一个处于“IN PROGRESS”状态。只有当剩余的2张票也从“TO DO”移动到“IN PROGRESS”时,才应该触发Jenkins构建 我可以通过在Jenkins中使用JIRA网络钩子和JIRA触发器插

  • 我有一个运行2个独立lambda的步进函数。如果步进函数失败或超时,我想通过SNS收到一封电子邮件,告诉我步进函数失败了。我使用云形成创建了事件规则,并在事件模式中指定了状态机ARN。当步进函数失败时,不会发送任何电子邮件。如果我删除stateMachineArn参数并运行我的步进函数,我会收到失败的电子邮件。我已经反复检查了无数次,我是否为状态机输入了正确的ARN。事件规则的CF如下(YAML格

  • 根据进程的定义,我们知道进程是代码运行的实体,而进程有可能是正在运行的,也可能是已经停止的,这就是进程的状态。 网上有人总结进程一共5种状态,也有总结是8种,究竟应该怎么算呢,最好的方法还是看Linux源码。进程状态的定义在fs/proc/array.c文件中。 /* * The task state array is a strange "bitmap" of * reasons to slee

  • 进程状态 在此次实验中,进程的状态之间的转换需要有一个更为清晰的表述,在 ucore中,runnable的进程会被放在运行队列中。值得注意的是,在具体实现中,ucore定义的进程控制块struct proc_struct包含了成员变量state,用于描述进程的运行状态,而running和runnable共享同一个状态(state)值(PROC_RUNNABLE。不同之处在于处于running态的进

  • 问题内容: 因此,我一直将以下代码放入我的React JS组件中,而我基本上是试图将两个API调用都置于一种称为的状态,但是以下代码却出现了错误: 现在,我猜我无法像我一样添加两个数据源,但是还可以怎么做呢?我只希望将来自该API请求的所有数据置于一种状态。 这是我目前收到的错误: 谢谢 问题答案: 您不能将数组“添加”在一起。使用array.concat函数(https://developer.