一种流程状态机的实现方法

文档序号:6447509阅读:805来源:国知局
专利名称:一种流程状态机的实现方法
技术领域
本发明涉及有限状态机,具体地说,涉及一种流程状态机的软件实现方法,更具体地说,涉及通讯协议开发中业务流程状态机的通用软件实现方法。
背景技术
有限状态机Finite State Machine简称FSM,是自动机理论中研究对象,可以用软件或硬件实现。在如通信协议流程的软件模块开发中,大量涉及业务流程状态的变化,以描述业务流程的实现,非常适合于采用FSM结构和流程状态机。在通信协议流程和业务流程状态机的具体实现中,需要不断的变换状态,迁入和迁出进程,等待和处理进程的消息。对于通信协议流程,状态处理和转换贯穿流程处理始终,在流程状态较多时,处理是比较复杂繁琐的,整个流程状态处理的质量和效率决定于流程状态开发人员所选择的业务流程状态机的处理和实现方法。目前,开发人员对于各种流程状态机处理和实现都是根据具体流程的情况采用不同的具体方法,而对于通讯系统中含复杂的通讯业务流程的流程状态机的处理和实现,这种方式由于未涉及一个总的思路和方式,实现复杂的流程状态机就会繁琐、效率不高并且不清晰,从而造成整个通讯系统的流程状态处理的质量和效率得不到根本性保证。

发明内容
本发明要解决的技术问题是,如何采用栈和栈操作,构造一种流程状态机的通用实现方法,能够清晰和高效地实现复杂的流程状态机,以保障流程状态处理的质量和效率。
本发明上述技术问题这样解决,构造一种流程状态机的实现方法,其特征在于,采用状态栈模型,包括正常处理流程、异常消息处理和异常状态处理中流程状态机的通用实现方法。
在按照本发明提供的流程状态机的实现方法,其特征在于,所述状态栈模型是多级流程状态栈,包括主状态和各级子状态。
在按照本发明提供的流程状态机的实现方法,其特征在于,所述多级流程状态栈是二级流程状态栈,包括一个主状态和多个子状态。
在按照本发明提供的流程状态机的实现方法,其特征在于,所述通用状态栈的正常消息处理流程,包括以下步骤4.1)状态栈初始化;4.2)状态栈等待消息,状态栈获得被分发的消息,取出状态栈的当前状态,如果有当前状态,转入对应状态的消息处理,如果没有当前状态,主状态入状态栈,转入主状态的消息处理,所述当前状态是子状态或主状态;4.3)所述消息处理完后,返回调用该消息处理的状态;如果返回子状态,判断要迁移的下一个子状态或主状态,设置当前子状态出状态栈和所述下一个子状态或主状态入状态栈,迁移出本进程,返回步骤(4.2);如果返回主状态,判断流程是否完毕,如果流程未完毕,判断要迁移的子状态,设置主状态出状态栈和所述子状态入状态栈并迁移出本进程,返回步骤(4.2);否则清除状态栈,结束正常处理流程。
在按照本发明提供的流程状态机的实现方法,其特征在于,所述通用状态栈的异常消息处理流程,包括以下步骤5.1)判断异常消息是否对当前流程将造成干涉和冲突,如果不造成干涉和冲突,所述状态栈的异常消息处理流程会丢弃该异常消息;
5.2)如果造成干涉和冲突,根据该异常消息的冲突类型或者冲突优先级,对状态栈中内容进行部分重置或全部重置。
在按照本发明提供的流程状态机的实现方法,其特征在于,在步骤(4.3)所述取出状态栈的当前子状态的步骤前加入消息判断的步骤,即判断消息是正常消息或异常消息,是正常消息,继续步骤(4.2),否则转入异常消息处理流程,即步骤(5.1)。
在按照本发明提供的流程状态机的实现方法,其特征在于,所述通用状态栈的异常状态处理流程中,所述状态栈设置了特定状态的保持定时器,当状态栈进入所述特定状态,开始启动保持定时器,定时扫描,一旦所述特定状态超时,清除状态栈,结束处理流程。
本发明提供的一种流程状态机的通用实现方法,提高了通讯系统业务流程状态的处理效率,简化了处理流程,并可以作为一种通用实现方法应用于各种状态机的处理。


