【问题标题】:Which states are active when not all transitions to a join pseudo state are enabled当不是所有到连接伪状态的转换都被启用时,哪些状态是活动的
【发布时间】:2014-03-28 09:07:35
【问题描述】:

考虑以下状态图:

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

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

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

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

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

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

【问题讨论】:

  • 您将客户的状态与客户造成的状态或如您所说的输入的状态混合在一起......什么是“这种情况”? “..behaviour I would like to get..” 你应该知道: 1. 你有什么。 (定义所有条款!) 2. 你想得到什么。 3. 你做了什么。 4. 出了什么问题。您应该向我们解释所有这 4 点。对不起,我看不懂你的文字。只有你的nooby状态才能让你免于结束问题。
  • @Gangnus 见帖子中的编辑。我希望你现在更清楚。解决你的4点。 1)我不明白 Join 状态是如何运作的 2)更好的理解 3)我阅读了规范...... 4)......但没有找到我想要的东西

标签: uml statechart


【解决方案1】:

连接伪状态如何发挥作用

来自 UML 标准的引用:

这种类型的伪状态用作两个或两个的公共目标顶点 更多来自不同正交顶点的转换 地区。

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

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

(顶点是状态或伪状态)

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

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

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

状态 Confirmed 是否保持活动状态直到 NotAssignded 转换 分配给?

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

"一个本地类型的转换可以显示为一个转换离开一个 包含文本“*.”的状态符号

你的图表没问题。

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

【讨论】:

  • 感谢您的努力和解释!
猜你喜欢
  • 1970-01-01
  • 2014-09-13
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
相关资源
最近更新 更多