考虑以下状态图:
客户获取状态确认,资源处于NotAssigned状态。从Confirmed到Join伪状态的转换没有定义保护。在这种情况下,状态确认是否保持活动状态,直到NotAssignded转换为Assigned? (即我可以发送触发器'取消'以便客户进入“NotConfirmed'”状态,这是我想要获得的行为)。或者我没有使用正确的方法对此进行建模? (那么状态图将如何显示)
编辑(评论Gangnus后) 我之后理解
所以我想要获得的是对连接状态的更深入理解。我查看了UML规范(formal-1108-06.pdf第15章),但没有找到上面提到的场景的清晰描述:如果我输入Confirmed,并且确认连接到使用无保护的转换的Join或指定触发器,而NotAssigned在资源区域中处于活动状态,何时确认其活动状态:
答案 0 :(得分:0)
如何加入伪状态函数
来自UML标准的引用:
这种类型的伪状态作为两个或两个的共同目标顶点 更多来自不同正交的顶点的过渡 区域。
在连接Pseudostate上终止的转换不能有 警卫或触发器。
...加入 伪状态执行同步功能,从而所有传入 转换必须在执行之前完成才能继续 传出过渡。
(顶点是状态或伪状态)
连接到连接的状态何时失去活动状态?
状态通过某种事件或在结束其中的doActivity行为之后丢失活动状态。任何状态或伪状态都不会影响国家的结局。您的状态Confurmed和Assigned没有事件,并且从它们到连接的转换没有行为,因此两个转换同时是reached
,traversed
和completed
,并且连接仅仅等待两个他们变得活跃。
因此,只有在等待时,联接才是“活动的”。它没有真正的活跃状态!因为它没有进入或退出行为。
状态确认在NotAssignded转换之前保持活动状态 分配?
请注意,这两个转换都可能是local
- 这意味着,当它们完成时,它们将要关闭的状态,保持活动状态,或external
- 如果它们退出源顶点(状态已确认和已分配)。唉,UML表示法没有显示它们的kind
转换。但...
“一种本地的过渡可以显示为过渡离开一个 包含文本“*。”“
的状态符号
你的图表没问题。
为了更好地理解,请使用标准2.5 beta而不是2.4。他们用相同的语言描述,但2.5更容易理解。 (还不是很容易理解)