【问题标题】:pytransitions/transitions: Saving and restoring state in GraphMachinepytransitions/transitions:在 GraphMachine 中保存和恢复状态
【发布时间】:2022-09-27 17:05:58
【问题描述】:

我正在使用 GraphMachine 对 MongoDB 记录的工作流程进行建模。

我只将状态存储在 MongoDB 中,当我稍后重新加载时,我使用机器上的 set_state() 选项将其强制返回到停止的位置。

除非我尝试显示状态机图,否则这一切都正常工作。

加载后它始终显示为初始状态,即使它似乎确实接受了set_state,因为转换被接受,就好像它处于恢复状态一样。

假设我有一个简单的线性 FSM,例如: S0 -> S1 ->S2-> S3 -> S3 -> S0。

S0 是初始状态,S2 是保存位置。

当我恢复时,它总是在 S0 中绘制自己的图形,但如果我尝试进行 S2->S3 转换,它会接受它。当我之后制作图表时,它处于正确的 S3 状态。

有没有办法让 GraphMachine \'initialize\' 进入正确的状态?

谢谢

    标签: pytransitions


    【解决方案1】:

    Machine.set_state 将硬设置模型状态,但不会调用必要的回调来重新生成图形。您可以将初始状态传递给构造函数,也可以在 set_state 之后强制重新创建图形:

    from transitions.extensions import GraphMachine
    
    states = ["A", "B", "C"]
    m1 = GraphMachine(states=states, initial="A", ordered_transitions=True, show_state_attributes=True)
    m1.next_state()
    
    m2 = GraphMachine(states=states, initial=m1.state, ordered_transitions=True)
    m2.get_graph().draw("machine2.png")
    
    m1.set_state("C")
    m1.get_graph(force_new=True).draw("machine1.png")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 2013-08-31
      相关资源
      最近更新 更多