【发布时间】:2015-09-02 12:20:16
【问题描述】:
如果转换选择算法 (TSA) 发现两个转换都应该触发并且以下情况成立,那么 UML 状态机会发生什么:
- 转换 #1 直接以状态结束
- 转换 #2 以选择伪状态(中间)结束
由于两个转换都会触发,因此它们不会发生冲突。否则他们一开始就不会被 TSA 选中。
现在发生以下情况: 在评估选择时(在转换 #2 之后),它采用一条路径(转换),该路径将导致转换 #2 的源状态的祖先状态退出。由于祖先状态的退出,与转换 #1 发生冲突。
UML 图显示了这种情况
(根据与 Thomas Kilian 在 cmets 中对他(现已删除)答案的讨论进行了改进)
...如果 Event_1 发生并且 x
问题
- 状态机是否不正确或现在应该发生什么?
- 选择退出状态后的转换是否违法?至少它不能很好地与“转换执行序列”(退出、转换行为、进入)配合使用。在这种情况下,它将是退出,行为,退出,行为,进入。我在 UML 上层结构规范(第 15 章)中找不到任何相关内容。但是,关于正交区域的所有内容都在该文档中进行了非常模糊的描述......
动机
我是从图书馆实施者的角度提出这个问题的。所以我的重点不是如何以更好的方式设计这种情况。我需要弄清楚如何正确处理这种情况(或者我需要知道这是一种非法情况)。
【问题讨论】:
标签: uml state-machine