当未启用所有到连接伪状态的转换时,哪些状态是活动的

时间:2014-03-28 09:07:35

标签: uml statechart

考虑以下状态图: statechart

客户获取状态确认,资源处于NotAssigned状态。从Confirmed到Join伪状态的转换没有定义保护。在这种情况下,状态确认是否保持活动状态,直到NotAssignded转换为Assigned? (即我可以发送触发器'取消'以便客户进入“NotConfirmed'”状态,这是我想要获得的行为)。或者我没有使用正确的方法对此进行建模? (那么状态图将如何显示)

编辑(评论Gangnus后) 我之后理解

  • 如何加入伪状态函数
  • 连接到连接的状态何时失去其活动状态

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

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

1 个答案:

答案 0 :(得分:0)

  

如何加入伪状态函数

来自UML标准的引用:

  

这种类型的伪状态作为两个或两个的共同目标顶点   更多来自不同正交的顶点的过渡   区域。

     

在连接Pseudostate上终止的转换不能有   警卫或触发器。

     

...加入   伪状态执行同步功能,从而所有传入   转换必须在执行之前完成才能继续   传出过渡。

(顶点是状态或伪状态)

  

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

状态通过某种事件或在结束其中的doActivity行为之后丢失活动状态。任何状态或伪状态都不会影响国家的结局。您的状态Confurmed和Assigned没有事件,并且从它们到连接的转换没有行为,因此两个转换同时是reachedtraversedcompleted,并且连接仅仅等待两个他们变得活跃。

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

  

状态确认在NotAssignded转换之前保持活动状态   分配?

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

  

“一种本地的过渡可以显示为过渡离开一个   包含文本“*。”“

的状态符号

你的图表没问题。

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