Skip to main content

子状态机的行为 Behavior of Sub-State Machine

子状态机的行为在初看的时候可能有些违反直觉,但一旦理解它的行为之后,实际上这是个很简单而且非常有趣的系统。

一般过度
  • 在子状态机内部的过度和在主状态机的过度完全一致。

 

Entry 和 Exit 以及 Anystate
  • 当子状态机上层过度到子状态机时
    • 当从子状态机的上一层的任何状态过度到子状态机本身而不是子状态机内的任何一个状态时,将从子状态机的 Entry 连接到的状态开始。
    • 当从子状态机的上一层的任何状态过度到子状态机本身而不是子状态机内的任何一个状态时,并且这些过度有条件,从满足条件的开始。
    • 当从子状态机的上一层的任何状态过度到子状态机本身而不是子状态机内的任何一个状态时,并且这些过度有条件,并且有多个过度满足条件,从最先创建的满足条件的过度开始。
    • 子状态机的上一层同时向子状态机本身和子状态机内的任何一个状态过度,并且均满足过度条件,从最先创建的满足条件的开始。
    • 子状态机的上一层同时向子状态机本身和子状态机内的任何一个状态过度,并且均满足过度条件,从最先创建的满足条件的开始。
    • 子状态机的上一层同时向子状态机内的多个状态过度,并且均满足过度条件,从最先创建的满足条件的开始。

 

  • 当子状态机内过度到 Exit 时
    • 如果在上一层没有子状态机本身向其他任何状态的过度,从上一层的 Entry 开始。
    • 如果在上一层有一条子状态机本身向其他任何状态的过度,从这个过度开始。
    • 如果在上一层有超过一条子状态机本身向其他任何状态的过度,从最先创建的过度开始。
    • 如果在上一层有超过一条子状态机本身向其他任何状态的过度,并且这些过度有条件,从满足条件的过度开始。
    • 如果在上一层有超过一条子状态机本身向其他任何状态的过度,并且这些过度有条件,并且有多条过度均满足条件,从最先创建的满足条件的过度开始。
    • 如果在上一层有一条超过一条子状态机本身向其他任何状态的过度,并且这些过度有条件,但是均不满足过度条件,从上一层的 Entry 开始。

 

  • 无论在主状态机还是任意子状态机
    • 当 Anystate 的过度条件满足时,过渡到该过度连接的状态。
    • Anystate 跨任意子状态机层级运行。

 

太长不想读
  • 如果满足条件
    • 条件 > 创建顺序
  • 不满足条件,就回到上一层的 Entry
  • 连接状态机或者内部的状态 不重要