CN105045603A - 一种构建有限状态机模型框架的方法、装置及电子装置 - Google Patents
一种构建有限状态机模型框架的方法、装置及电子装置 Download PDFInfo
- Publication number
- CN105045603A CN105045603A CN201510523930.XA CN201510523930A CN105045603A CN 105045603 A CN105045603 A CN 105045603A CN 201510523930 A CN201510523930 A CN 201510523930A CN 105045603 A CN105045603 A CN 105045603A
- Authority
- CN
- China
- Prior art keywords
- state
- event
- transferring
- mapping table
- state transferring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明的实施例公开一种构建有限状态机模型框架的方法、装置及电子装置。构建有限状态机模型框架的方法包括:依据对象的状态生成对象状态集;确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建状态转换映射表;向预先设置的事件分发控制器注册构建的状态转换映射表。应用本发明,可以支持扩展的对象状态转换增减、提升进行状态转换的编码效率。
Description
技术领域
本发明涉及计算机通信应用技术,尤其涉及一种构建有限状态机模型框架的方法、装置及电子装置。
背景技术
在计算机通信应用领域中,一个对象可以包含多种状态,即在不同条件下具有不同的状态,该对象可以通过有限状态机模型框架来进行描述。其中,有限状态机是指包含有限个状态以及能够在该有限个状态之间执行转换和动作等行为的计算模型,也就是说,在有限状态机模型框架中,如果对象在处于第一状态时发生了特定事件,将使得该对象从第一状态转换为第二状态,且在对象处于第二状态时,如果发生其他特定事件,又会使得该对象从第二状态转换为第三状态或重新转换为第一状态,其中,第一状态、第二状态以及第三状态为泛指,用以表示对象的不同状态。
现有技术选中,对于对象的有限状态机模型框架中对象各状态之间的转换,一般采用编程语言中的switch/case语句或if/else语句进行描述。以switch/case语句为例,通过为对象的每一状态设置一个case分支,用于对该状态进行处理,每一case分支对相应状态下的状态转换条件(事件类型)以及动作进行描述,即在case分支中,集成有检查状态转换条件以及进行状态转换处理。该方法在对象的有限状态量较少时,例如,对象具有十几或几十个状态,则可以通过switch/case语句或if/else语句,清楚、明确地描述对象各状态之间的转换。但如果对象的有限状态量较多,例如,对于一些项目或系统,例如,用于搜索引擎的分词、编译器的实现以及游戏开发,一个对象的有限状态多达成千上万,这样,各状态之间的转换次数十分浩大,举例来说,如果任意两个有限状态之间能够相互转换,则对于具有1000个有限状态的对象来说,其具有的状态转换次数高达对象各状态之间的转换关系复杂,使得利用现有switch/case语句或if/else语句来覆盖或描述该对象所有的状态转换,程序段代码将显得复杂混乱,对于技术开发人员来说,利用switch/case语句或if/else语句的编码效率将十分低下;进一步地,由于该方法完全不具备扩展性,如果对该对象进行状态转换增减,需要重新利用switch/case语句或if/else语句进行编程。
因此,如何能高效且扩展性地支持对象的状态转换,并有效提升编码效率,是构建有限状态机模型框架的热点研究问题。但目前在对象状态转换的应用场景中,还没有一个通用的有限状态机模型框架,使之能高效地处理对象较为复杂的状态转换,同时又能扩展性地支持新增和删除对象的状态转换,提升编码效率。
发明内容
有鉴于此,本发明实施例提供一种构建有限状态机模型框架的方法、装置及电子装置,支持扩展的对象状态转换增减、提升进行状态转换的编码效率。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,本发明实施例提供一种构建有限状态机模型框架的方法,包括:
依据对象的状态生成对象状态集;
确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建状态转换映射表;
向预先设置的事件分发控制器注册构建的状态转换映射表。
优选地,所述方法进一步包括:
事件分发控制器获取对象当前的状态以及当前生成的事件;
依据获取的对象当前的状态以及当前生成的事件,确定对象的事件类型,查询注册的该对象的状态转换映射表,得到确定的事件类型对应的事件处理器,通知得到的事件处理器执行状态转换操作。
优选地,所述状态转换映射表以表格或二维数组进行描述。
优选地,所述状态转换映射表包括:转换前状态、转换后状态、状态转换、事件类型以及事件处理器。
优选地,所述在事件分发控制器获取对象当前的状态之前,所述方法进一步包括:
对象启动后,向事件分发控制器上报当前状态,事件分发控制器在注册的状态转换映射表中设置对象的当前状态标识。
优选地,所述方法进一步包括:
在注册的状态转换映射表中,将事件处理器执行状态转换操作后的状态标识更新为当前状态标识。
优选地,所述方法进一步包括:
如果依据获取的对象当前的状态以及当前生成的事件,不能确定对象的事件类型,保持对象的当前状态。
优选地,所述方法进一步包括:
在注册的状态转换映射表中,添加新的状态、和/或,删除状态。
优选地,所述方法进一步包括:
在注册的状态转换映射表中,添加新的状态转换、和/或,删除状态转换。
优选地,通过状态转换注册接口EventDispatcher::registerTransition()注册状态转换映射表或添加新的状态,通过状态转换删除接口EventDispatcher::removeTransition()删除状态,通过状态转换处理接口EventHandler::handleEvent()执行状态转换操作。
本发明实施例提供的构建有限状态机模型框架的方法,通过依据对象的状态生成对象状态集,确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,为对象的每一状态转换设置对应的一用于处理事件类型的事件处理器,生成以状态转换映射表表示的有限状态机模型框架并进行注册。这样,以状态转换映射表的方式构建有限状态机模型框架,具有很好的可扩展性,可以避免利用switch/case语句或if/else语句来覆盖或描述对象的状态转换,能够方便高效地处理状态转换情形,大大提高了开发效率以及进行状态转换的编码效率。
另一方面,本发明实施例提供一种构建有限状态机模型框架的装置,包括:对象状态集生成模块、配置模块、状态转换映射表构建模块以及注册模块,其中,
对象状态集生成模块,用于依据对象的状态生成对象状态集;
配置模块,用于确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
状态转换映射表构建模块,用于在对象状态集中,依据每一状态转换对应的事件类型以及事件处理器,构建状态转换映射表;
注册模块,用于向预先设置的事件分发控制器注册构建的状态转换映射表。
优选地,进一步包括:状态转换信息获取模块以及事件分发控制模块,其中,
状态转换信息获取模块,用于获取对象当前的状态以及当前生成的事件;
事件分发控制模块,用于依据获取的对象当前的状态以及当前生成的事件,确定对象的事件类型,查询注册的该对象的状态转换映射表,得到确定的事件类型对应的事件处理器,通知得到的事件处理器执行状态转换操作。
优选地,所述事件分发控制模块进一步用于在依据获取的对象当前的状态以及当前生成的事件,不能确定对象的事件类型后,保持对象的当前状态。
优选地,其特征在于,进一步包括:启动上报模块、当前状态更新模块以及映射表更新模块,其中,
启动上报模块,用于在对象启动后,向事件分发控制器上报当前状态,事件分发控制器在注册的状态转换映射表中设置对象的当前状态标识;
当前状态更新模块,用于在注册的状态转换映射表中,将事件处理器执行状态转换操作后的状态标识更新为当前状态标识;
映射表更新模块,用于在注册的状态转换映射表中,添加新的状态、和/或,删除状态。
本发明实施例提供的构建有限状态机模型框架的装置,对象状态集生成模块依据对象的状态生成对象状态集,配置模块确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,为对象的每一状态转换设置对应的一用于处理事件类型的事件处理器,状态转换映射表构建模块生成以状态转换映射表表示的有限状态机模型框架,注册模块对构建的状态转换映射表进行注册。这样,以状态转换映射表的方式构建有限状态机模型框架,具有很好的可扩展性,可以避免利用switch/case语句或if/else语句来覆盖或描述对象的状态转换,能够方便高效地处理状态转换情形,大大提高了开发效率以及进行状态转换的编码效率。
再一方面,本发明实施例提供一种电子装置,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行以下步骤:
依据对象的状态生成对象状态集;
确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建状态转换映射表;
向预先设置的事件分发控制器注册构建的状态转换映射表。
本发明实施例提供的电子设备,依据对象的状态生成对象状态集,确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器,在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建状态转换映射表,向预先设置的事件分发控制器注册构建的状态转换映射表。这样,以状态转换映射表的方式构建有限状态机模型框架,具有很好的可扩展性,可以避免利用switch/case语句或if/else语句来覆盖或描述对象的状态转换,能够方便高效地处理状态转换情形,大大提高了开发效率以及进行状态转换的编码效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例构建有限状态机模型框架的方法流程示意图;
图2为本发明实施例有限状态机模型框架的一个应用场景结构示意图;
图3为本发明实施例的应用场景对应的有限状态机模型框架结构示意图;
图4为本发明实施例构建有限状态机模型框架的装置结构示意图;
图5为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例构建有限状态机模型框架的方法流程示意图。参见图1,该方法包括:
步骤101,依据对象的状态生成对象状态集;
本步骤中,状态(State)为对象在其生命周期中的一种状况。处于某一状态中的对象,必然能够满足预定的事件、执行预定的动作。其中,事件是指在时间和空间上占有一定位置的事件,事件通常会引起对象的状态变迁,使对象的状态从一种状态变换到另一种状态。
本发明实施例中,对于每一对象,获取该对象的状态,依据该对象所有的状态生成对象状态集。例如,如果一个对象具有第一状态~第十状态共10个状态,则该对象对应的对象状态集中具有第一状态~第十状态共10个状态。
本发明实施例中,作为可选实施例,每一对象对应一对象状态集,对象状态集可以通过对象标识进行区别。
步骤102,确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
本步骤中,对象状态集中包含的状态,在发生特定事件时,能够从一种状态转换到另一种状态,也就是说,每一事件对应对象的一状态,对象的状态转换由当前状态对应的事件以及转换后的状态对应的事件确定,能够确定状态转换的两个事件称为事件类型,并建立状态与事件的映射关系。例如,当对象的状态从第一状态(设置事件1映射第一状态)转换到第二状态(设置事件2映射第二状态),将触发该对象从第一状态转换至第二状态的特定事件(事件1和事件2)称为事件类型。关于确定对象状态集中包含的状态转换的具体流程,以及,为每一状态转换配置对应的事件处理器,用于处理相应的状态转换为公知技术,在此略去详述。
本发明实施例中,每一状态转换对应一事件类型,依据该对象所有的状态转换对应的事件类型生成对应该对象的事件类型集,每一对象对应设置有一事件类型集。
本发明实施例中,对于每一状态转换,设置一事件类型映射一事件处理器,该事件处理器用于处理状态转换,即将对象的状态从第一状态转换为第二状态,该对象的所有事件处理器构成一事件处理器集。
步骤103,在对象状态集中,依据每一状态转换对应的事件类型以及事件处理器,构建状态转换映射表;
本步骤中,对于对象的每一状态转换,获取该状态转换前的状态、转换后的状态、状态转换对应的事件类型、状态转换对应的事件处理器,置于状态转换映射表中以构建状态转换映射表。
作为一可选实施例,状态转换映射表可以以表格的方式进行构建,例如,表1为本发明实施例状态转换映射表的一结构示意。
表1
转换前状态 | 转换后状态 | 状态转换 | 事件类型 | 事件处理器 |
状态1 | 状态2 | 状态1→状态2 | 事件类型12 | 事件处理器12 |
状态1 | 状态k | 状态1→状态k | 事件类型1k | 事件处理器1k |
... | ... | ... | ... | ... |
状态j | 状态l | 状态j→状态l | 事件类型jl | 事件处理器jl |
状态j | 状态m | 状态j→状态m | 事件类型jm | 事件处理器jm |
... | ... | ... | ... | ... |
表1中,状态转换映射表包括:转换前状态、转换后状态、状态转换、事件类型以及事件处理器。其中,事件类型12表示该状态转换由事件1和事件2构成的事件类型12确定,事件1映射状态1,事件2映射状态2,事件类型12确定对象的状态由当前状态1转换至状态2;事件处理器12表示如果需要将对象的状态从状态1转换至状态2,则由该事件处理器12进行状态转换处理,使得对象的状态转换至状态2。
当然,实际应用中,状态转换映射表也可以通过二维数组进行描述。例如,作为另一可选实施例,以行为转换前状态,以列为转换后状态,状态转换映射表也可以如表2所示。
表2
状态1 | 状态2 | ... | 状态n | |
状态1 | - | 状态1→状态2 | ... | 状态1→状态n |
状态2 | 状态2→状态1 | - | ... | - |
... | ... | ... | ... | ... |
状态n | - | 状态n→状态2 | ... | - |
表2中,“-”表示不具有该状态转换。对于具有的状态转换,每一状态转换对应一事件类型以及一事件处理器。例如,对于表2中第一行第二列,具有状态转换“状态1→状态2”,该状态转换对应事件类型12以及事件处理器12,再例如,对于表2中第二行第一列,具有状态转换“状态2→状态1”,该状态转换对应事件类型21以及事件处理器21,又例如,对于表2中第二行第n列,表示对象不能从状态2转换至状态n,其中,n为对象具有的状态数。
本发明实施例中,构建的状态转换映射表即为有限状态机模型框架。
步骤104,向预先设置的事件分发控制器注册构建的状态转换映射表。
本步骤中,通过事件分发控制器对对象的状态转换进行调度,在构建状态转换映射表后,向事件分发控制器注册状态转换对应的状态转换映射表,从而可以在后续应用中利用构建的状态转换映射表进行状态转换处理。
作为一可选实施例,该方法还可以进一步包括:
步骤105,事件分发控制器获取对象当前的状态以及当前生成的事件;
本步骤中,在事件分发控制器获取对象当前的状态之前,该方法还可以进一步包括:
对象启动后,向事件分发控制器上报当前状态,事件分发控制器在注册的状态转换映射表中设置对象的当前状态标识。例如,在表1和表2中,将状态1设置为当前状态,举例来说,将状态1的标识设置为1表示对象的当前状态伟状态1。
本发明实施例中,当前生成的事件是指用户在对对象进行状态转换时执行的操作事件。以设备的热插拔为例,假设注册的状态转换映射表中,对象的当前状态为running(运行),如果用户执行拔出设备(操作事件)操作,中断产生push事件,则当前生成的事件是push事件,事件分发控制器获取中断产生的push事件。
步骤106,依据获取的对象当前的状态以及当前生成的事件,确定对象的事件类型,查询注册的该对象的状态转换映射表,得到确定的事件类型对应的事件处理器,通知得到的事件处理器执行状态转换操作。
本步骤中,事件分发控制器查询注册的状态转换映射表,得到当前生成的事件(push事件)映射的状态为remove(移除),结合当前状态running映射的事件(running事件),可以确定事件类型,且该对象的状态转换为running→remove,将该确定的事件类型放到预先设置的事件队列中,并按照先入先出的原则从事件队列中读取事件类型,根据事件类型查询得到对应的事件处理器,由事件处理器执行相关的状态转换操作。
作为另一可选实施例,该方法还可以进一步包括:
在注册的状态转换映射表中,将事件处理器执行状态转换操作后的状态标识更新为当前状态标识。
当然,实际应用中,作为再一可选实施例,该方法还可以进一步包括:
如果依据获取的对象当前的状态以及当前生成的事件,不能确定对象的事件类型,保持对象的当前状态。
本步骤中,对于用户的一些操作事件,虽然具有对应的事件,但在注册的状态转换映射表中,没有当前状态映射的事件与当前生成的事件对应的事件类型,表明对象不具有该事件类型对应的状态转换。
作为再一可选实施例,该方法还可以进一步包括:
在注册的状态转换映射表中,添加新的状态、和/或,删除状态。
本步骤中,由于以状态转换映射表的方式构建有限状态机模型框架,因而,在对有限状态机模型框架中的状态进行添加或删除时,只需更新状态转换映射表中的相应行列即可,无需重新进行编程。例如,以删除状态为例,对于表1和表2,均只需将表中与删除状态相关的行删除即可。
作为再一可选实施例,该方法还可以进一步包括:
在注册的状态转换映射表中,添加新的状态转换、和/或,删除状态转换。
以下举一具体实施例,对本发明再做详细描述。
图2为本发明实施例有限状态机模型框架的一个应用场景结构示意图。参见图2,该应用场景(对象)具有四个状态,分别为状态1(State1)、状态2、状态3以及状态4,其中,
状态1映射事件1,状态2映射事件2,状态3映射事件3,以及状态4映射事件4,事件1和事件2构成事件类型12,事件2和事件3构成事件类型23,事件2和事件4构成事件类型24,以及,事件3和事件4构成事件类型34。
对应的状态转换包括:状态1→状态2,对应事件类型12、状态2→状态3,对应事件类型23、状态2→状态4,对应事件类型24以及状态3→状态4,对应事件类型34。其中,状态1→状态2表示从状态1转换至状态2,即状态转换前对应的状态为状态1,状态转换后对应的状态为状态2。当然,实际应用中,该应用场景还可以根据后续扩展需要,增加新的状态转换或删除已有的状态转换,或者,增加新的状态或删除已有的状态。例如,增加新的状态转换:状态2→状态1,对应事件类型21,或者,状态1→状态4,对应事件类型14等。
图3为本发明实施例的应用场景对应的有限状态机模型框架结构示意图。参见图3,包含有4个状态转换(Transition),每一状态转换对应有一状态转换映射表,每一状态转换映射表包含:转换前的状态(State)、转换后的状态(State)、事件类型(EventType)以及事件处理器(EventHandler)。本发明实施例中,4个状态转换对应的状态转换映射表分别为:状态转换映射表12、状态转换映射表23、状态转换映射表24以及状态转换映射表34,其中,
状态转换映射表12中,包含有状态转换前的状态1、状态转换后的状态2、事件类型12以及事件处理器12;
状态转换映射表23中,包含有状态转换前的状态2、状态转换后的状态3、事件类型23以及事件处理器23;
状态转换映射表24中,包含有状态转换前的状态2、状态转换后的状态4、事件类型24以及事件处理器24;
状态转换映射表34中,包含有状态转换前的状态3、状态转换后的状态4、事件类型34以及事件处理器34。
本发明实施例中,每一状态转换(Transition)预先向事件分发控制器(EventDispatcher)注册。对象在发生新的事件后,将事件放入事件队列(EventQueue)中,事件分发控制器从事件队列中读取事件,进行分析处理。
本发明实施例中,对象的状态(State)可以是枚举常量;
事件类型(EventType)可以是枚举常量;
事件处理器(EventHandler)为对象发生状态转换时用于对对象进行处理。EventHandler包含一处理事件(handleEvent)行为,用于执行自定义的操作;
本发明实施例中,一EventType与一EventHandler一一对应。
事件分发控制器(EventDispatcher)为基于异步事件的分发控制器,用于管理所有的状态转换(Transition),以及,从事件队列(EventQueue)中获取待处理事件(事件类型),并根据事件类型(EventType)分发给对应的事件分发控制器(EventHandler)进行处理。其中,事件队列(EventQueue)为异步事件队列,用于存放异步事件类型。
具体来说,在事件分发控制器中,对应设置有事件处理器12、事件处理器23、事件处理器24以及事件处理器34,其中,
事件处理器12,用于处理事件类型12对应的状态转换;
事件处理器23,用于处理事件类型23对应的状态转换;
事件处理器24,用于处理事件类型24对应的状态转换;
事件处理器34,用于处理事件类型34对应的状态转换。
图3中,有限状态机模型框架对外提供的核心编程接口如下:
状态转换注册接口:EventDispatcher::registerTransition();
状态转换删除接口:EventDispatcher::removeTransition();
状态转换处理接口:EventHandler::handleEvent()。
由上述可见,本发明实施例基于异步事件技术实现了有限状态转换模型框架,技术开发人员通过本发明实施例的有限状态机模型框架提供的接口,根据对象的状态转换对应的事件类型,为对象的每一状态转换设置对应的一用于处理事件类型的事件处理器,生成状态转换映射表,并由事件分发控制器依据当前状态以及当前生成的事件,获取对应的事件类型,通过事件类型查询到对应的事件处理器,由处理器执行状态转换操作,可以避免利用switch/case语句或if/else语句来覆盖或描述对象的状态转换,能够方便高效地处理状态转换情形,从而能快速构建包含状态转换场景的应用,大大提高了开发效率以及进行状态转换的编码效率;进一步地,该基于异步事件实现的有限状态机模型框架,还可以动态地新增和删除对象的状态转换,从而支持扩展的对象的状态转换增减,扩展了状态转换的应用。因而,对于技术开发人员来说,本发明实施例的有限状态转换模型框架,只需要利用构建的有限状态机模型框架的接口,注册/删除状态转换及其对应的事件处理器(函数)即可实现对状态转换的增加或删除操作,既能方便高效地处理对象的状态转换,又具有很好的可扩展性。
图4为本发明实施例构建有限状态机模型框架的装置结构示意图。参见图4,该装置包括:对象状态集生成模块401、配置模块402、状态转换映射表构建模块403以及注册模块404,其中,
对象状态集生成模块401,用于依据对象的状态生成对象状态集;
本发明实施例中,每一对象对应一对象状态集,对象状态集可以通过对象标识进行区别,包含有该对象的所有状态,每一状态映射一事件。
配置模块402,用于确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
本发明实施例中,状态转换包括转换前状态以及转换后状态,转换前状态映射一事件,以及,转换后状态映射另一事件,两事件构成标识状态转换的事件类型。
本发明实施例中,每一状态转换对应一事件类型,设置一事件类型映射一事件处理器,该事件处理器用于处理状态转换,依据该对象所有的状态转换对应的事件类型生成对应该对象的事件类型集,每一对象对应设置有一事件类型集。
状态转换映射表构建模块403,用于在对象状态集中,依据每一状态转换对应的事件类型以及事件处理器,构建状态转换映射表;
本发明实施例中,状态转换映射表包括:转换前状态、转换后状态、状态转换、事件类型以及事件处理器。
作为一可选实施例,状态转换映射表包括:表格以及二维数组。
注册模块404,用于向预先设置的事件分发控制器注册构建的状态转换映射表。
作为可选实施例,该装置还可以进一步包括:状态转换信息获取模块405以及事件分发控制模块406,其中,
状态转换信息获取模块405,用于获取对象当前的状态以及当前生成的事件;
事件分发控制模块406,用于依据获取的对象当前的状态以及当前生成的事件,确定对象的事件类型,查询注册的该对象的状态转换映射表,得到确定的事件类型对应的事件处理器,通知得到的事件处理器执行状态转换操作。
本发明实施例中,事件分发控制模块406查询注册的状态转换映射表,得到当前生成的事件映射的状态,结合当前状态映射的事件,可以确定事件类型,将该确定的事件类型放到预先设置的事件队列中,并按照先入先出的原则从事件队列中读取事件类型,根据事件类型查询得到对应的事件处理器,由事件处理器执行相关的状态转换操作。
当然,实际应用中,作为一可选实施例,事件分发控制模块406还可以进一步用于在依据获取的对象当前的状态以及当前生成的事件,不能确定对象的事件类型后,保持对象的当前状态。
较佳地,该装置还可以进一步包括:
启动上报模块(图中未示出),用于在对象启动后,向事件分发控制器上报当前状态,事件分发控制器在注册的状态转换映射表中设置对象的当前状态标识。
作为另一可选实施例,该装置还可以进一步包括:
当前状态更新模块(图中未示出),用于在注册的状态转换映射表中,将事件处理器执行状态转换操作后的状态标识更新为当前状态标识。
作为再一可选实施例,该装置还可以进一步包括:
映射表更新模块(图中未示出),用于在注册的状态转换映射表中,添加新的状态、和/或,删除状态。
本发明实施例中,由于以状态转换映射表的方式构建有限状态机模型框架,因而,在对有限状态机模型框架中的状态进行添加或删除时,只需更新状态转换映射表中的相应行列即可,无需重新进行编程。
本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。
图5为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-4所示实施例的流程,如图5所示,上述电子设备可以包括:壳体51、处理器52、存储器53、电路板54和电源电路55,其中,电路板54安置在壳体51围成的空间内部,处理器52和存储器53设置在电路板54上;电源电路55,用于为上述电子设备的各个电路或器件供电;存储器53用于存储可执行程序代码;处理器52通过读取存储器53中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行以下步骤:
依据对象的状态生成对象状态集;
确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建状态转换映射表;
向预先设置的事件分发控制器注册构建的状态转换映射表。
处理器52对上述步骤的具体执行过程以及处理器52通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-4所示实施例的描述,在此不再赘述。
本发明实施例提供的电子设备,依据对象的状态生成对象状态集,确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器,在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建状态转换映射表,向预先设置的事件分发控制器注册构建的状态转换映射表。这样,以状态转换映射表的方式构建有限状态机模型框架,具有很好的可扩展性,可以避免利用switch/case语句或if/else语句来覆盖或描述对象的状态转换,能够方便高效地处理状态转换情形,大大提高了开发效率以及进行状态转换的编码效率。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种构建有限状态机模型框架的方法,其特征在于,该方法包括:
依据对象的状态生成对象状态集;
确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建状态转换映射表;
向预先设置的事件分发控制器注册构建的状态转换映射表。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
事件分发控制器获取对象当前的状态以及当前生成的事件;
依据获取的对象当前的状态以及当前生成的事件,确定对象的事件类型,查询注册的该对象的状态转换映射表,得到确定的事件类型对应的事件处理器,通知得到的事件处理器执行状态转换操作。
3.根据权利要求1所述的方法,其特征在于,所述状态转换映射表以表格或二维数组进行描述。
4.根据权利要求1所述的方法,其特征在于,所述状态转换映射表包括:转换前状态、转换后状态、状态转换、事件类型以及事件处理器。
5.根据权利要求2所述的方法,其特征在于,所述在事件分发控制器获取对象当前的状态之前,所述方法进一步包括:
对象启动后,向事件分发控制器上报当前状态,事件分发控制器在注册的状态转换映射表中设置对象的当前状态标识。
6.根据权利要求5所述的方法,其特征在于,所述方法进一步包括:
在注册的状态转换映射表中,将事件处理器执行状态转换操作后的状态标识更新为当前状态标识。
7.根据权利要求2所述的方法,其特征在于,所述方法进一步包括:
如果依据获取的对象当前的状态以及当前生成的事件,不能确定对象的事件类型,保持对象的当前状态。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法进一步包括:
在注册的状态转换映射表中,添加新的状态、和/或,删除状态。
9.一种构建有限状态机模型框架的装置,其特征在于,该装置包括:对象状态集生成模块、配置模块、状态转换映射表构建模块以及注册模块,其中,
对象状态集生成模块,用于依据对象的状态生成对象状态集;
配置模块,用于确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
状态转换映射表构建模块,用于在对象状态集中,依据每一状态转换对应的事件类型以及事件处理器,构建状态转换映射表;
注册模块,用于向预先设置的事件分发控制器注册构建的状态转换映射表。
10.一种电子装置,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行以下步骤:
依据对象的状态生成对象状态集;
确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建状态转换映射表;
向预先设置的事件分发控制器注册构建的状态转换映射表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510523930.XA CN105045603A (zh) | 2015-08-24 | 2015-08-24 | 一种构建有限状态机模型框架的方法、装置及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510523930.XA CN105045603A (zh) | 2015-08-24 | 2015-08-24 | 一种构建有限状态机模型框架的方法、装置及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105045603A true CN105045603A (zh) | 2015-11-11 |
Family
ID=54452168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510523930.XA Pending CN105045603A (zh) | 2015-08-24 | 2015-08-24 | 一种构建有限状态机模型框架的方法、装置及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045603A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930205A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种基于状态机模式的业务状态处理方法和装置 |
CN106196461A (zh) * | 2016-07-18 | 2016-12-07 | 珠海格力电器股份有限公司 | 一种多联空调机组的控制方法、装置及多联空调机组 |
CN106997293A (zh) * | 2016-01-26 | 2017-08-01 | 上海大唐移动通信设备有限公司 | 有限状态机的实现方法及装置 |
CN107315591A (zh) * | 2017-06-30 | 2017-11-03 | 上海棠棣信息科技股份有限公司 | 一种业务设计方法和系统 |
CN107507041A (zh) * | 2017-09-08 | 2017-12-22 | 北京京东尚科信息技术有限公司 | 用户模型的构建方法和构建装置 |
CN107733906A (zh) * | 2017-10-24 | 2018-02-23 | 北京全路通信信号研究设计院集团有限公司 | 一种基于udp通信的rssp‑ii通信方法 |
CN108255525A (zh) * | 2016-12-28 | 2018-07-06 | 比亚迪股份有限公司 | 基于轨道交通的控制方法和装置 |
CN108334320A (zh) * | 2016-12-22 | 2018-07-27 | 国立民用航空学院 | 用于处理软件代码的方法和装置 |
CN108845844A (zh) * | 2018-05-30 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种状态转换方法及装置 |
CN110531963A (zh) * | 2019-08-28 | 2019-12-03 | 上海交通大学 | 一种基于数据的工业软件系统行为模型还原方法 |
CN112307167A (zh) * | 2020-10-30 | 2021-02-02 | 广州华多网络科技有限公司 | 文本切句方法、装置、计算机设备和存储介质 |
TWI762810B (zh) * | 2019-08-28 | 2022-05-01 | 中華電信股份有限公司 | 網路資源供裝系統和網路資源供裝方法 |
CN115630090A (zh) * | 2022-12-20 | 2023-01-20 | 宜科(天津)电子有限公司 | 一种任务状态转换系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN101980167A (zh) * | 2010-10-19 | 2011-02-23 | 上海富士施乐有限公司 | 一种嵌入式实时操作系统的任务状态机管理机制运行方式 |
CN102103497A (zh) * | 2009-12-18 | 2011-06-22 | 阿尔卡特朗讯 | 有限状态机执行装置和方法、在应用中的建立和使用方法 |
CN103019695A (zh) * | 2012-11-22 | 2013-04-03 | 用友软件股份有限公司 | 数据对象与状态控制逻辑分离系统和方法 |
-
2015
- 2015-08-24 CN CN201510523930.XA patent/CN105045603A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103497A (zh) * | 2009-12-18 | 2011-06-22 | 阿尔卡特朗讯 | 有限状态机执行装置和方法、在应用中的建立和使用方法 |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN101980167A (zh) * | 2010-10-19 | 2011-02-23 | 上海富士施乐有限公司 | 一种嵌入式实时操作系统的任务状态机管理机制运行方式 |
CN103019695A (zh) * | 2012-11-22 | 2013-04-03 | 用友软件股份有限公司 | 数据对象与状态控制逻辑分离系统和方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997293A (zh) * | 2016-01-26 | 2017-08-01 | 上海大唐移动通信设备有限公司 | 有限状态机的实现方法及装置 |
CN105930205A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种基于状态机模式的业务状态处理方法和装置 |
CN106196461A (zh) * | 2016-07-18 | 2016-12-07 | 珠海格力电器股份有限公司 | 一种多联空调机组的控制方法、装置及多联空调机组 |
CN108334320A (zh) * | 2016-12-22 | 2018-07-27 | 国立民用航空学院 | 用于处理软件代码的方法和装置 |
CN108255525A (zh) * | 2016-12-28 | 2018-07-06 | 比亚迪股份有限公司 | 基于轨道交通的控制方法和装置 |
CN107315591A (zh) * | 2017-06-30 | 2017-11-03 | 上海棠棣信息科技股份有限公司 | 一种业务设计方法和系统 |
CN107507041A (zh) * | 2017-09-08 | 2017-12-22 | 北京京东尚科信息技术有限公司 | 用户模型的构建方法和构建装置 |
CN107733906A (zh) * | 2017-10-24 | 2018-02-23 | 北京全路通信信号研究设计院集团有限公司 | 一种基于udp通信的rssp‑ii通信方法 |
CN107733906B (zh) * | 2017-10-24 | 2020-04-17 | 北京全路通信信号研究设计院集团有限公司 | 一种基于udp通信的rssp-ii通信方法 |
CN108845844A (zh) * | 2018-05-30 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种状态转换方法及装置 |
CN110531963A (zh) * | 2019-08-28 | 2019-12-03 | 上海交通大学 | 一种基于数据的工业软件系统行为模型还原方法 |
TWI762810B (zh) * | 2019-08-28 | 2022-05-01 | 中華電信股份有限公司 | 網路資源供裝系統和網路資源供裝方法 |
CN112307167A (zh) * | 2020-10-30 | 2021-02-02 | 广州华多网络科技有限公司 | 文本切句方法、装置、计算机设备和存储介质 |
CN115630090A (zh) * | 2022-12-20 | 2023-01-20 | 宜科(天津)电子有限公司 | 一种任务状态转换系统 |
CN115630090B (zh) * | 2022-12-20 | 2023-04-04 | 宜科(天津)电子有限公司 | 一种任务状态转换系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105045603A (zh) | 一种构建有限状态机模型框架的方法、装置及电子装置 | |
CN109634621A (zh) | Openstack平台部署方法、存储介质、电子设备及系统 | |
CN103678536A (zh) | 一种实现页面返回操作的方法及装置 | |
CN112087487B (zh) | 模型训练任务的调度方法、装置、电子设备及存储介质 | |
CN105468411A (zh) | 一种应用程序的处理方法、装置及电子设备 | |
CN104424122A (zh) | 一种电子设备及内存划分方法 | |
CN105550007A (zh) | 用于移动终端的控制方法、装置和移动终端 | |
CN110652728A (zh) | 一种游戏资源管理方法、装置、电子设备及存储介质 | |
CN108628693B (zh) | 处理器调试方法和系统 | |
CN104021085A (zh) | 一种移动终端内存清理方法和装置 | |
CN110221878A (zh) | 一种游戏服务的更新方法、装置、电子设备及存储介质 | |
CN101339545B (zh) | 一种寄存器配置方法和装置 | |
CN108762983A (zh) | 多媒体数据恢复方法及装置 | |
CN112199919A (zh) | 冗余标准单元的添加方法、装置、存储介质及电子设备 | |
CN103309690A (zh) | 处理数据的方法和电子设备 | |
CN105551500B (zh) | 一种音频信号处理方法及装置 | |
CN115113814A (zh) | 一种神经网络模型上线方法和相关装置 | |
CN109189426A (zh) | 一种升级方法、装置、存储介质及电子设备 | |
CN105278987B (zh) | 一种信息处理方法和电子设备 | |
CN112579618B (zh) | 特征库的升级方法、装置、存储介质及计算机设备 | |
CN110703988B (zh) | 一种分布式存储的存储池创建方法、系统、终端及存储介质 | |
CN108037839B (zh) | 文字输入方法及相关产品 | |
CN105243123A (zh) | 地图离线文件的差异文件的生成、地图离线文件的更新方法及装置 | |
CN112843729A (zh) | 运行参数确定方法、装置、计算机设备及存储介质 | |
CN112527943A (zh) | 地图渲染方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151111 |