我如何对 Yakindu 主状态图中的事件做出反应?
How can I react to events from a master statechart in Yakindu?
我有一个状态图,它根据另一个状态图执行操作。让我们称他们为主人和奴隶吧。
在 Slave 状态图中,我导入 Master 并将其分配给一个变量。
import: "Master.ysc"
var master: Master
假设 Slave 状态图在 StateA
并且当 Master 触发事件 B
时想要转到 StateB
。然后作为过渡触发器,我使用 master.B
我的问题是从状态图看不到主事件。在Slave的init方法中生成的(Python)代码self.master = None
,一直保持None
。有没有办法正确地做到这一点?
我也试过直接从Master在Slave中引发一个事件,如问题:
import: "Slave.ysc"
var slave: Slave
raise slave.goto_b
但是这里我也有一个问题,引用是 None。
self.slave.raise_goto_b()
AttributeError: 'NoneType' object has no attribute 'raise_goto_b'
我是不是遗漏了一些简单的东西(对 master/slave 变量的赋值之类的),还是 Python 绑定有问题?
我确实错过了一个作业。我应该更努力地尝试 .
中的答案
所以我将主状态机的引用发送给从属。在主要:
master_fsm = MasterFsm()
slave_fsm = SlaveFsm(master_fsm)
'Fsms' 具有生成的 class 的 sm
属性。
所以在 SlaveFsm 的初始化方法中我做了:
def __init__(self, master_fsm):
self.sm = Slave()
self.sm.master = master_fsm.sm
然后就成功了!
我有一个状态图,它根据另一个状态图执行操作。让我们称他们为主人和奴隶吧。
在 Slave 状态图中,我导入 Master 并将其分配给一个变量。
import: "Master.ysc"
var master: Master
假设 Slave 状态图在 StateA
并且当 Master 触发事件 B
时想要转到 StateB
。然后作为过渡触发器,我使用 master.B
我的问题是从状态图看不到主事件。在Slave的init方法中生成的(Python)代码self.master = None
,一直保持None
。有没有办法正确地做到这一点?
我也试过直接从Master在Slave中引发一个事件,如
import: "Slave.ysc"
var slave: Slave
raise slave.goto_b
但是这里我也有一个问题,引用是 None。
self.slave.raise_goto_b()
AttributeError: 'NoneType' object has no attribute 'raise_goto_b'
我是不是遗漏了一些简单的东西(对 master/slave 变量的赋值之类的),还是 Python 绑定有问题?
我确实错过了一个作业。我应该更努力地尝试
所以我将主状态机的引用发送给从属。在主要:
master_fsm = MasterFsm()
slave_fsm = SlaveFsm(master_fsm)
'Fsms' 具有生成的 class 的 sm
属性。
所以在 SlaveFsm 的初始化方法中我做了:
def __init__(self, master_fsm):
self.sm = Slave()
self.sm.master = master_fsm.sm
然后就成功了!