一种构建有限状态机模型框架的方法、装置及电子装置的制造方法

文档序号:9326689阅读:225来源:国知局
一种构建有限状态机模型框架的方法、装置及电子装置的制造方法
【技术领域】
[0001] 本发明涉及计算机通信应用技术,尤其涉及一种构建有限状态机模型框架的方 法、装置及电子装置。
【背景技术】
[0002] 在计算机通信应用领域中,一个对象可以包含多种状态,即在不同条件下具有不 同的状态,该对象可以通过有限状态机模型框架来进行描述。其中,有限状态机是指包含有 限个状态以及能够在该有限个状态之间执行转换和动作等行为的计算模型,也就是说,在 有限状态机模型框架中,如果对象在处于第一状态时发生了特定事件,将使得该对象从第 一状态转换为第二状态,且在对象处于第二状态时,如果发生其他特定事件,又会使得该对 象从第二状态转换为第三状态或重新转换为第一状态,其中,第一状态、第二状态以及第三 状态为泛指,用以表示对象的不同状态。
[0003] 现有技术选中,对于对象的有限状态机模型框架中对象各状态之间的转换,一般 采用编程语言中的switch/case语句或if/else语句进行描述。以switch/case语句为例, 通过为对象的每一状态设置一个case分支,用于对该状态进行处理,每一 case分支对相应 状态下的状态转换条件(事件类型)以及动作进行描述,即在case分支中,集成有检查状 态转换条件以及进行状态转换处理。该方法在对象的有限状态量较少时,例如,对象具有十 几或几十个状态,贝 lJ可以通过switch/case语句或if/else语句,清楚、明确地描述对象各 状态之间的转换。但如果对象的有限状态量较多,例如,对于一些项目或系统,例如,用于搜 索引擎的分词、编译器的实现以及游戏开发,一个对象的有限状态多达成千上万,这样,各 状态之间的转换次数十分浩大,举例来说,如果任意两个有限状态之间能够相互转换,则对 于具有 1000个有限状态的对象来说,其具有的状态转换次数高达,对象各状态之间的 转换关系复杂,使得利用现有switch/case语句或if/else语句来覆盖或描述该对象所有 的状态转换,程序段代码将显得复杂混乱,对于技术开发人员来说,利用switch/case语句 或if/else语句的编码效率将十分低下;进一步地,由于该方法完全不具备扩展性,如果对 该对象进行状态转换增减,需要重新利用switch/case语句或if/else语句进行编程。
[0004] 因此,如何能高效且扩展性地支持对象的状态转换,并有效提升编码效率,是构建 有限状态机模型框架的热点研究问题。但目前在对象状态转换的应用场景中,还没有一个 通用的有限状态机模型框架,使之能高效地处理对象较为复杂的状态转换,同时又能扩展 性地支持新增和删除对象的状态转换,提升编码效率。

【发明内容】