图1是本发明提供的二级流程状态栈结构和状态迁移的示意图。
图2是本发明提供的通用状态栈正常消息处理流程的示意图。
具体实施例方式
结合附图和实施例,对本发明方法进一步展开。首先,说明发明方法的基础点如下本发明主要是利用栈的操作对状态迁移和变换进行处理,栈的操作反映了状态的变化,由栈的操作推动流程的发展,处理流程简洁清晰;从面向对象的观点来看,状态具有震荡、回溯和反复的行为特点,和状态栈的行为属性完全符合,该方法可以用面向对象设计的模式实现,同时状态栈模型适合于一般流程状态机的实现,有很强的通用性。
状态栈模型中流程状态一般可划分为多级。用流程状态栈实现时,可一般只划分两级即主状态和子状态(除主状态外的状态),二级流程状态栈的结构如图1所示。业务流程进入主状态后,有很多子状态都是条件性执行的,可能不按顺序,甚至可能是倒序和回溯执行,但每次当前状态处理完成后,都要回到调用它的状态,来判断流程的走向,选择要进入的下一个状态。在当前状态里作出选择判断要迁移到的下个状态,进行状态迁移。等待下一个消息,进行消息处理和状态变换,直到子状态迁移到主状态,并且主状态处理完成,清除状态栈,结束处理流程。
按照本发明提出的通用流程状态机的实现方法,对各个步骤逐个说明如下(状态栈用面向对象方式实现)(一)正常处理实现流程,其过程如图2所示1、与各种具体业务实现对应的业务处理进程启动、资源分配、状态栈初始化开始进行业务流程时,对准备处理的每个客户端的流程都分配一个状态栈数据区,其数据数据区内容根据具体的协议描述和流程处理需要确定。所述状态栈数据区的个数和内容也可自定义。
(产生消息,业务进程调度和切换,进入消息处理流程,由协议处理机给它分配的各个状态栈分发消息)2、状态栈等待它的消息,状态栈获取被分发给它的消息准备进行处理,判断消息类别,如果是正常消息,按以下正常流程处理,取出状态栈的当前状态(如果是异常消息,进行丢弃或冲突处理)①如当前状态为空,表明是该状态栈的首个消息,更改状态栈数据区数据,主状态入栈,转入主状态消息处理的方法处理所述消息;②否则,转入对应的状态消息处理的方法处理所述消息。该状态可以是主状态,也可以是子状态。
3、所述消息处理完成后,返回调用该消息处理的状态;如果是子状态,判断要迁移的状态,更改状态栈数据区数据,设置原状态出栈、要迁移的状态入栈,并迁移出本进程,返回步骤2;如果是主状态,判断流程是否完毕,如果处理未完,则判断要迁移的状态,更改状态栈数据区数据,设置原状态出栈、要迁移的状态入栈,并迁移出本进程,返回步骤2;;否则清除状态栈,释放分配资源,退出消息处理流程。
(二)异常消息的处理(在业务状态机处理中,必须比较充分地考虑流程中的异常情况。本实施例异常处理分两部分实现,分别是异常消息的处理(二)和异常状态处理(三)。)在收到消息并从栈中提取状态准备进行处理时,该消息可能不是该流程状态所期望的消息或者是会引发冲突的消息。如果该消息不需要处理,则可将其丢弃,等待下一个消息进行处理和由此引发的状态迁移;如果此消息对当前流程将造成干涉和冲突,必须进行处理。这时,可以根据冲突类型或者冲突优先级,对状态栈中内容进行重置,设置新的主状态或子状态,包括全部和部分重置。全部重置就是取消原有流程和状态,重设主状态,转入新的业务流程;而部分重置就是设置新的子状态。(对于多级状态栈,部分重置就是重新设置某一层或相关的几层状态,而不改变主状态,实现只更改部分业务子流程的目的)(三)状态异常的处理在流程状态长时间的变迁中,可能因为某种异常情况造成状态栈的状态长时间悬挂而无法迁移,导致资源吊死。处理时可以针对相应状态进行定时扫描,流程进入该状态就设置该状态的保持定时器,定时器超时即可认为状态发生异常,然后清理现场,释放资源,结束流程处理。
权利要求
1.一种流程状态机的实现方法,其特征在于,采用状态栈模型,包括通用状态栈的正常消息处理流程、通用状态栈的异常消息处理流程和通用状态栈的异常状态处理流程。
2.根据权利要求1所述流程状态机的实现方法,其特征在于,所述状态栈模型是多级状态栈,包括主状态和各级子状态。
3.根据权利要求1所述流程状态机的实现方法,其特征在于,所述多级状态栈是二级流程状态栈,包括一个主状态和多个子状态。
4.根据权利要求1-3中任何一项所述流程状态机的实现方法,其特征在于,所述通用状态栈的正常消息处理流程,包括以下步骤4.1)状态栈初始化;4.2)状态栈等待消息,状态栈获得被分发的消息,取出状态栈的当前状态,如果有当前状态,转入对应状态的消息处理,如果没有当前状态,主状态入状态栈,转入主状态的消息处理,所述当前状态是子状态或主状态;4.3)所述消息处理完后,返回调用该消息处理的状态;如果返回子状态,判断要迁移的下一个子状态或主状态,设置当前子状态出状态栈和所述下一个子状态或主状态入状态栈,迁移出本进程,返回步骤(4.2);如果返回主状态,判断流程是否完毕,如果流程未完毕,判断要迁移的子状态,设置主状态出状态栈和所述子状态入状态栈并迁移出本进程,返回步骤(4.2);否则清除状态栈,结束正常处理流程。
5.根据权利要求4所述流程状态机的实现方法,其特征在于,所述通用状态栈的异常消息处理流程,包括以下步骤5.1)判断异常消息是否对当前流程将造成干涉和冲突,如果不造成干涉和冲突,所述状态栈的异常消息处理流程会丢弃该异常消息;5.2)如果造成干涉和冲突,根据该异常消息的冲突类型或者冲突优先级,对状态栈中内容进行部分重置或全部重置。
6.根据权利要求4所述流程状态机的实现方法,其特征在于,在步骤(4.3)所述取出状态栈的当前子状态的步骤前加入消息判断的步骤,即判断消息是正常消息或异常消息,是正常消息,继续步骤(4.3),否则转入异常消息处理流程,即步骤(5.1)。
7.根据权利要求5所述流程状态机的实现方法,其特征在于,在步骤(4.3)所述取出状态栈的当前子状态的步骤前加入消息判断的步骤,即判断消息是正常消息或异常消息,是正常消息,继续步骤(4.3),否则转入异常消息处理流程,即步骤(5.1)。
8.根据权利要求5所述流程状态机的实现方法,其特征在于,所述通用状态栈的异常状态处理流程中,所述状态栈设置了特定状态的保持定时器,当状态栈进入所述特定状态,开始启动所述保持定时器,定时扫描,一旦所述特定状态超时,清除状态栈,结束处理流程。
全文摘要
本发明涉及一种状态机的软件实现方法,具体公开了一种流程状态机的软件实现方法,它采用状态栈模型,包括通用状态栈的正常消息处理流程、异常消息处理流程和异常状态处理流程。这种流程状态机的实现方法可以提高通讯系统业务流程状态的处理效率,简化处理流程,并可以作为一种通用实现方法应用于各种状态机的处理。
文档编号G06F9/40GK1519706SQ0311520
公开日2004年8月11日 申请日期2003年1月23日 优先权日2003年1月23日
发明者郭磊, 郭 磊 申请人:深圳市中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1