You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于OMG《UML状态机精确语义》中本地转换T1.3执行逻辑的问询

解析UML状态机中本地转换T1.3的执行行为

嘿,我来帮你理清这个容易混淆的UML状态机本地转换问题——你的初始理解确实有点偏差,咱们结合OMG《UML状态机精确语义》9.3.3.6节的运行至完成(Run-to-Completion)规则一步步拆解:

核心前提:本地转换的本质

本地转换是从子状态到其直接包含状态的转换,它的关键特点是不会退出包含状态本身,只处理源子状态到包含状态的路径。

T1.3的完整执行流程

  1. 退出源子状态S1.2
    触发T1.3后,首先会退出S1.2(如果S1.2定义了退出动作,会执行这些动作),但不会退出父状态S1——因为本地转换的目标是S1,而不是离开S1。

  2. 执行转换T1.3的自身动作
    按照运行至完成的步骤,退出源状态后,会执行T1.3附带的所有动作(比如行为调用、变量赋值等,如果有定义的话)。

  3. 进入包含状态S1的顶层
    这是最容易误解的地方:当转换目标是包含状态S1时,不会触发S1的默认进入规则(也就是你以为的T1.1转换)。根据9.3.3.6节的规定,只有当包含状态是通过外部转换进入,或者被显式要求重新初始化时,才会执行它的默认进入子状态的逻辑。

    所以执行完T1.3后,状态机会停留在S1的顶层状态,而不会进入S1.1或者其他子状态——此时S1是活跃的,但它的子状态都不活跃。

引用9.3.3.6节的关键规则

根据OMG《UML状态机精确语义》9.3.3.6节:本地转换的执行仅涉及退出源子状态到包含状态的路径,转换完成后进入包含状态本身,而不会触发包含状态的默认进入转换。包含状态的默认进入逻辑仅在该状态被外部转换进入,或者被显式重置时才会触发。

总结

简单来说,T1.3执行后,状态机的状态是仅处于S1(无活跃子状态),而不是进入S1.1。你的初始误解在于混淆了“进入包含状态”和“重新初始化包含状态”的场景——只有后者才会触发默认进入转换。

内容的提问来源于stack exchange,提问作者Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:17:49