状态机控制方法、装置和电子设备与流程

文档序号:32484212发布日期:2022-12-10 00:25阅读:39来源:国知局
状态机控制方法、装置和电子设备与流程

1.本技术属于计算机应用技术领域,具体的涉及状态机控制方法、装置和电子设备。


背景技术:

2.有限状态机(finite-state machine,fsm),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程、编译器、网络协议、计算与语言的研究。
3.在相关技术中,状态机控制方法采用分支逻辑法、状态转移表法、状态模式法,在这些方法基础上,使用一些处理手段有时可达到具有历史状态特征和层次化特征的目标,然而,这些处理手段需要与具体应用场景相关联,状态机的实现逻辑复杂,不具有通用性、可读性、可扩展性,无法有效应对具有历史状态和层次化特征的复杂场景。因此,如何降低状态机软件系统逻辑实现的复杂度成为亟待解决的重要问题。


技术实现要素:

4.为了弥补现有技术的不足,本技术提出了一种状态机控制方法、装置和电子设备。
5.第一方面,本技术提供一种状态机控制方法,包括:创建状态机的多个状态,确定每个所述状态的基本属性和行为属性,所述基本属性包括:状态的状态名、状态的父状态、状态的类型、状态的历史状态;所述行为属性包括:状态的入口动作、状态的出口动作、状态的活动处理、状态的事件处理;根据所述多个状态中每个状态的基本属性,构造所述多个状态对应的树状结构模型;相同父状态的状态属于所述树状结构模型的同一级;控制所述状态机根据所述树状结构模型和所述每个状态的行为属性处理所述接收到的事件。
6.在上述方案中,实现了创建状态机的状态以及构造对应的树状结构模型,从而实现了具有树状结构模型的状态机,由于提出了具有历史状态的层次化状态机模型,因此使得状态机软件代码与状态图中的模型实现对应,利用状态图的可视化特征,提升了软件代码的清晰性和可读性,大大降低了状态机软件系统逻辑实现的复杂度。
7.在一个实施例中,所述根据所述多个状态中每个状态的父状态,构造所述多个状态对应的树状结构模型,包括:确定所述多个状态中每个状态的父状态;按照父状态和子状态的关系,将所述多个状态中相同父状态的状态确定为所述树状结构模型的同一级;从上至下依次构造所述多个状态对应的树状结构模型。
8.在上述方案中,解决了如何构造树状结构模型的技术问题,实现了根据父子关系从上到下有层次的树状结构模型。
9.在一个实施例中,所述控制所述状态机根据所述树状结构模型和所述每个状态的行为属性处理所述接收到的事件,包括:确定所述树状结构模型中从顶层到初始状态的分支中的各个状态,从上至下依次激活分支中的各个状态;所述初始状态属于所述多个状态
中的简单状态;将所述接收到的事件发送至激活的简单状态处理,若激活的简单状态未消费所述接收到的事件,则将所述接收到的事件流转到第i状态处理;所述第i状态为所述简单状态的父状态;若所述简单状态的父状态未消费所述接收到的事件则将所述接收到的事件继续流转到第i+1状态处理,直到所述接收到的事件被消费;所述第i+1状态为所述第i状态的父状态。
10.在上述方案中,解决了具有树状结构模型的状态机如何处理事件的技术问题,实现了根据树状结构模型进入状态,以及状态机接收到事件后根据树状结构模型将事件发送至状态进行处理,树状结构模型的状态机可以呈现状态机的进入状态、状态间的事件流转关系,降低了状态机软件系统逻辑实现的复杂度。
11.在一个实施例中,所述控制所述状态机根据所述树状结构模型和所述每个状态的行为属性处理所述接收到的事件,包括:响应于当前状态消费了所述接收到的事件,若当前状态为简单状态,则直接退出所述当前状态;响应于当前状态消费了所述接收到的事件,若当前状态为复合状态,则在所述复合状态的子状态中确定处于激活状态的简单状态;从所述处于激活状态的简单状态开始依次向上退出,直到退出所述当前状态。
12.在上述方案中,解决了具有树状结构模型的状态机中如何退出状态的技术问题,实现了根据树状结构模型退出状态,树状结构模型的状态机使得状态退出过程清晰、降低了状态机软件系统逻辑实现的复杂度。
13.在一个实施例中,所述控制所述状态机根据所述树状结构模型和所述每个状态的行为属性处理所述接收到的事件,还包括:退出具有深历史状态的复合状态时,依次记录具有深历史状态的复合状态的每一层中态处于激活状态的子状态直到底层的简单状态;退出具有浅历史状态的复合状态时,记录具有浅历史状态的复合状态的当前层处于激活状态的子状态。
14.在上述方案中,解决了具有树状结构模型的状态机中复合状态如何退出的技术问题,树状结构模型的状态机使得复合状态退出时可以清晰记录历史状态,降低了状态机软件系统逻辑实现的复杂度。
15.在一个实施例中,所述控制所述状态机根据所述树状结构模型和所述每个状态的行为属性处理所述接收到的事件,包括:响应于当前状态消费了所述接收到的事件,若目标状态是同一级的简单状态,则直接激活所述目标状态;所述目标状态为所述当前状态要进入的状态;响应于当前状态消费了所述接收到的事件,若目标状态是同一级的复合状态,将要进入的复合状态上一次退出前激活的子状态确定为目标状态;在树状结构模型中确定从要进入的复合状态到目标状态的分支,从要进入的复合状态开始依次向下激活分支中的各个状态。
16.在上述方案中,解决了具有树状结构模型的状态机中如何进入状态的技术问题,实现了根据树状结构模型进入状态,树状结构模型的状态机使得状态进入过程清晰、降低了状态机软件系统逻辑实现的复杂度。
17.在一个实施例中,所述控制所述状态机根据所述树状结构模型和所述每个状态的行为属性处理所述接收到的事件,还包括:在激活所述多个状态中的简单状态后,执行处于激活状态的简单状态的活动处理;在激活所述多个状态中的复合状态后,从激活的复合状态开始依次向下,执行每一层中态处于激活状态的子状态的活动处理,直到底层的简单状
态。
18.在上述方案中,解决了具有树状结构模型的状态机中进入状态后如何执行活动处理的技术问题,树状结构模型的状态机使得进入状态后执行活动处理的过程清晰、降低了状态机软件系统逻辑实现的复杂度。
19.第二方面,本技术提供一种状态机控制装置,包括:
20.创建模块,用于创建状态机的多个状态,确定每个所述状态的基本属性和行为属性,所述基本属性包括:状态的状态名、状态的父状态、状态的类型、状态的历史状态;所述行为属性包括:状态的入口动作、状态的出口动作、状态的活动处理、状态的事件处理;
21.构造模块,用于根据所述多个状态中每个状态的基本属性,构造所述多个状态对应的树状结构模型;相同父状态的状态属于所述树状结构模型的同一级;
22.处理模块,用于响应于所述状态机接收到事件,控制所述状态机根据所述树状结构模型和所述每个状态的行为属性处理所述接收到的事件。
23.第三方面,本技术提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法的步骤。
24.第四方面,本技术提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,该计算机指令由处理器执行时实现上述任一项所述的状态机控制方法。
25.本技术提供的状态机控制方法,创建状态机的多个状态,确定每个状态的基本属性和行为属性;根据多个状态中每个状态的基本属性,构造多个状态对应的树状结构模型;响应于状态机接收到事件,控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件。其中,每个状态的基本属性包含状态的状态名、状态的父状态、状态的类型、状态的历史状态,状态的父状态可以呈现状态间的层次关系,状态的历史状态可以区分为深历史状态、浅历史状态、无历史状态。这样,状态机软件代码定义的每个状态的基本属性和行为属性,可以灵活配置各个状态间的状态转移条件、状态转移路径,基于多个状态中每个状态的基本属性构造的树状结构模型,可以表征复杂的业务逻辑,同时可以提升了软件代码的清晰性和可读性,达到高内聚、低耦合的特点,降低了状态机软件系统逻辑实现的复杂度。
附图说明
26.下面结合附图对本技术作进一步说明。
27.图1是本技术实施例公开的状态机控制方法的流程示意图。
28.图2是本技术实施例公开的状态机控制方法的应用场景图。
29.图3是本技术实施例公开的状态机控制方法的流程示意图。
30.图4是本技术实施例公开的状态机的树状结构模型的示意图。
31.图5是本技术实施例公开的状态机的树状结构模型的示意图。
32.图6是本技术实施例公开的状态机控制装置的结构示意图。
33.图7是本技术实施例公开的电子设备的结构示意图。
具体实施方式
34.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
35.图1为本技术公开的状态机控制方法的流程图,该方法可以应用于计算机等终端。例如,该状态机控制方法可以应用于对讲机控制系统,该方法可以包括以下步骤:
36.步骤101,创建状态机的多个状态,确定每个状态的基本属性和行为属性,其中,基本属性包括:状态的状态名、状态的父状态、状态的类型、状态的历史状态;行为属性包括:状态的入口动作、状态的出口动作、状态的活动处理、状态的事件处理。
37.在示例中,该步骤可以实施为创建接口。在实现状态机时,可以调用该创建接口,此时可以认为发出了创建指令。可以预先获取到各种建模语言构造的状态图,例如,统一建模语言(unified modeling language,uml)状态图、系统建模语言(systems modeling language,sysml)状态图等。
38.图2为本技术实施例公开的状态机控制方法的应用场景图。如图2所示,状态图作为一种行为图,描述一个特定对象的所有可能的状态、状态之间的转移以及触发状态转移的事件。参见图2,在对讲机应用场景下,状态机的多个状态,可以包括“非对讲状态”、“待机状态”、“频道显示状态”、“调频状态”、“频道显示界面”、“电量信息界面”、“fm播放界面”、“fm调频界面”。其中,频道显示状态、调频(frequency modulation,fm)状态可以是复合状态,频道显示状态的子状态包括频道显示界面、电量信息界面;fm状态的子状态包括fm播放界面、fm调频界面。箭头用于表示状态之间的转移,箭头上的触发条件表示状态转移的触发条件trigger[guard]/activity。
[0039]
在示例中,状态的基本属性包括状态的状态名、状态的父状态、状态的类型、状态的历史状态。其中,状态的基本属性可以反映状态的嵌套信息,即状态间的父子关系,状态的历史状态还可以进一步分为深历史状态和浅历史状态。
[0040]
在实际应用中,用户可以根据状态图定义出实际要创建的状态实例、每个状态实例的属性。调用创建接口根据状态图输入各类属性信息,发出创建指令。相应地,响应于创建指令,创建出状态机的状态实例,设置每个状态实例的基本属性和行为属性。其中,状态的基本属性包括:状态的状态名、状态的父状态、状态的类型、状态的历史状态;状态的行为属性包括:状态的入口动作、状态的出口动作、状态的活动处理、状态的事件处理。
[0041]
在示例中,状态名用于唯一标识状态机中的状态;父状态,表示状态的父状态是哪一个状态;状态的类型,表示状态为复合状态或简单状态,复合状态有至少一个子状态,简单状态没有子状态;状态的历史状态,分为深历史状态、浅历史状态或无历史状态。在实际应用中,可以为复合状态设置子状态列表,用于存储所有子状态,复合状态拥有一个初始子状态和当前处于激活状态的子状态。
[0042]
在示例中,状态的行为属性包括以下至少一个属性信息:状态的入口动作(entry activity)、状态的出口动作(exit activity)、状态的活动处理(do activity)。
[0043]
其中,状态的入口动作,表示由其它状态转移到该状态、进入该状态时要附带完成的动作,执行入口动作后的状态即被激活;状态的出口动作:从该状态转移到其它状态时、退出该状态要附带完成的动作;活动处理,表示进入该状态执行完入口动作后执行的活动,即该状态被激活后要执行的活动。
[0044]
其中,事件处理表示状态被激活后接收到事件并消费接收到的事件时,对不同的
事件进行的对应的处理,包括执行与事件对应的动作,或者触发事件对应的状态转移,其中,不同的事件可以对应不同的状态转移目标状态。
[0045]
步骤102,根据创建的多个状态中每个状态的基本属性,构造多个状态对应的树状结构模型;其中,相同父状态的状态属于树状结构的同一级;
[0046]
在示例中,该步骤可以实施为程序中的构造接口,当调用该构造接口时,可以自动创建的多个状态实例对应的树状结构模型。每个状态实例可以包括有父状态属性,因此,可以利用每个状态的父状态属性、状态间的父子关系构造树状结构模型。
[0047]
步骤103,响应于接收到事件,控制控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件。
[0048]
在上述方案中,利用树状结构模型实现状态机,可以清晰地呈现各个状态之间的层次化关系,可以呈现状态之间的转移关系,具有通用性、可读性、可扩展性。这样,可以提升软件代码的清晰性和可读性,降低状态机软件系统逻辑实现的复杂度。
[0049]
在上述状态机控制方法中,如图3所示,根据多个状态中每个状态的基本属性,构造多个状态对应的树状结构模型,可以包括以下步骤:
[0050]
步骤301,确定多个状态中每个状态的父状态;
[0051]
步骤302,按照父状态和子状态的关系,将多个状态中相同父状态的状态确定为树状结构模型的同一级;
[0052]
步骤303,从上至下依次构造多个状态对应的树状结构模型。
[0053]
图4、图5为根据图3的方法构造的示例性的状态机的树状结构模型的示意图。该树状结构模型图将创建的状态实例根据父子关系以树状结构排列。在图4中,本技术提出的状态机可以视为最顶层状态state0,所有对状态机的行为就是对顶层复合状态的行为。
[0054]
如图4所示,最顶层状态state0有3个子状态:state0_0,state0_1,state0_2。其中,state0_0和state0_1属于复合状态,而state0_2则是简单状态;state0_0有2个子状态:state0_0_0以及state0_0_1,state0_0_0以及state0_0_1均没有子状态,是简单状态。
[0055]
如图4所示,state0_1的下一级有3个子状态:state0_1_0、state0_1_1以及state0_1_2,其中state0_1_0是复合状态,具有子状态state0_1_0_0和state0_1_0_1,state0_1_1以及state0_1_2属于简单状态。按照父子关系排列为树状结构,每个状态设置有各自的属性。
[0056]
如图4所示,每个状态包括以下属性:状态的父状态(parent)、状态的类型(type)、状态的历史(history)属性。其中,若状态的父状态parent是null,表示无父状态,否则,状态的父状态parent表示的是父状态的状态名;若状态的类型type是composite,表示该状态为复合状态,若状态的类型type是simple,表示该状态为简单状态;
[0057]
如图4所示,关于状态的历史状态,若状态的历史history是deep,表示该状态具有深历史状态,若状态的历史history是shallow,表示该状态具有浅历史状态,若状态的历史history是none,表示该状态无历史状态。
[0058][0059]
在示例中,状态机的树状结构模型对应有预设的运行规则,以实现状态图中的状态转移。例如,在该树状结构模型中,同一时刻只有一个处于激活的底层简单状态,这个底层简单状态对应的上层父状态也处于激活,处于激活的状态会一直进行该状态自己对应的活动处理。
[0060]
在示例中,状态转移发生在同级状态之间,即两个状态具有相同的父状态。状态机可以接收并处理事件,不同状态在接收到同一个事件时有不同的处理结果,有的事件会触发激活状态的转移,有的事件不会触发激活状态的转移,是否触发状态转移由接收事件的激活的状态的事件处理来决定。
[0061]
以下,详细说明本技术提出的具有树状结构模型的状态机的运行方式。
[0062]
在上述步骤103中,控制控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件,可以包括以下步骤:
[0063]
确定树状结构模型中从顶层到初始状态的分支中的各个状态,从上至下依次激活分支中的各个状态,其中,初始状态属于多个状态中的简单状态,用户可以从多个状态中的简单状态中确定初始状态。
[0064]
在示例中,用户可以将一个底层简单状态设置为初始状态。如图4所示,将状态state0_1_0_0设置为初始状态。进入初始状态state0_1_0_0,可以根据树状结构模型确定从顶层到初始状态的分支,从上至下依次激活分支中的各个状态。例如,确定顶层状态state0到初始状态state0_1_0_0的分支中的各个状态,从上至下依次激活分支中的各个状态:state0_1、state0_1_0、state0_1_0_0。
[0065]
在示例中,激活状态是指执行该状态的入口动作后,该状态就处于激活状态。在激活简单状态后,执行处于激活状态的简单状态的活动处理;在激活复合状态后,从激活的复合状态开始依次向下,执行每一层中态处于激活状态的子状态的活动处理,直到底层的简单状态。
[0066]
在上述步骤103中,控制控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件,可以包括以下步骤:
[0067]
状态机接收到事件后,将接收到的事件发送至激活的简单状态处理,若激活的简单状态消费了接收到的事件,则将接收到的事件清除。
[0068]
状态机接收到事件后,将接收到的事件发送至激活的简单状态处理,若激活的简单状态未消费接收到的事件,则将接收到的事件流转到第i状态处理,第i状态为简单状态的父状态。
[0069]
进一步地,若简单状态的父状态仍未消费接收到的事件则将接收到的事件继续流转到第i+1状态处理,直到接收到的事件被状态消费;第i+1状态为第i状态的父状态。
[0070]
在示例中,“事件”是状态机的必备元素,“事件”用于触发状态机中状态的转移及动作的执行。当状态机接收到事件时,可以将事件发送至处于激活的底层的简单状态处理。如图4所示,若进入初始状态state0_1_0_0后,状态机接收到事件,此时就将事件发送至当前处于激活的底层简单状态state0_1_0_0进行对应的事件处理。
[0071]
在示例中,若底层的简单状态state0_1_0_0消费了该事件,则该将接收到的事件清除。若底层的简单状态state0_1_0_0未消费该事件,则将该事件流转到其父状态state0_1_0,若父状态state0_1_0仍然未消费该事件,则将事件继续流转到更上一层的父状态state0_1,重复该步骤,直到这个事件被某一层状态消费。若每一层状态都没有消费该事件,那么最终将丢弃这个事件。
[0072]
在上述步骤103中,控制控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件,可以包括以下步骤:
[0073]
响应于当前状态消费了接收到的事件(即退出当前状态进入目标状态),若当前状态为简单状态,则直接退出当前状态。
[0074]
响应于当前状态消费了接收到的事件,若当前状态为复合状态,则在复合状态的子状态中确定处于激活状态的简单状态;从处于激活状态的简单状态开始依次向上退出,直到退出当前状态。
[0075]
如图4所示,若激活的底层简单状态state0_1_0_0消费了接收到的事件,state0_1_0_0执行的事件处理是触发状态转移:从state0_1_0_0转移到同一级的state0_1_0_1,由于state0_1_0_0是简单状态,可以直接执行state0_1_0_0的出口动作即可实现退出state0_1_0_0。
[0076]
如图4所示,若激活的底层简单状态state0_1_0_0未消费该事件,该事件被流转到父状态state0_1_0。若state0_1_0消费了该事件,state0_1_0执行的事件处理是触发状态转移:从state0_1_0转移到同一级的state0_1_1,此时,则从复合状态state0_1_1的最底层处于激活状态的子状态开始依次向上退出,即执行state0_1_0_0的出口动作从而退出state0_1_0_0,接着执行state0_1_0的出口动作从而退出state0_1_0。
[0077]
在上述步骤103中,控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件,可以包括以下步骤:
[0078]
具有深历史状态的复合状态在退出时,依次记录每一层中态处于激活状态的子状态直到底层的简单状态;具有浅历史状态的复合状态在退出时,记录当前层处于激活状态的子状态。
[0079]
在上述方案中,在退出状态state0_1_0时,由于其是复合状态,且具有深历史状态,在此情况下,可以依次记录每一层中态处于激活状态的子状态直到底层的简单状态。这里,记录state0_1_0退出时激活的子状态是state0_1_0_0。等到下一次进入该复合状态state0_1_0时,就会直接进入其子状态state0_1_0_0。
[0080]
在上述步骤103中,控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件,可以包括以下步骤:
[0081]
响应于当前状态消费了接收到的事件,若目标状态是同一级的简单状态,则直接激活简单状态;响应于当前状态消费了接收到的事件,若目标状态是同一级的复合状态,将要进入的复合状态上一次退出前激活的子状态确定为目标状态,根据树状结构确定从要进
入的复合状态到目标状态的分支,从要进入的复合状态开始依次向下激活分支中的各个状态。
[0082]
如图4所示,若激活的state0_1_0_0消费了接收到的事件,执行的事件处理是触发状态转移:从state0_1_0_0转移到同一级的state0_1_0_1。从state0_1_0_0直接退出后,由于state0_1_0_1是简单状态,可以直接执行state0_1_0_1的入口动作即可实现激活state0_1_0_1,实现状态转移。激活简单状态(即执行简单状态的入口动作)后,执行该状态对应的活动处理。
[0083]
如图4所示,若当前激活的简单状态是state0_1_1,state0_1_1接收到事件后消费了该事件,执行的事件处理是触发状态转移:从state0_1_1转移到同一级的state0_1_0。由于state0_1_0是复合状态,根据要进入的复合状态state0_1_0的历史状态,将复合状态state0_1_0上一次退出前激活的子状态state0_1_0_0确定为目标状态,根据树状结构确定从复合状态state0_1_0到目标状态state0_1_0_0的分支:state0_1_0和state0_1_0_0。
[0084]
进一步地,从复合状态开始依次向下激活分支中的各个状态:state0_1_0和state0_1_0_0,从而实现转移至state0_1_0的子状态state0_1_0_0。,激活复合状态(即执行简单状态的入口动作)后,从复合状态开始依次向下,执行每一层中态处于激活状态的子状态各自对应的活动处理,直到底层简单状态。
[0085]
在上述方案中,通过为每个复合状态添加历史状态,在复合状态发生迁移时,根据历史状态记录复合状态的历史状态信息,在当前状态转移到某个复合状态时,根据历史状态自动激活到该复合状态上一次退出时处于激活的子状态。
[0086]
在上述步骤103中,控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件,可以包括以下步骤:
[0087]
在激活多个状态中的简单状态后,执行处于激活状态的简单状态的活动处理;在激活多个状态中的复合状态后,从激活的复合状态开始依次向下,执行每一层中态处于激活状态的子状态的活动处理,直到底层的简单状态。
[0088]
对应本公开实施例提供的状态机控制方法,本公开实施例提供一种状态机控制装置,如图6所示,该装置600包括:
[0089]
创建模块601,用于创建状态机的多个状态,确定每个状态的基本属性和行为属性,基本属性包括:状态的状态名、状态的父状态、状态的类型、状态的历史状态;行为属性包括:状态的入口动作、状态的出口动作、状态的活动处理、状态的事件处理;
[0090]
构造模块602,用于根据多个状态中每个状态的基本属性,构造多个状态对应的树状结构模型;相同父状态的状态属于树状结构模型的同一级;
[0091]
处理模块603,用于响应于状态机接收到事件,控制状态机根据树状结构模型和每个状态的行为属性处理接收到的事件。
[0092]
在一个实施例中,构造模块602用于:确定多个状态中每个状态的父状态;按照父状态和子状态的关系,将多个状态中相同父状态的状态确定为树状结构模型的同一级;从上至下依次构造多个状态对应的树状结构模型。
[0093]
在一个实施例中,处理模块603,还用于:根据树状结构模型确定从顶层到初始状态的分支中的各个状态,从上至下依次激活分支中的各个状态;其中,初始状态是从多个状态中的简单状态中确定的;将接收到的事件发送至激活的简单状态处理,若激活的简单状
态消费了接收到的事件,则将接收到的事件清除;若激活的简单状态未消费接收到的事件,则将接收到的事件流转到简单状态的父状态处理;若父状态仍未消费接收到的事件则将接收到的事件继续流转到父状态的父状态,直到接收到的事件被消费。
[0094]
在一个实施例中,处理模块603,还用于:响应于当前状态消费了接收到的事件,若当前状态为简单状态,则直接退出当前状态;响应于当前状态消费了接收到的事件,若当前状态为复合状态,则从复合状态的子状态中的激活的简单状态开始依次向上退出,直到退出当前状态。
[0095]
在一个实施例中,处理模块603,还用于:退出具有深历史状态的复合状态时,依次记录具有深历史状态的复合状态的每一层中态处于激活状态的子状态直到底层的简单状态;退出具有浅历史状态的复合状态时,记录具有浅历史状态的复合状态的当前层处于激活状态的子状态。
[0096]
在一个实施例中,处理模块603,还用于:响应于当前状态消费了接收到的事件,若目标状态是同一级的简单状态,则直接激活简单状态;响应于当前状态消费了接收到的事件,若目标状态是同一级的复合状态,将要进入的复合状态上一次退出前激活的子状态确定为目标状态;在树状结构模型中确定从要进入的复合状态到目标状态的分支,从要进入的复合状态开始依次向下激活分支中的各个状态。
[0097]
在一个实施例中,处理模块603还用于:激活简单状态后,执行状态的活动处理;激活复合状态后,从当前复合状态开始依次向下,执行每一层中态处于激活状态的子状态的活动处理,直到底层简单状态。
[0098]
对应本公开实施例提供的状态机控制方法,本公开实施例提供一种状态机控制装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行上述任一种状态机控制方法。
[0099]
本技术设计了一种状态机控制装置,可以使状态机软件代码与状态图中的模型实现对应,利用状态图的可视化特征,提升了软件代码的清晰性和可读性,大大降低了状态机软件系统逻辑实现的复杂度。
[0100]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0101]
图7是根据一示例性实施例示出的一种用于电子设备700的示意图,例如,电子设备700例如可以是计算机。电子设备至少包括:处理器701;和用于存储处理器可执行指令的存储器702;其中,处理器702被配置为执行上述状态机控制方法的步骤。
[0102]
对应本公开实施例提供的状态机控制方法,本公开实施例提供一种非临时性计算机可读存储介质,当存储介质中的指令由上述装置700的处理器执行时,使得上述装置700能够执行一种状态机控制方法。
[0103]
上文对各个实施例的描述倾向于强调各个实施例间的不同处,其相同或相似处可以互相参考,为了简洁,本文不再赘述。
[0104]
本技术所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。本技术所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。本技术所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
[0105]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,示例性地,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0106]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网格单元上;可以根据实际的可以选择其中的部分或全部单元来实现本实施例方案的目的。
[0107]
在本技术各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0108]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤。
[0109]
以上,仅为本技术的具体实施方式,但本技术的保护范围不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1