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

如何将UML状态机中的composite state A提取为独立图并处理转移?

用Exit Point拆分复合状态A到B的转移的实现方案

这事儿其实是UML状态机拆分大型复合状态的标准操作,用Exit Point(出口点)来做衔接就很顺畅,我给你拆解成一步步的具体操作:

  • 第一步:重构主状态机图中的复合状态A
    把原来包含A1、A2的复合状态A,改成一个黑盒化的引用子状态机:

    • 主图里的A不再展示内部子状态,只保留必要的接口:
      1. 添加一个入口点(Entry Point),对应原来从主初始状态进入A的路径,确保外部能正确进入A的内部状态机。
      2. 添加一个出口点(Exit Point),比如命名为Exit_A,作为A对外暴露的“离开端口”。
  • 第二步:创建独立的状态机图(原复合状态A的内部逻辑)
    单独新建一个状态机图来承载原来A的内部逻辑:

    • 图中包含原有的初始状态、A1、A2状态,以及A1到A2的E1触发转移。
    • 在这个独立图的边界上添加一个出口点伪状态,命名和主图里的Exit_A完全一致。
    • 修改原A2到B的转移:把原来直接指向B的箭头,改成从A2出发,以E2为触发事件,指向这个独立图里的Exit_A出口点。
  • 第三步:在主图中完成跨图转移的衔接
    回到主状态机图,补充从A的出口点到B的转移:

    • 从A的Exit_A出口点出发,添加一条转移箭头,触发事件同样为E2,直接指向状态B。

这样就把原来的单段转移A2 --E2--> B拆分成了两段:

  1. 子状态机内部:A2 --E2--> Exit_A
  2. 主图层面:A(Exit_A) --E2--> B

额外注意事项

  • 出口点的命名要在主图和子状态机图中保持一致,这样UML工具才能识别这是同一个衔接端口。
  • 如果有多个从A内部到外部的转移,可以给每个转移对应不同的出口点,方便区分不同的离开场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:43:53