首页/开发/系统分析与架构设计速查/复合状态与历史伪状态
需求分析与建模61 条

复合状态与历史伪状态

复合状态内部嵌套子状态机,可划分多个区域并行运行;浅历史 H 记住最近子状态,深历史 H* 恢复嵌套层次;用于复杂流程的分层建模。

复合状态状态内部再含状态机,可简化外部转换
区域(region)同一复合状态内并行运行的多条子状态机
历史伪状态浅历史 H 恢复一层,深历史 H* 恢复全部嵌套层次

复合状态示例(PlantUML 片段)

复合状态示例(PlantUML 片段)
state 运单流 {
  [*] --> 待揽收
  待揽收 --> 运输中 : 揽收
  state 运输中 {
    [*] --> 干线
    干线 --> 末端 : 到达分拨
  }
  运输中 --> 已签收 : 妥投
}
复杂状态机建议分层:先画一级状态,再把每个状态单独展开,避免一张图几百个节点。

易错点

  • 并行区域之间共享可变状态,产生难以复现的竞态
  • 滥用深历史恢复,对象行为依赖隐式记忆,测试难以构造

数据来源与参考

  • OMG UML 2.5.1 规范
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