我想知道您是否可以帮助我澄清关于多实例状态机的两个方面。
第一个问题
考虑一个包含一个状态A的示例状态机https://developer.qcloudimg.com/http-save/yehe-900000/3671552ed6b178b6e3776a1cd0777549.png:

在左边,创建状态机的一个新实例。转换停止终止实例。状态机SM1的多个实例可以并行运行,例如5个实例。
现在,我想要的是一个转换,它将终止在给定时间运行的所有状态机SM1实例。例如,我们创建了五个状态机A,然后转换stopALL将同时终止所有这些机器。
UML规范是否允许这样的行为?如果是,是否有明确表示这种行为的图形符号?我在UML规范文档中找不到答案。
第二个问题
考虑具有状态A和一个转换https://developer.qcloudimg.com/http-save/yehe-900000/960e64e2dce1f2105be05997a5a4edaf.png的多实例状态机startStop:

转换的行为如下:一旦触发,转换就会创建SM2的一个新实例,并终止现有的实例。
这种行为是否被规范所允许?是否有明确的图形方式来表达这样的行为?
发布于 2016-10-05 18:35:13
没有特殊的UML方法,但是标准的UML工具是绝对足够的。您需要广播终止信号(在状态机关系图上,您可以通过应该终止其他实例的转换上的行为来表示它)。然后,您只需要建模,在终止接收时,状态机将进入最终状态。
终止所有示例

请注意,斜杠(/)后的行为是在状态转换上调用的行为,即当状态机将状态更改为最终状态时,将调用行为sendStopAllSignal,这反过来应该在类图(可能有相应的活动图)上进行描述,类似地,您需要在类图中包含receiveStopAllSignal行为。
终止开始时存在的

这是类似的情况--您需要在其他地方同时建模sendStopSignal和receiveStopSignal。
但是,请注意,这种命名约定(sendAbcSignal用于发送/广播信号Abc的行为,receiveAbcSignal用于行为作为对Abc信号接收的反应)是相当常见的、有用的和不言自明的(也就是说,除非需要一些额外的逻辑,否则您可能不会为这些行为建模单独的动作图)。
https://stackoverflow.com/questions/39878198
复制相似问题