首页 文章

UML多实例状态机可视化

提问于
浏览
2

我想知道你是否可以帮助我澄清有关多实例状态机的两个方面 .

First question

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

enter image description here

在左侧,转换开始创建状态机的新实例 . Transition stop终止实例 . 可以存在多个并行运行的状态机SM1的实例,例如, 5个实例 .

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

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

Second question

考虑具有状态A和一个转换startStop的多实例状态机SM2
enter image description here

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

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

1 回答

  • 0

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

    终止所有示例

    EndTerminate
    请注意,斜杠(/)之后的行为是在状态转换时调用的行为,即当状态机将其状态更改为最终时,调用行为sendStopAllSignal,而这应该在类图上描述(可能具有相应的活动图)同样,您需要在类图中包含receiveStopAllSignal行为 .

    在开始时终止现有

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

    但请注意,这种命名约定(sendAbcSignal用于发送/广播信号Abc和receiveAbcSignal的行为作为对Abc信号接收的反应)是非常常见,有用且不言自明的(即您可能不会为单独的动作图建模那些行为,除非那里需要一些额外的逻辑) .

相关问题