有限状态机的执行***及执行方法
技术领域
本发明涉及有限状态机,特别涉及有限状态机的执行***及执行方法。
背景技术
有限状态机具有有限个状态,一般包括状态及状态之间的转移关系。在有限状态机的***开发中,状态之间的转移根据当前状态及当前的输入事件设定相应的条件语句而实现。如此,当***包括大量的状态时,各个状态在转移过程中相互交叉,相互影响,导致***设计越来越复杂,使得***难以维护和扩展。
发明内容
有鉴于此,本发明提供了一种易于维护和扩展的有限状态机的执行***及执行方法。
一种有限状态机的执行***,所述有限状态机的执行***包括:引擎单元,用于接收输入事件,作为有限状态机的触发事件;存储单元,用于存储有限状态机的当前状态以及状态转移表;执行单元,用于从存储单元中获取有限状态机的当前状态,并根据引擎单元提供的输入事件以及存储单元中存储的状态转移表获取当前状态机要转移的下一状态机以及根据获取的下一状态机更新有限状态机的当前状态;所述状态转移表包括N层状态机,上层状态机包括若干相斥的下层状态机,属于同一上层状态机的若干个下层状态机是通过继承该上层状态机而获得,下层状态机设置有进入其所继承的上层状态机的接口模块,使得下层状态机可以将消息传递给其继承的上层状态机,N层状态机中的每个状态机只有一个实例,只处理与该实例直接关联的输入事件,N层中的状态机层在接收到与其并无直接联系的输入事件时,通过接口模块将该输入事件传送至上层的状态机处理,如上层的状态机与该输入事件也不直接关联,则上层的状态机通过其接口模块将该输入事件传送至更上层的状态机,直至传送至处理该输入事件的状态机。
一种有限状态机的执行方法,包括步骤:接收输入事件,作为有限状态机的触发事件;获取有限状态机的当前状态,并根据引擎单元提供的输入事件以及一状态转移表,获取当前状态机要转移的下一状态机,所述状态转移表包括N层状态机,上层状态机包括若干相斥的下层状态机,属于同一上层状态机的若干个下层状态机是通过继承该上层状态机而获得,下层状态机设置有进入其所继承的上层状态机的接口模块,使得下层状态机可以将消息传递给其继承的上层状态机,N层状态机中的每个状态机只有一个实例,只处理与该实例直接关联的输入事件,N层中的状态机层在接收到与其并无直接联系的输入事件时,通过接口模块将该输入事件传送至上层的状态机处理,如上层的状态机与该输入事件也不直接关联,则上层的状态机通过其接口模块将该输入事件传送至更上层的状态机,直至传送至处理该输入事件的状态机;根据获取的下一状态机更新有限状态机的当前状态。
上述有限状态机的执行***及执行方法在删除某状态机时只需删除该状态机即可,并不影响其他状态机的设置,而在建立新的状态机时,只需建立该新的状态机及该新的状态机与对应的上层状态机之间的继承关系即可,易于维护和扩展。
附图说明
图1为一实施方式中有限状态机的执行***的模块图。
图2为图1中的状态转移表的示意图。
图3为一实施方式中有限状态机的执行方法的流程图。
主要元件符号说明
有限状态机的执行*** |
10 |
引擎单元 |
20 |
存储单元 |
30 |
执行单元 |
40 |
状态转移表 |
50 |
有限状态机的执行方法 |
步骤S610-S630 |
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
请参考图1及图2,为一实施方式中有限状态机的执行***10的模块图。有限状态机的执行***10包括引擎单元20、存储单元30及执行单元40。
引擎单元20用于接收输入事件,作为有限状态机的触发事件。
存储单元30用于存储有限状态机的当前状态以及状态转移表50。状态转移表50包括N层状态机,N层状态机包括1个层1状态机,该层1状态机包括若干个相斥的层2状态机,每个层2状态机下包括若干个相斥的层3状态机,依次类推,直至若干个相斥的层N-1状态机,每个层N-1状态机下包括若干个相斥的层N状态机。其中,属于同一上层状态机的若干个下层状态机是通过继承该上层状态机而获得。下层状态机设置有进入其所继承的上层状态机的接口模块,使得下层状态机可以将消息传递给其继承的上层状态机。N层状态机中的每个状态机用于根据引擎单元20接收的输入事件来进行预订处理。每一个层N状态机只有一个实例,只处理与该实例直接关联的输入事件,层N状态机在接收到与其并无直接联系的输入事件时,通过接口模块将该输入事件传送至上层的状态机处理,如上层的状态机与该输入事件也不直接关联,则上层的状态机通过其接口模块将该输入事件传送至更上层的状态机,直至传送至处理该输入事件的状态机,即与该输入事件直接关联的状态机。
执行单元40用于从存储单元30中获取有限状态机的当前状态,并根据引擎单元20提供的输入事件以及存储单元30中存储的状态转移表50获取当前状态机要转移的下一状态机以及根据获取的下一状态机更新有限状态机的当前状态。
请参阅图3,为一实施方式中有限状态机的执行方法的流程图,包括以下步骤:
引擎单元20接收输入事件,作为有限状态机的触发事件(S610);
执行单元40获取有限状态机的当前状态,并根据引擎单元20提供的输入事件以及一状态转移表,获取当前状态机要转移的下一状态机(S620);
上述状态转移表50包括N层状态机,N层状态机包括1个层1状态机,该层1状态机包括若干个相斥的层2状态机,每个层2状态机下包括若干个相斥的层3状态机,依次类推,直至若干个相斥的层N-1状态机,每个层N-1状态机下包括若干个相斥的层N状态机。其中,属于同一上层状态机的若干个下层状态机是通过继承该上层状态机而获得。下层状态机设置有进入其所继承的上层状态机的接口模块,使得下层状态机可以将消息传递给其继承的上层状态机。N层状态机中的每个状态机用于根据引擎单元20接收的输入事件来进行预订处理。每一个层N状态机只有一个实例,只处理与该实例直接关联的输入事件,层N状态机在接收到与其并无直接联系的输入事件时,通过接口模块将该输入事件传送至上层的状态机处理,如上层的状态机与该输入事件也不直接关联,则上层的状态机通过其接口模块将该输入事件传送至更上层的状态机,直至传送至处理该输入事件的状态机,即与该输入事件直接关联的状态机。
执行单元40根据获取的下一状态机更新有限状态机的当前状态(S630)。
上述有限状态机的执行***及执行方法中的状态转移表中的下层状态机与上层状态机之间是继承关系,每一状态机只处理与之直接关联的事件,且下层状态机通过接口模块将接收的与之非直接关联的输入事件传送给上层状态机进行处理。如此,上述有限状态机的执行***及执行方法在删除某状态机时只需删除该状态机即可,并不影响其他状态机的设置,而在建立新的状态机时,只需建立该新的状态机及该新的状态机与对应的上层状态机之间的继承关系即可,易于维护和扩展。