一种状态机的实现方法及系统技术方案

技术编号:17878569 阅读:36 留言:0更新日期:2018-05-06 00:29
本发明专利技术提供一种状态机的实现方法及系统,所述的方法包括:将业务流程中涉及的所有状态定义为状态机的状态;确定状态机的当前状态,根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作;根据确定出来的所述下一个状态,控制状态机从所述当前状态跳转至所述下一个状态,并执行对应的动作。对于具有不同状态走向的复杂业务流程,本发明专利技术使用状态机的特性,将业务流程的不同分支状态用可视化视图表现出来,简化了整个业务流程的复杂度,易于维护,避免了现有的一个业务流程中具有众多条件分析带来的复杂,使用状态机形成的可视化视图非常清晰明了。

A state machine implementation method and system

The present invention provides a method and system for the implementation of a state machine. The method includes: defining all states involved in a business process as the state of a state machine, determining the current state of a state machine, determining the next state of the current state under the conditions described, according to the current state of the state machine and the conditions of the input. According to the determined next state, the control state machine jumps from the current state to the next state, and performs the corresponding action. For complex business processes with different states, the invention uses the characteristics of the state machine to display the different branches of the business process in visual view, simplifies the complexity of the whole business process, easy to maintain, and avoids the complexity of the analysis of many conditions in the existing business process. The visual view formed by the state machine is very clear.

【技术实现步骤摘要】
一种状态机的实现方法及系统
本专利技术涉及状态机
,更具体地,涉及一种状态机的实现方法及系统。
技术介绍
在实际应用中经常会遇到一些具有状态走向的大型系统业务流程,如订单系统,一个订单具有创建、提交、待支付、已支付、已完成、已删除、处理中等等各种状态,不同状态根据不同的场景又有不同的走向。在业务逻辑执行的过程中,在代码中需要编写很多if/else分支,程序代码非常混乱。同时,分支判断太多的代码也不易于理解,不易于维护,在对这些复杂业务流程处理非常繁琐。
技术实现思路
本专利技术提供一种克服上述问题或者至少部分地解决上述问题的一种状态机的实现方法及系统,能够解决处理大型复杂业务流程中的繁琐、维护困难的问题。根据本专利技术的一个方面,提供一种状态机的实现方法,包括:将业务流程中涉及的所有状态定义为状态机的状态;确定状态机的当前状态,根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作;根据确定出来的所述下一个状态,控制状态机从所述当前状态跳转至所述下一个状态,并执行所述对应的动作。本专利技术的有益效果为:对于具有不同状态走向的复杂业务流程,使用状态机的特性,将业务流程的不同分支状态用可视化视图表现出来,简化了整个业务流程的复杂度,易于维护,避免了现有的一个业务流程中具有众多条件分析带来的复杂,使用状态机形成的可视化视图非常清晰明了。在上述技术方案的基础上,本专利技术还可以作如下改进。进一步的,在所述将业务流程中涉及的所有状态定义为状态机的状态之前还包括:在spring框架中配置当前状态、条件和下一个状态、对应的动作之间的对应关系,形成对应关系表;相应的,所述根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作具体包括:根据确定出的状态机的当前状态以及输入的条件,在所述对应关系表中进行查询,确定出与当前状态以及输入条件对应的下一个状态和对应的动作。进一步的,所述状态机包括初始状态和结束状态,所述方法还包括:当所述当前状态为结束状态时,控制状态机停止跳转;以及,所述根据确定出的状态机的当前状态以及输入的条件,在所述对应关系表中进行查询,确定出与当前状态以及输入条件对应的下一个状态和对应的动作还包括:当根据状态机的当前状态以及输入的条件,在所述对应关系表中找不到相匹配的下一个状态和对应的动作,则控制状态机停止跳转。进一步的,所述根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作具体包括:将手动输入条件作为触发信号,根据该触发信号,确定状态机的当前状态,根据状态机的当前状态以及输入的条件,确定所述当前状态的下一个状态以及对应的动作。进一步的,所述根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作具体包括:根据状态机的当前状态以及当前状态、条件和下一个状态、对应的动作之间的对应关系,从状态机的当前状态开始,自动控制状态机按照执行顺序在不同的状态之间进行跳转,并执行跳转后对应的动作,直到状态机的当前状态为结束状态。进一步的,所述对应的动作包括多个层级的子动作,所述根据确定出来的所述下一个状态,控制状态机从所述当前状态跳转至所述下一个状态,并执行相应的动作具体包括:根据确定出来的下一个状态,控制状态机从所述当前状态跳转至所述下一个状态,并执行相应动作下的全部子动作或者部分子动作。进一步的,所述状态机可以为多个,多个状态机之间为继承关系,形成父状态机和子状态机,通过在子状态机中实现父状态机的业务流程。根据本专利技术的另一个方面,提供了一种状态机的实现系统,包括:定义模块,用于将业务流程中涉及的所有状态定义为状态机的状态;确定模块,用于确定状态机的当前状态,根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作;控制模块,用于根据确定出来的所述下一个状态,控制状态机从所述当前状态跳转至所述下一个状态,并执行所述对应的动作。根据本专利技术的再一个实施例,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行状态机的实现方法。附图说明图1为本专利技术一个实施例的状态机的实现方法流程图;图2为本专利技术另一个实施例的状态机的实现方法的整个过程示意图;图3为本专利技术又一个实施例的状态机中各个状态之间流转的示意图;图4为本专利技术再一个实施例的状态机的实现系统连接框图;图5为本专利技术又一个实施例的状态机实现系统的整体连接框图;图6为本专利技术一个实施例的状态机的实现方法的设备连接框图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。参见图1,提供了本专利技术一个实施例的状态机的实现方法,将复杂业务流程可视化,该方法包括:将业务流程中涉及的所有状态定义为状态机的状态;确定状态机的当前状态,根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作;根据确定出来的所述下一个状态,控制状态机从所述当前状态跳转至所述下一个状态,并执行对应的动作。在实际应用中经常会遇到一些具有状态走向的业务流程,如订单系统,一个订单具有创建、提交、待支付、已支付、已完成、已删除、处理中等等各种状态,不同状态根据不同的场景又有不同的走向。在对这些复杂业务流程处理非常繁琐,因此,本实施例引入状态机,利用状态机使得复杂业务流程转换为可视化视图,更加清晰明了。具体过程为,根据业务流程的所有状态,为状态机定义业务流程的所有状态,每一个状态在不同的条件下会对应不同的下一个状态,以及执行不同的动作。在实现不同状态流转的过程中,首先需要确定状态机的当前状态,然后根据输入的条件,确定状态机的当前状态在输入的条件下对应的下一个状态以及对应需要执行的动作。根据确定出来的状态机的当前状态对应的下一个状态以及相应的动作,控制状态机从当前状态跳转到确定出来的下一个状态,并执行确定出来的相应动作。在本专利技术的另一个实施例中,在所述将业务流程中涉及的所有状态定义为状态机的所有状态之前还包括:在spring框架中配置当前状态、条件和下一个状态、对应的动作之间的对应关系,形成对应关系表;相应的,所述根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作具体包括:根据确定出的状态机的当前状态以及输入的条件,在所述对应关系表中进行匹配,确定出与当前状态以及输入条件对应的下一个状态和对应的动作。由于在控制状态机从当前状态跳转到另一个状态的过程中,需要确定当前状态在不同的条件下对应的下一个状态,在本实施例中,事先在spring框架下配置当前状态、条件和下一个状态、对应的动作之间的对应关系,形成对应关系表。比如,订单系统中一个订单待支付是一个状态,支付成功是一个条件,下一个状态对应为已支付,相应的动作为发短信告知用户支付成功。在spring框架中配置好对应关系表之后,根据状态机的当前状态,以及根据输入的条件,确定当前状态的下一个状态以及对应的动作具体过程为,将状态机的当前状态和输入的条件在对应关系表中进行匹配,找到对应的下一个状态以及对应的动作。随后就可以控制状态机从本文档来自技高网...
一种状态机的实现方法及系统

