如何解决雅金都多状态机建模中将事件发送到父状态图
我有 2 个状态图,一个是父级,另一个是子级。创建父状态图时,还会使用
创建子状态图import: "Child.ysc"
var child: Child
父状态图可以轻松引发子状态图中的事件,例如:
raise child.goToD
但问题是无法在子状态图中引用同一个父级来在父级中引发事件。有没有办法将事件发送到父状态图?或者孩子可以将自身的引用作为属性发送给父级(例如在 python 中使用 this ),然后可以将其保存在一个变量中以供访问以发送这些事件?
PS:两个状态图都有默认域而不是 C/C++ 域
解决方法
基本上有两种方法。
第一种方法是定义从子状态图到父状态的显式引用。就像你为父母所做的那样。
import: "Parent.ysc"
var parent : Parent
请注意,您必须在 C++ 代码中明确设置关系:
child.setParent(&parent);
第二种方法是使用事件。孩子可以定义如下事件:
interface:
out event dReached
在子状态图中的某处提升它:
raise dReached
并将事件用作父级中的触发器:
child.dReached / doSomething()
生成的父代码会关心订阅和监听子进程发出的事件。
大多数情况下,我更喜欢第二种方法。它并不意味着父子之间的双向依赖。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。