根据OMG的文档《UML状态机的精确语义》第9.3.3.6章节中展示的状态机,可以定义从子状态到包含状态的本地转换。请注意保留HTML标签。
但是当本地转换T1.3被执行时,它会做什么呢?我认为状态S1.2会被离开,之后状态S1的默认条目会被应用,因此转换T1.1被执行并最终进入状态S1.1。
现在,哪种行为是正确的?难道运行到完成步骤表是错误的吗?
然而,该章节的运行到完成步骤表显示,在执行转换1.3之后,完成事件CE被生成,因此状态S1通过转换T3被离开:
这让我感到困惑,因为《UML规范2.5.1》第14.2.3.8.3章节指出像S1这样的复合状态的完成事件只有在它的所有正交区域都达到最终状态时才会生成。但是上面展示的状态机显然不是这种情况。现在,哪种行为是正确的?难道运行到完成步骤表是错误的吗?