首页 > 解决方案 > 我如何对来自 Yakindu 的主状态图的事件做出反应?

问题描述

我有一个状态图,它依赖于另一个状态图。我们称他们为主人和奴隶。

在从属状态图中,我导入主控并将其分配给一个变量。

import: "Master.ysc"
var master: Master

假设当 Master 触发事件时,Slave 状态图处于StateA并且想要去。然后作为过渡触发器,我使用StateBBmaster.B

我的问题是从状态图看不到主事件。在 Slave 的 init 方法中生成的(Python)代码self.master = None中,它总是保持None. 有没有办法正确地做到这一点?

我还尝试直接从 Master 中引发 Slave 事件,如以下问题所示:

import: "Slave.ysc"
var slave: Slave

raise slave.goto_b

但是在这里我也有一个参考是无的问题。

    self.slave.raise_goto_b()
AttributeError: 'NoneType' object has no attribute 'raise_goto_b'

我错过了一些简单的东西(对主/从变量的赋值或其他东西),还是 Python 绑定有问题?

标签: statechart

解决方案


我确实错过了一项任务。我应该更加努力地回答这个问题

所以我向从站发送了主状态机的引用。在主要:

master_fsm = MasterFsm()
slave_fsm = SlaveFsm(master_fsm)

'Fsms' 具有sm生成类的属性。所以在 SlaveFsm 的 init 方法中我做了:

def __init__(self, master_fsm):
    self.sm = Slave()
    self.sm.master = master_fsm.sm

然后它起作用了!


推荐阅读