【技术保护点】
一种状态机的实现方法,其特征在于,包括:将业务流程中涉及的所有状态定义为状态机的状态;确定状态机的当前状态,根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作;根据确定出来的所述下一个状态,控制状态机从所述当前状态跳转至所述下一个状态,并执行所述对应的动作。

【技术特征摘要】
1.一种状态机的实现方法,其特征在于,包括:将业务流程中涉及的所有状态定义为状态机的状态;确定状态机的当前状态,根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作;根据确定出来的所述下一个状态,控制状态机从所述当前状态跳转至所述下一个状态,并执行所述对应的动作。2.如权利要求1所述的状态机的实现方法,其特征在于,在所述将业务流程中涉及的所有状态定义为状态机的状态之前还包括:在spring框架中配置当前状态、条件和下一个状态、对应的动作之间的对应关系,形成对应关系表;相应的,所述根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作具体包括:根据确定出的状态机的当前状态以及输入的条件,在所述对应关系表中进行查询,确定出与当前状态以及输入条件对应的下一个状态和对应的动作。3.如权利要求2所述的状态机的实现方法,其特征在于,所述状态机包括初始状态和结束状态,所述方法还包括:当所述当前状态为结束状态时,控制状态机停止跳转;以及,所述根据确定出的状态机的当前状态以及输入的条件,在所述对应关系表中进行查询,确定出与当前状态以及输入条件对应的下一个状态和对应的动作还包括:当根据状态机的当前状态以及输入的条件,在所述对应关系表中找不到相匹配的下一个状态和对应的动作,则控制状态机停止跳转。4.如权利要求2所述的状态机的实现方法,其特征在于,所述根据状态机的当前状态和输入的条件,确定所述当前状态在所述条件下的下一个状态以及对应的动作具体包括:将手动输入条件作为触发信号,根据该触发信号,确定状态机的当前状态,根据状态机的当前状态以及输入的条件,确定所述当前状态的下一个状态以及对应的动作。5.如权利要求2所述的状态机...

【专利技术属性】
技术研发人员:林皓张托王周松龚建新
申请(专利权)人:江苏神州信源系统工程有限公司
类型:发明
国别省市:江苏,32

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

1