0

考虑以下状态图:

状态图

客户获得状态已确认,资源处于未分配状态。没有为从 Confirmed 到 Join 伪状态的转换定义保护。

在这种情况下,状态 Confirmed 是否保持活动状态,直到 NotAssigned 转换为 Assigned?(即我可以发送触发器“取消”,以便客户进入“未确认”状态,这是我想要获得的行为)。还是我没有使用正确的方法来建模?(然后状态图会如何)

编辑(在评论 Gangnus 之后)我所追求的是理解

  • 连接伪状态如何起作用
  • 连接到连接的状态何时失去其活动状态

所以我想要获得的是对加入状态的更深入的了解。我查看了 UML 规范(formal-1108-06.pdf 第 15 章),但没有找到上面提到的我的场景的清晰描述:如果我输入 Confirmed,并且 Confirmed 使用没有保护的转换连接到 Join 或触发器指定,而 NotAssigned 在资源区域中处于活动状态,何时确认其活动状态:

  1. 进入状态后立即
  2. 当 NotAssigned 转换为 Assigned 时(然后两个状态都变为非活动状态并转换为 ExecutionAllowed。
4

1 回答 1

0

连接伪状态如何起作用

来自 UML 标准的引用:

这种类型的 Pseudostate 用作来自不同正交区域中的顶点的两个或多个转换的公共目标顶点。

在加入伪状态时终止的转换不能有警卫或触发器。

... join 伪状态执行同步功能,所有传入的转换必须完成,然后才能继续执行传出的转换。

(顶点是状态或伪状态)

连接到连接的状态何时失去其活动状态?

该状态会因某个事件或在其中结束 doActivity 行为后失去活动状态。任何状态或伪状态都不能影响其之前的状态的结束。您的状态 Confurmed 和 Assigned 没有事件,并且从它们到连接的转换没有任何行为,因此两个转换都是reached,traversedcompleted,并且连接只是等待它们都变为活动状态。

因此,连接仅在等待时“活动”。它没有真正的活动状态!因为它没有进入或退出行为。

在 NotAssignded 转换为 Assigned 之前,状态 Confirmed 是否保持活动状态?

请注意,这两种转换都可能是local- 这意味着,当它们完成时,它们将处于关闭状态、保持活动状态,或者external- 如果它们退出源顶点(状态已确认和已分配)。唉,UML 符号没有kind在它们上显示这种转换。但...

“本地类型的转换可以显示为留下包含文本“*”的状态符号的转换。”

你的图没问题。

为了更好地理解,请使用标准 2.5 beta 而不是 2.4。它们描述的是同一种语言,但 2.5 更容易理解。(还不是很明白)

于 2014-03-28T12:23:50.143 回答