gpt4 book ai didi

UML 状态机 : How to exit orthogonal child regions?

转载 作者:行者123 更新时间:2023-12-01 10:05:25 25 4
gpt4 key购买 nike

基于Wikipedia ,我可以进行分层状态分解,其中我有多个可以独立更改状态的正交区域。

该图显示了如何输入正交区域。我假设进入在所有地区并行发生。我想知道的是,退出怎么表达?如果每个区域都有导出,那么全局父状态是在第一个子区域退出时退出,还是在它们都退出时退出?我想表达的是,当他们全部 退出时,退出就会发生。你如何表达全局父状态转换到下一个全局状态因为所有子区域都已退出?这总是隐含的吗?

我的具体问题是我的 FSM 以 Initializing 全局状态启动。它向多个外部系统异步并行发送多个查询。只有在收到每个查询的答案后,它才能继续。因此,我将每个异步并行查询建模为全局 Initializing 状态内的正交区域。每个子区域都可以独立更改状态。当所有子区域都达到结束状态时,我可以继续。

FSM 将在 Actor 框架中实现,其中异步消息(事件)是唯一的通信方式。

理想情况下,我希望答案指向示例图像,因为这样的事情很难用语言表达。

最佳答案

从正交状态完成转换就可以解决问题,因为它会在所有正交区域都完成时进行。

当进入复合状态(具有内部状态和/或正交区域的状态)时,每个区域从其初始状态开始,使用 fork 伪节点进入每个区域中的不同状态,或者如果状态是通过历史伪状态进入的。退出复合状态可以通过从内部状态之一开始的转换来完成,该内部状态存在于当前状态的所有正交区域。如果你想在机器已经来到不同区域的一组状态时退出,你也可以使用 join pseudostates。

如您所见,可能性几乎是无限的。我现在还不能添加图像,但稍后当我手头有一个好的 UML 编辑器时,我会这样做。

现在举个例子。假设您有以下状态机: example state machine

  1. 如果两个并行区域都完成(到达最后一个节点),那么完成转换将从 S1 获取机器至 S5 .如果
  2. 如果机器当前在 S3并收到 e1 , 它将退出 S1然后转到 S6 .
  3. 如果机器在 S7S8他们都完成了,它将转到连接然后到 S6 .

这就是我所知道的状态机的工作方式。

关于UML 状态机 : How to exit orthogonal child regions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11382695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com