状态机的实现方法和装置制造方法及图纸

技术编号:12470276 阅读:63 留言:0更新日期:2015-12-09 19:28
本发明专利技术提供了一种状态机的实现方法和装置。该实现方法包括状态机生成流程,其包括以下步骤:获取用于生成状态机的配置文件,该配置文件描述每个状态的标识以及对各个事件的响应信息和状态转换信息,且描述多个状态间的层级关系;根据该配置文件生成状态机;以及提供一响应功能集模块,该响应功能集模块包含该状态机中的响应信息所对应的响应功能。

【技术实现步骤摘要】

本专利技术涉及状态机,尤其是涉及一种状态机的实现方法和装置
技术介绍
现有的状态机实现一般有过程模式和状态对象模式两种。 过程模式一般通过条件判断的方式对状态进行划分,判断得到具体状态后,再在 该判断分支内对事件进行判断,确定响应的转换动作。这种模式的缺点包括:代码复用性 差;状态的退出和进入在多个转换动作中都必须重写;增加或修改一个状态时需要修改多 个判断分支,可维护性差;对于复杂的系统,存在大量的状态和时间,代码量庞大,维护困难 等。 状态对象模式则是将一个特定的状态用一个状态对象封装起来,并将事件和转换 等作为对象的方面来描述,解决了过程模式需要大量判断分支的情况。通过对象封装可以 很容易增加一个状态。这种方法的缺陷在于:每增加一个事件或改变一个转换,都可能影响 多个类;对于复杂的系统,状态对象的数量也很庞大,可维护性仍不高;对象中的转换方法 也很难在其他状态对象中复用。
技术实现思路
本专利技术所要解决的技术问题是提供一种可动态配置的状态机的实现方法和装置, 本专利技术为解决上述技术问题而采用的技术方案是提供一种状态机的实现方法,包 括状态机生成流程,其包括以下步骤:获取用于生成状态机的配置文件,该配置文件描述 每个状态的标识以及对各个事件的响应信息和状态转换信息,且描述多个状态间的层级关 系;根据该配置文件生成状态机;以及提供一响应功能集模块,该响应功能集模块包含该 状态机中的响应信息所对应的响应功能。 可选地,获取用于生成状态机的配置文件和根据该配置文件生成状态机的步骤是 在一状态机引擎中执行,该状态机引擎与该响应功能集模块相互独立。 可选地,该状态机生成流程还包括:提供一数据池,该数据池包含该响应功能集模 块的各响应功能需要共享的数据。 可选地,该数据池具有统一的数据访问接口。 可选地,该数据池具有实时访问的加密接口。 可选地,上述方法还包括离线调试流程,其包括以下步骤:打开指定的配置文件; 生成需要调试的状态机;呈现该配置文件中所记录的事件;将调试者选择的事件传入该状 态机,驱动该状态机运行;以及获得及呈现当前状态的列表。 可选地,上述方法还包括实时调试流程,其包括以下步骤:从运行的状态机中实时 读取数据;以及呈现所读取的数据。 本专利技术还提出一种状态机的实现装置,包括状态机引擎和响应功能集模块。状态 机引擎配置为获取用于生成状态机的配置文件,及根据该配置文件生成状态机,该配置文 件描述每个状态的标识以及对各个事件的响应信息和状态转换信息,且描述多个状态间的 层级关系。响应功能集模块包含该状态机中的响应信息所对应的响应功能。 可选地,该状态机引擎与该响应功能集模块相互独立。 可选地,上述装置还包括一数据池,该数据池包含该响应功能集模块的各响应功 能需要共享的数据。 可选地,该数据池具有统一的数据访问接口。 可选地,该数据池具有实时访问的加密接口。 可选地,上述装置还包括离线调试工具,其配置为执行以下步骤:打开指定的配置 文件;生成需要调试的状态机;呈现该配置文件中所记录的事件;将调试者选择的事件传 入该状态机,驱动该状态机运行;以及获得及呈现当前状态的列表。 可选地,上述装置还包括实时调试工具,其配置为执行以下步骤:从运行的状态机 中实时读取数据;以及呈现所读取的数据。 与现有技术相比,本专利技术可提供可动态配置的状态机架构,开发人员不需要通过 使用对象来封装状态、事件和转换动作,只需通过配置文件描述状态机中的状态结构,定义 每个状态的信息和转换动作。根据配置文件能够生成产生开发人员定义的状态机。本专利技术 解决了现有状态机实现模式的复杂度,提高了状态机架构的复用性和可维护性。【附图说明】 图1是根据本专利技术一实施例的状态机实现装置的结构框图; 图2是根据本专利技术一实施例的配置文件架构实例; 图3是根据本专利技术一实施例的响应功能集模块实例; 图4是根据本专利技术一实施例的状态机实例; 图5是根据本专利技术另一实施例的状态机实现装置的结构框图; 图6是根据本专利技术一实施例的离线调试工具示意图; 图7是根据本专利技术一实施例的实时调试工具示意图; 图8是根据本专利技术一实施例的状态机实现方法流程图; 图9是根据本专利技术另一实施例的状态机实现方法流程图; 图10是根据本专利技术又一实施例的状态机实现方法流程图。【具体实施方式】 为让本专利技术的上述目的、特征和优点能更明显易懂,以下结合附图对本专利技术的具 体实施方式作详细说明。 在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是本专利技术还可以 采用其它不同于在此描述的其它方式来实施,因此本专利技术不受下面公开的具体实施例的限 制。 图1是根据本专利技术一实施例的状态机实现装置的结构框图。参考图1所示,状态机 实现装置100可包括状态机引擎110、响应功能集模块120和数据池130。状态机引擎110 连接响应功能集模块120。响应功能集模块120连接数据池130。状态机引擎110用于生成 状态机。响应功能集模块120用于提供状态机中针对事件的响应信息所对应的响应功能。 响应功能集模块120可包含许多响应功能的集合,该集合中的部分或全部功能可 被一个或多个状态机调用。响应功能集模块120的各个功能最好是相互独立的功能,每个 功能只负责特定的任务。在状态机中,一个状态对于一个事件的响应动作中可以调用一个 或者多个功能。图3是根据本专利技术一实施例的响应功能集模块实例。参考图3所示,响应 功能集模块1中可包括响应功能1-1和1-2,响应功能集模块2中可包括响应功能2-1、2-2 和 2_3〇 响应功能集模块120可以由多个分散的模块自由组合而成,每个模块可以实现响 应功能集模块120的一部分功能。与单个模块实现所有功能相比,分散的模块便于模块在 不同产品中的复用。 在较佳实施例中,状态机引擎110和响应功能集模块120是相互独立的。相应地, 状态机引擎110所生成的状态机相应于响应功能集模块120也是独立的。状态机可以通过 委托的方式调用响应功能集模块120中的功能,减少两者间耦合。 数据池130包含响应功能集模块120中各个响应功能需要共享的数据。在一个实 施例中,数据池130提供了统一的数据访问接口。在较佳实施例中,数据池130可以提供实 时访问其内部所有数据的加密接口,这样,允许通过特定工具在状态机运行时实时查看数 据池130中的数据。通过后文的描述可知,这一特性对于实时调试状态机是非常有益的。 在一实施例,状态机引擎110是根据配置文件来生成状态机。配置文件是用于生 成状态机的文件。配置文件中描述每个状态的标识以及对各个事件的响应信息和状态转换 信息,且描述多个状态间的层级关系。根据这些信息,状态机引擎110可以生成与配置文件 对应的状态机。此状态机将按照配置文件中的结构进行部署。在一实施例中,一个配置文 件可对应一个状态机。然而可以理解,配置文件与状态机的对应关系并不需要如此严格,例 如多个配置文件可以对应同一个状态机。 图2是根据本专利技术一实施例的配置文件架构实例。参考图2所示,配置文件200可 描述多个状态,例如父状态1和父状态2。每一父状态下还可包含一个或多个子状态,例如 父状态2下的子状态2-1和子状态2-2。每个状态的配置可包含状态名称或标识(ID)。例如 父状态本文档来自技高网...

【技术保护点】
一种状态机的实现方法,包括状态机生成流程,其包括以下步骤:获取用于生成状态机的配置文件,该配置文件描述每个状态的标识以及对各个事件的响应信息和状态转换信息,且描述多个状态间的层级关系;根据该配置文件生成状态机;以及提供一响应功能集模块,该响应功能集模块包含该状态机中的响应信息所对应的响应功能。

【技术特征摘要】

【专利技术属性】
技术研发人员:钟灿
申请(专利权)人:上海联影医疗科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1