我如何对 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

然后就成功了!