在 Yakindu 的多状态机建模中将事件发送到 parent 状态图

Send events to parent statechart in multi state machine modeling in Yakindu

我有 2 个状态图,一个是 parent,另一个是 child。创建 parent 状态图时,它还会使用

创建一个 child 状态图
import: "Child.ysc"
var child: Child

parent状态图可以很容易地在child状态图中引发事件,例如:

raise child.goToD

但问题是无法在 child 状态图中引用相同的 parent 以在 parent 中引发事件。有没有办法将事件发送到 parent 状态图?或者 child 可以将自身的引用作为属性发送给 parent(例如,在 python 中使用 this)然后保存它在要访问以发送这些事件的变量中?

PS:两个状态图都有默认域而不是 C/C++ 域

基本上有两种方法。

第一种方法是定义从 child 状态图到 parent 的显式引用。就像您为 parent.

做的那样
import: "Parent.ysc"
var parent : Parent 

请注意,您必须在 C++ 代码中明确设置关系:

child.setParent(&parent);

第二种方法是使用事件。 child 可以定义如下事件:

interface:
    out event dReached

在 child 状态图中的某处提高它:

raise dReached

并使用该事件作为 parent 中的触发器:

child.dReached / doSomething()

生成的 parent 代码将关注订阅和监听 child 发出的事件。

大多数情况下我更喜欢第二种方法。它并不意味着 parent 和 child 之间的双向依赖关系。