UML Multi-Instance 状态机可视化

UML Multi-Instance State Machine Visualisation

我想知道你是否可以帮助我澄清关于 multi-instance 状态机的两个方面。

第一题

考虑一个示例状态机 SM1 包含一个状态 A

在左侧,transition start 创建状态机的新实例。转换 stop 终止实例。 可以有多个状态机实例 SM1 运行 并行,例如5 个实例。

现在,我想要的是一个转换,它将终止在给定时间处于 运行 的所有状态机 SM1 实例。 例如。我们创建五个状态机 A 然后转换 stopALL 将立即终止所有状态机。

UML 规范允许这种行为吗?如果是,是否有图形符号来明确表示这种行为?我在 UML 规范文档中找不到答案。

第二题

考虑一个 multi-instance 状态机 SM2 with state A and one transition startStop:

转换的行为如下:触发时,转换创建 SM2 的新实例并终止现有实例。

规范允许这种行为吗?是否有明确的图形方式来表达这种行为?

没有专门的UML方法,但是标准的UML工具绝对够用。您需要广播终止信号(在状态机图上,您可以通过应该终止其他实例的转换行为来表示它)。然后你只需要在终止接收时建模状态机进入最终状态。

终止所有示例

请注意,斜线 (/) 之后的行为是在状态转换时调用的行为,即当状态机将其状态更改为最终状态时,将调用行为 sendStopAllSignal,这又应该在 class 图上进行描述(可能对应activity 图) 同样,您需要在 class 图表中包含一个 receiveStopAllSignal 行为。

在开始时终止现有的

这是类似的情况 - 您需要在其他地方建模 sendStopSignal 和 receiveStopSignal。

但是请注意,这样的命名约定(sendAbcSignal 代表 sending/broadcasting 信号 Abc 的行为,receiveAbcSignal 代表对 Abc 信号接收的反应行为)非常常见、有用且不言自明(即你可能不会'除非那里需要一些额外的逻辑,否则不要为这些行为建模单独的动作图。