有限状态机执行装置和方法、在应用中的建立和使用方法制造方法及图纸

技术编号:5965686 阅读:348 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了有限状态机执行装置和方法、以及在应用中建立和使用有限状态机的方法,有限状态机执行方法包括:接收触发事件;获取有限状态机的当前状态,并根据输入事件以及状态转移表,获取当前状态要转移至的下一状态;借助于基本状态类,从属于基本状态类的一个或多个具体状态类中确定与当前状态对应的具体状态类,以使用该具体状态类进行预定处理,以及使用获取的下一状态更新当前状态。本发明专利技术结合了面向对象的状态模式和Flyweight模式的原理,对有限状态机的执行逻辑进行了改进,建立了单实例模式的具体状态类,避免了对象的重复创建和删除,从而在用于各种应用的开发、模型化等场合时,能够减少系统的资源消耗,加快应用的执行速度和效率。

【技术实现步骤摘要】

本专利技术涉及有限状态机(Finite State Machine,FSM),具体涉及有限状态机执行 装置和方法、以及在应用中建立和使用有限状态机的方法。
技术介绍
有限状态机(FSM)能够有效、方便地描述系统和组件的动态行为,其广泛应用于 电信软件应用开发。FSM具有有限个状态,一般包括状态及状态之间的转移关系。目前,在 软件编程工程中普遍采用两种方法来实现FSM。一种是采用过程语言,例如C语言,采用这 种方法实现的FSM实质上是由条件语句描述的,其在维护和扩展方面的性能较差。另一种 方法是采用面向对象语言,例如C++或Java,按照一定的状态模式来描述FSM,这种面向对 象的编程方式易于维护和开发,由此在目前的软件应用开发中更加普遍。采用面向对象的状态模式来执行FSM,能够满足易于维护和扩展的要求。但是,面 向对象语言的原则就是一切都是对象,每个对象都有自己的生命周期。当应用于实际所需 的FSM模型建立时,有时对象的数量可能很庞大。例如,文字处理软件应用中,如果每个文 字都作为一个对象,则几千个字就需要创建几千个对象。这些对象的创建和删除会占用大 量系统资源,消耗大量存储空间,带来很大的运行时间开销。因此,需要一种FSM的执行和应用方案,其能够减少采用面向对象语言的FSM时对 象的数量,从而减少对运行该FSM的应用的存储空间的占用,降低运行时间开销,提高系统 整体性能。
技术实现思路
为解决上述问题,根据本专利技术一方面,提出了一种有限状态机执行装置,包括引擎单元,用于接收输入事件,作为有限状态机的触发事件;存储单元,用于存储有限状态机的当前状态以及状态转移表,状态转移表包括有 限状态机的状态转移信息,该状态转移信息包括有限状态机的各个状态之间的转移关系以 及触发各个状态转移的事件;状态类定义单元,用于根据有限状态机的各个状态,定义基本状态类、以及属于该 基本状态类的一个或多个具体状态类,每一个具体状态类用于根据由引擎单元接收的输入 事件来进行预定处理;以及执行单元,用于从存储单元中获取当前状态,并根据引擎单元提供的输入事件以 及存储单元中存储的状态转移表,获取当前状态要转移至的下一状态,并且通过基本状态 类,确定与当前状态对应的具体状态类,以使用该具体状态类进行预定处理,以及执行单元 还使用获取的下一状态更新存储单元中的当前状态。本专利技术的有限状态机执行装置具有通用性,能够用于多种应用场合。优选地,有限状态机执行装置还包括解析器,用于预先对有限状态机状态转移的 描述进行解析,以获得要存储于存储单元的状态转移表。由此,可以预先采用例如XML来描述有限状态机的状态转移,并采用解析器进行 解析,获得状态转移关系。当应用场合改变时,可以通过改变XML描述来反映应用变化,方 便了有限状态机的建立和使用。优选地,执行单元还用于在有限状态机的状态发生改变时,修改状态类定义单元 定义的具体状态类,并更新存储单元中存储的当前状态以及状态转移表。这样,当有限状态机的状态发生改变时,例如增加了新状态时,只需要定义一个新 的具体状态类,并相应地改变状态转移关系。同样,当删除状态时,也只需要删除相应的具 体状态类。避免了重新设计整个有限状态机,加快了开发速度。优选地,属于基本状态类的一个或多个具体状态类是通过继承基本状态类而获得 的。这是根据面向对象的状态模式而设计的,具体状态类是基本状态类的继承类,基 本状态类扮演具体状态类与其他部分的接口,具体状态类的改变不需要或者只需要略微改 变基本状态类,从而可以保持与其他部分的接口不发生显著变化,这有利于有限状态机的 扩展。优选地,每一个具体状态类是单实例模式。在使用具体状态类进行预定处理时,创 建该具体状态类的对象实例,以用于进行预定处理。单实例模式表示每一个具体状态类只有一个实例,利于维护。并且具体状态类根 据应用的运行时间环境而动态地创建所需的对象实例,来进行所需处理,这样不需要重复 地创建、维护和删除对象实例,节约了系统资源。根据本专利技术另一方面,提出了一种有限状态机执行方法,包括接收输入事件,作为有限状态机的触发事件;获取有限状态机的当前状态,并根据输入事件以及状态转移表,获取当前状态要 转移至的下一状态,所述状态转移表包括有限状态机的状态转移信息,该状态转移信息包 括有限状态机的各个状态之间的转移关系以及触发各个状态转移的事件;借助于基本状态类,从属于基本状态类的一个或多个具体状态类中确定与当前状 态对应的具体状态类,以使用该具体状态类进行预定处理,以及使用获取的下一状态更新 当前状态。根据本专利技术另一方面,提出了一种建立针对应用的有限状态机的方法,包括根据应用中多个组件具有的状态、状态改变以及触发状态改变的事件,确定有限 状态机的各个状态以及状态转移表,状态转移表包括有限状态机的状态转移信息,该状态 转移信息包括有限状态机的各个状态之间的转移关系以及触发各个状态转移的事件;根据所确定的各个状态,定义基本状态类、以及属于该基本状态类的一个或多个 具体状态类,每一个具体状态类用于根据所述应用的运行时间环境来进行预定处理;以及根据所确定的各个状态和状态转移表、以及定义的基本状态类和具体状态类,建 立针对该应用的有限状态机。优选地,应用中的多个组件具有的状态相同,并且各个具体状态类分别对应于多 个组件所具有的各个状态。优选地,每一个具体状态类能够根据应用的运行时间环境,动态地创建对象实例, 以代表应用中相应的组件,来进行预定处理。根据本专利技术另一方面,提出了一种在应用中使用有限状态机的方法,所述有限状 态机是上述建立方法而针对所述应用建立的,使用有限状态机的方法包括接收输入所述应用的事件,该输入事件包括标识了所述应用的多个组件之一的指 示;根据该输入事件,从预先存储的多个组件及其当前状态中,获取由所述指示标识 的组件及其当前状态;根据所获取的组件及其当前状态,借助于基本状态类,从属于基本状态类的一个 或多个具体状态类中确定与当前状态对应的具体状态类;使用所确定的具体状态类,创建代表所获取的组件的对象实例,以进行预定处理。在采用面向对象设计模式的现有技术中,通常针对每个对象建立有限状态机来执 行相应的处理,并且还要维护并且在该对象的生命周期结束时删除其对应的有限状态机, 这会带来大量的系统资源消耗。在本专利技术中,不再逐个对象地执行有限状态机,而是根据应 用,预先存储有限状态机的各个状态之间的转移关系以及触发各个状态转移的事件,并且 根据有限状态机的各个状态,定义了基本状态类、以及属于该基本状态类的一个或多个具 体状态类,这些类是在各个对象之间共享的。由此,当针对某个对象发生输入事件时,确定 与该对象当前状态对应的具体状态类,并使用该具体状态类创建该对象的代表实例,以进 行相应的处理。这里,具体状态类是永久性的,不再存在临时建立、维护和删除对象的系统 资源消耗,并且维护具体状态类的开销也不大。由此,可以减少内存消耗和运行时间开销, 提高系统执行效率。附图说明图1示出了根据本专利技术实施例的有限状态机执行装置的示意框图;图2示出了基本状态类与具体状态类的关系示意图;图3示出了本专利技术有限状态机执行装置的执行过程的流程图;图4示出了 Diameter连接的状态及状态改变;图5示出了采用传统方本文档来自技高网...

【技术保护点】
1.一种有限状态机执行装置,包括:引擎单元,用于接收输入事件,作为有限状态机的触发事件;存储单元,用于存储有限状态机的当前状态以及状态转移表,状态转移表包括有限状态机的状态转移信息,该状态转移信息包括有限状态机的各个状态之间的转移关系以及触发各个状态转移的事件;状态类定义单元,用于根据有限状态机的各个状态,定义基本状态类、以及属于该基本状态类的一个或多个具体状态类,每一个具体状态类用于根据由引擎单元接收的输入事件来进行预定处理;以及执行单元,用于从存储单元中获取当前状态,并根据引擎单元提供的输入事件以及存储单元中存储的状态转移表,获取当前状态要转移至的下一状态,并且通过基本状态类,确定与当前状态对应的具体状态类,以使用该具体状态类进行预定处理,以及执行单元还使用获取的下一状态更新存储单元中的当前状态。

【技术特征摘要】

【专利技术属性】
技术研发人员:高同庆
申请(专利权)人:阿尔卡特朗讯
类型:发明
国别省市:FR[法国]

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

1