statechart - 我如何对来自 Yakindu 的主状态图的事件做出反应?
问题描述
我有一个状态图,它依赖于另一个状态图。我们称他们为主人和奴隶。
在从属状态图中,我导入主控并将其分配给一个变量。
import: "Master.ysc"
var master: Master
假设当 Master 触发事件时,Slave 状态图处于StateA
并且想要去。然后作为过渡触发器,我使用StateB
B
master.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 绑定有问题?
解决方案
我确实错过了一项任务。我应该更加努力地回答这个问题。
所以我向从站发送了主状态机的引用。在主要:
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
然后它起作用了!
推荐阅读
- spring - 用于 Google Cloud SQL Postgres 的 Spring JPA applicationContext.xml
- python - 机器字典理解或现有字典的深度复制更容易什么?
- javascript - 如果我在页面中添加空白,会发生什么?
- python - 为什么我的 8kHz wav 文件的 mel 特征在 sr = 16kHz 和 44.1kHz 中提取的不同
- angular - 以 Angular 7 保存和访问服务中的数据
- c# - 如何将邮件项从文件保存到 Outlook
- three.js - 在三个 js 中应用平滑着色来渲染对象
- asp.net-mvc - 模型未从控制器传递到视图
- pyspark - 删除 Spark 数据框中的连续重复项
- flutter - 如何在具有泛型类型的类中启用协变?