我想知道您是否可以帮助我澄清有关多实例状态机的两个方面。
第一个问题
考虑一个示例状态机https://wso2.org/jira/browse/APIMANAGER-5361,其中包含一个状态 A :
在左侧,转换 start 会创建状态机的新实例。 Transition stop 终止实例。 可以有多个并行运行的状态机 SM1 实例,例如: 5个实例。
现在,我想要的是一个转换,它将终止在给定时间运行的所有状态机 SM1 实例。 例如。我们创建五个状态机 A ,然后转换 stopALL 将立即终止所有这些。
UML规范是否允许此类行为?如果是,是否有图形符号明确表示这种行为?我在UML规范文档中找不到答案。
第二个问题
考虑一个状态为 A 且一个转换 startStop 的多实例状态机:SM2
转换的行为如下:在触发时,转换会创建 SM2 的新实例并终止现有实例。
规范是否允许这种行为?是否有一种明确的图形方式来表达这种行为?
答案 0 :(得分:0)
没有特殊的UML方法,但标准的UML工具绝对足够。您需要广播终止信号(在状态机图上,您可以通过应该终止其他实例的转换的行为来表示它)。然后你只需要在终止接收时对状态机进入最终状态进行建模。
请注意,斜杠(/)之后的行为是在状态转换时调用的行为,即当状态机将状态更改为最终时,调用行为sendStopAllSignal,而这应该在类图上描述(可能具有相应的活动图) 同样,您需要在类图中包含receiveStopAllSignal行为。
这是类似的情况 - 你需要在其他地方建模sendStopSignal和receiveStopSignal。
但请注意,这种命名约定(sendAbcSignal用于发送/广播信号Abc和receiveAbcSignal的行为作为对Abc信号接收的反应)是非常常见的,有用的和不言自明的(即你可能不会模拟一个单独的除非需要一些额外的逻辑,否则这些行为的动作图表。)