[0005] 有鉴于此,本发明实施例提供一种构建有限状态机模型框架的方法、装置及电子 装置,支持扩展的对象状态转换增减、提升进行状态转换的编码效率。
[0006] 为达到上述目的,本发明的实施例采用如下技术方案:
[0007] -方面,本发明实施例提供一种构建有限状态机模型框架的方法,包括:
[0008] 依据对象的状态生成对象状态集;
[0009] 确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类型, 并为每一确定的状态转换配置对应的事件处理器;
[0010] 在对象状态集中,依据每一状态转换分别对应的事件类型以及事件处理器,构建 状态转换映射表;
[0011] 向预先设置的事件分发控制器注册构建的状态转换映射表。
[0012] 优选地,所述方法进一步包括:
[0013] 事件分发控制器获取对象当前的状态以及当前生成的事件;
[0014] 依据获取的对象当前的状态以及当前生成的事件,确定对象的事件类型,查询注 册的该对象的状态转换映射表,得到确定的事件类型对应的事件处理器,通知得到的事件 处理器执行状态转换操作。
[0015] 优选地,所述状态转换映射表以表格或二维数组进行描述。
[0016] 优选地,所述状态转换映射表包括:转换前状态、转换后状态、状态转换、事件类型 以及事件处理器。
[0017] 优选地,所述在事件分发控制器获取对象当前的状态之前,所述方法进一步包 括:
[0018] 对象启动后,向事件分发控制器上报当前状态,事件分发控制器在注册的状态转 换映射表中设置对象的当前状态标识。
[0019] 优选地,所述方法进一步包括:
[0020] 在注册的状态转换映射表中,将事件处理器执行状态转换操作后的状态标识更新 为当前状态标识。
[0021] 优选地,所述方法进一步包括:
[0022] 如果依据获取的对象当前的状态以及当前生成的事件,不能确定对象的事件类 型,保持对象的当前状态。
[0023] 优选地,所述方法进一步包括:
[0024] 在注册的状态转换映射表中,添加新的状态、和/或,删除状态。
[0025] 优选地,所述方法进一步包括:
[0026] 在注册的状态转换映射表中,添加新的状态转换、和/或,删除状态转换。
[0027] 优选地,通过状态转换注册接口 EventDispatcher : :registerTransition() 注册状态转换映射表或添加新的状态,通过状态转换删除接口 EventDispatcher :: removeTransitionO 删除状态,通过状态转换处理接口 EventHandler : :handleEvent()执 行状态转换操作。
[0028] 本发明实施例提供的构建有限状态机模型框架的方法,通过依据对象的状态生成 对象状态集,确定对象状态集中包含的状态转换,获取每一确定的状态转换对应的事件类 型,为对象的每一状态转换设置对应的一用于处理事件类型的事件处理器,生成以状态转 换映射表表示的有限状态机模型框架并进行注册。这样,以状态转换映射表的方式构建有 限状态机模型框架,具有很好的可扩展性,可以避免利用switch/case语句或if/else语句 来覆盖或描述对象的状态转换,能够方便高效地处理状态转换情形,大大提高了开发效率 以及进行状态转换的编码效率。
[0029] 另一方面,本发明实施例提供一种构建有限状态机模型框架的装置,包括:对象状 态集生成模块、配置模块、状态转换映射表构建模块以及注册模块,其中,
[0030] 对象状态集生成模块,用于依据对象的状态生成对象状态集;
[0031] 配置模块,用于确定对象状态集中包含的状态转换,获取每一确定的状态转换对 应的事件类型,并为每一确定的状态转换配置对应的事件处理器;
[0032] 状态转换映射表构建模块,用于在对象状态集中,依据每一状态转换对应的事件 类型以及事件处理器,构建状态转换映射表;
[0033] 注册模块,用于向预先设置的事件分发控制器注册构建的状态转换映射表。
[0034] 优选地,进一步包括:状态转换信息获取模块以及事件分发控制模块,其中,
[0035] 状态转换信息获取模块,用于获取对象当前的状态以及当前生成的事件;
[0036] 事件分发控制模块,用于依据获取的对象当前的状态以及当前生成的事件,确定 对象的事件类型,查询注册的该对象的状态转换映射表,得到确定的事件类型对应的事件 处理器,通知得到的事件处理器执行状态转换操作。
[0037] 优选地,所述事件分发控制模块进一步用于在依据获取的对象当前的状态以及当 前生成的事件,不能确定对象的事件类型后,保持对象的当前状态。
[0038] 优选地,其特征在于,进一步包括:启动上报模块、当前状态更新模块以及映射表 更新申吴块,其中,
[0039] 启动上报模块,用于在对象启动后,向事件分发控制器上报当前状态,事件分发控 制器在注册的状态转换映射表中设置对象的当前状态标识;
[0040] 当前状态更新模块,用于在注册的状态转换映射表中,将事件处理器执行状态转 换操作后的状态标识更新为当前状态标识;
[0041] 映射表更新模块,用于在注册的状态转换映射表中,添加新的状态、和/或,删除 状态。
[0042] 本发明实施例提供的构建有限状态机模型框架的装置,对象状态集生成模块依据 对象的状态生成对象状态集,配置模块确定对象状态集中包含的状态转换,获取每一确定 的状态转换对应的事件类型,为对象的每一状态转换设置对应的一用于处理事件类型的事 件处理器,状态转换映射表构建模块生成以状态转换映射表表不的有限状态机模型框架, 注册模块对构建的状态转换映射表进行注册。这样,以状态转换映射表的方式构建有限状 态机模型框架,具有很好的可扩展性,可以避免利用switch/case语句或if/else语句来覆 盖或描述对象的状态转换,能够方便高效地处理状态转换情形,大大提高了开发效率以及 进行状态转换的编码效率。
[0043] 再一方面,本发明实施例提供一种电子装置,包括:壳体、处理器、存储器、电路板 和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上; 电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码; 处理器通过读
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1