分层状态机中的父状态机转换

时间:2013-09-17 15:35:47

标签: state hierarchical

我是Hierarchical State Machines的新手。

当父状态转换到另一个状态时,子状态会发生什么?它是否保持现状?

我想从名为running的父状态转换为名为fault的父状态。一旦故障被清除,我想转换回运行状态并进入第一个子状态。

史蒂芬

2 个答案:

答案 0 :(得分:0)

  1. 运行到错误:触发一个名为“EVT_Fault”
  2. 的事件的触发器
  3. 例如,“low”和“high”是两个运行
  4. 的子状态
  5. 将初始节点置于运行状态并将目标设为“低”
  6. 进行从falut到running的转换,不要对转换进行任何触发。 (这是完成过渡)
  7. 假设低是活动状态,触发EVT_Fault,发生以下序列:

    low.exit
    
    running.exit
    
    transition_running_to_fault.effect
    
    fault.entry
    
    (when entry finished, since there is completion transition)
    
    fault.exit
    
    transition_fault_to_running.effect
    
    running.entry
    
    transition_initial_to_low.entry
    

答案 1 :(得分:0)

退出父状态时,其子状态也应该退出。

要在重新进入父状态时实现子状态的重新进入,您需要一个历史伪状态(深或浅,取决于您的子状态的深度)。

在此处查看示例:http://www.steelbreeze.net/state.js/#examples - 按两次“翻转”按钮可显示行动中的深层历史记录。

DMM