通用流程异步调度方法及系统的制作方法
【专利摘要】本发明提供一种通用流程异步调度方法和系统。该通用流程异步调度方法包括:将与流程对应的进程顺序地划分为多个子进程;基于流程状态的更新完成所述多个子进程中的一个子进程,而不依赖于所述多个子进程中的下一子进程的启动;在所述一个子进程完成时,通过流程状态的更新启动所述下一子进程。
【专利说明】通用流程异步调度方法及系统
【技术领域】
[0001]本发明涉及计算机软件领域。更具体地,本发明涉及通用流程异步调度方法及系统。
【背景技术】
[0002]在现有技术中,在计算机系统中的各种应用的流程调度处理,特别是其中的任务提交处理,均采用同步方式进行。具体地,现有流程调度处理模式一般都是采用单线程处理方式,即,任何流程处理(包括提交处理)全过程均采用单一线程完成。目前,在计算机系统中的各种应用的大部分流程调度中,仅仅能支持单一应用的独立流程调度,重要原因就是很难支持高并发处理能力。然而,实际中,流程提交处理往往包括大量业务判断、业务处理、数据持久化等相关业务操作。
[0003]在描述现有技术和本发明之前,先对本说明书中的几个术语进行描述。
[0004]活动:活动(activity)是流程中的基本的业务单元。每一个活动代表一个特定的业务,比如说提交、验证等等都可以是一个活动。活动有两种类型:任务(task)和子处理(sub-process)。任务很明显就是单一的活动。而子处理是一个复合的活动,在该活动中存在一个子流程。
[0005]作业:作业(job)是计算机操作者(或是一个叫做作业调度器的程序)交给信息处理系统的执行单位。例如执行一个函数就是一个作业。
[0006]事件:事件(event) —般对应状态的变化。例如按下键盘,这可以作为一种事件。对于事件的操作一般分为事件的响应和事件的处理两个部分。
[0007]下面描述现有技术中常见的流程调度处理。图1以一个流程中的提交处理和验证处理为例示出了现有技术中的常规流程调度处理的时序图。如图1所示,在常规流程调度处理中,客户端首先进行提交处理,从而进入提交活动。随后,进行流程状态更新并进行路由判断,根据判断结果启动下一活动并进行与下一活动相关的设置处理,随后才返回到客户端。在此过程中,客户端必须等待进行路由的判断、下一活动的启动以及相关的设置处理。在某些高并发流程处理的情况下,这样的等待使得流程处理效率低下。
[0008]图2以一个流程中的提交和验证为例示出了常规流程调度处理的示意图。如图2所示,提交的完成与验证的启动这两个处理均只能在完整的一个事务中顺序完成。换句话说,提交的活动完成这个处理必须等待验证的活动正常启动后,才能结束。
[0009]如图所示,该流程提交处理方式导致处理响应时间较长,处理效率受到很大影响。
[0010]如上所述,在现有技术的流程调度中,流程提交处理随着流程复杂度提升、流程路由判断增多等内容,导致流程提交这个大事务处理越来越慢,客户端响应时间越来越长,应用系统效率低下。从技术特征分析而言,导致以上缺点的核心原因是:流程提交从引擎设计角度而言,采用一种同步单线程处理的机制。无法实现并行操作。在作为大容量工作流引擎,特别是流程云服务器能力,对于并行处理能力要求很高。
【发明内容】
[0011]提出本发明来克服现有技术中的流程调度效率低下,客户端响应时间长的问题。本发明重点在并行处理关键点上,流程处理,尤其是提交处理,实现可配置的异步处理能力。极大提升流程弓I擎处理效率和减少处理响应时间。
[0012]本发明的一方面提供一种通用流程异步调度方法,包括:将与流程对应的进程顺序地划分为多个子进程;基于流程状态的更新完成所述多个子进程中的一个子进程,而不依赖于所述多个子进程中的下一子进程的启动;在所述一个子进程完成时,通过流程状态的更新启动所述下一子进程。
[0013]优选地,在所述通用流程异步调度方法中,所述的基于流程状态的更新完成所述多个子进程中的一个子进程的步骤包括:在所述一个子进程完成时,基于更新的流程状态返回完成结果。
[0014]优选地,在所述通用流程异步调度方法中,所述的通过流程状态的更新启动所述下一子进程的步骤包括:基于更新的流程状态产生用于启动下一子进程的事件;并且在该事件的触发下启动所述下一子进程。
[0015]优选地,在所述通用流程异步调度方法中,在该事件的触发下启动所述下一子进程的步骤包括:根据该事件,产生用于启动下一子进程的消息;并且根据所述消息执行下一子进程的启动序列。
[0016]优选地,在所述通用流程异步调度方法中,所述一个子进程包括从客户端接收的流程提交子进程,基于该流程提交子进程的执行对流程状态进行更新;基于更新的流程状态,完成流程提交子进程并向客户端返回结果。
[0017]本发明的另一方面提供一种通用流程异步调度系统,包括:外部接口,被配置为接收用于执行流程的指令以及输出结果;状态机,被配置为更新流程状态,基于更新的流程状态完成流程的当前子进程以及产生用于启动下一子进程的事件;事件监听器,被配置为实时监听事件,并基于监听到的事件发出用于启动下一子进程的消息;作业处理器,被配置为接收所述消息并启动下一子进程。
[0018]优选地,在所述通用流程异步调度系统中,所述事件监听器被配置为创建事件发生机制;并且状态机能够在状态改变时产生基于所述事件发生机制的事件,从而事件监听器能够监听到该事件。
[0019]优选地,在所述通用流程异步调度系统中,所述子进程包括通过外部接口从客户端接收的流程提交子进程,所述状态机基于该流程提交子进程的执行对流程状态进行更新,并向外部接口返回该流程提交子进程完成的消息;所述外部接口在接收到该流程提交子进程完成的消息时,进行流程提交子进程完成的处理并将处理结果返回给客户端。
[0020]优选地,在所述通用流程异步调度系统中进一步包括:持久化框架,其被配置为将流程状态的控制和流转通过文件或数据库进行状态持久化。
[0021]通过本发明的通用流程异步调度方法和系统,支持高并发、高性能、并行处理能力的流程引擎,以适应流程引擎以云服务(SAAS)方式提供高可靠高性能的活动处理能力。极大提升流程引擎处理效率和减少处理响应时间。
【专利附图】
【附图说明】[0022]图1是以一个流程中的提交处理和验证处理为例示出现有技术中的常规流程调度处理的时序图。
[0023]图2是以一个流程中的提交和验证为例示出了常规流程调度处理的示意图。
[0024]图3是从流程总体角度示出了本发明的异步流程调度系统的示意图。
[0025]图4是本发明的通用流程异步调度系统的框图。
[0026]图5是本发明的通用流程异步调度处理的时序图。
[0027]图6是与图5的通用流程异步调度处理的时序图对应的流程图.[0028]图7是以一个流程中的提交和验证为例示出了本发明的通用流程异步调度处理的示意图。
[0029]图8是与图7的流程中的提交和验证处理对应的流程图。
【具体实施方式】
[0030]现在将按照附图详细描述本发明的优选实施例。注意,实施例中的组件的相对布置和器件的形状仅被描述为例子,并且并不旨在将本发明的范围限制于这些例子。此外,相似的附图标记和字母在图中指代类似的项,由此,只要在一个图中定义一项,则无需对于后续的图讨论该项。
[0031]本发明的流程异步调度方法和系统的原理是将一个流程分为多个子进程,并且前一子进程的完成并不依赖于后一子进程的启动,而是依赖于流程状态的更新。这样实现了各个子进程的完成无需等待下一子进程的启动,减少了等待时间,从而资源利用率得到提闻。
[0032]下面结合图3到图6详细描述本发明的流程异步调度系统的构成以及与流程处理的其他部分之间的关系。还将描述流程异步调度系统或方法的具体实现。
[0033]图3是从流程总体角度示出了本发明的流程异步调度系统的定位以及与其他部分的关系的示意图。如图3所示,作为流程产品总体组成,一般包括流程适配器、任务队列、流程管理、流程异步调度引擎、流程定义这几个部分。各部分功能如下。
[0034]流程适配器实现了可移植、可复用、无差别的接口,为客户端提供了简明、统一的调用服务。流程适配器是客户端和工作流程处理之间的连接媒介,提供了多样、稳定的访问服务接口。
[0035]任务队列是按业务的维度部署的,每个队列下每个角色为一个独立的线程。每个线程根据动态时间间隔,以角色为单位批量获取本队列本角色下的工作项到内存中,按照角色、活动定义、优先级等维度组织工作项队列,对外提供工作项的获取、提交等服务,实现高并发环境下任务项的科学、合理、准确、平滑的调度。
[0036]异步流程调度是产品的核心组件,根据需求提供流程定义模板的解析、流程实例的生成、流程路由计算、新流程新任务项的产生、完全动态分支等多种分支合并策略、流程环节参与者与排除者的指定、优先级自动调整以及超时工作项的自动回收等功能。采取引擎组间双活备份策略实现流程的不间断处理,在数据库等资源可支持的范围内具备无限制的横向扩展能力,以应对由于日益增长的业务量带来的倍数增长的需处理的流程实例数量。
[0037]流程定义提供了可 视化的流程定制界面,通过拖拽等简单操作实现对复杂业务流程的定制,把产品开发的过程转换成模型定制的过程,对业务需求和产品服务能够进行快速响应和部署。流程定义模块将业务订制过程中共性的操作固化为子流程并加入子流程库,为后继的业务流程订制提供了大量的可复用模板。可视化的流程定义基于XML格式文件,在存储时将XML文件转化为关系数据库中的记录,提高了流程引擎解析流程定义的效率。
[0038]流程管理提供了对流程处理过程的监控、管理等功能。为组件自身的监控以及业务层对业务流程处理的监控提供基础功能。
[0039]从图3中可以看出,流程异步调度系统是业务流程平台核心部分,是平台发动机和驱动器。因此它处理性能好坏直接关系平台产品扩展能力和要求。
[0040]下面对流程异步调度系统的构成进行详细描述。图4是本发明的流程异步调度系统的框图。如图4所示,所述流程异步调度系统包括:事件监听控制器、作业处理器、状态控制机、流程外部接口和持久化框架。
[0041]事件监听控制器(event-listener)是实现异步处理所需的基础器件之一。它有两个核心作用,第一:它能够实时监听各类事件,例如启动事件、完成事件;第二,它提供事件发生机制,即,在事件监听控制器中规定在什么状态下产生什么事件,并且基于该事件进行什么活动。从而,其他部件产生的事件必须是基于该事件监听控制器的事件发生机制,这样,事件监听控制器才能侦测到这个事件。如果其他部件产生的事件没有遵循该事件发生机制,则无法被事件监听控制器侦测到,无法进行后续的处理。在监听到事件时,事件监听控制器能够根据所述事件进行相应的处理,例如,向作业处理器发送用于启动相关活动的消息。
[0042]作业处理器(job worker)是指提供作业处理控制和管理的器件。作业处理器的控制和管理包括作业注册、作业执行、作业异常处理、作业处理序列控制等功能。例如,作业处理器在接收到来自事件监听控制器的用于启动相关活动的消息时,执行活动启动序列,包括流程路由判断、参与者设置、活动启动、流程状态的修改等工作。
[0043]状态控制机用于对应流程不同环节来进行不同状态控制和转换。状态机是控制流程流转状态的基本控制单元,它能实现流程按照定义要求进行流转与状态控制。具体地,状态控制机能够更新流程状态,产生消息和事件。
[0044]持久化框架用于将流程状态控制和流转通过文件或数据库进行状态持久化,从而使得文件或数据库被存储,甚至当使用这些文件或数据库的程序不在运行状态时也可以保留该文件或数据库。因此该器件就是支持持久化框架的能力。
[0045]本领域技术人员能够理解,所述持久化框架并不是实现本发明所必需的。所述持久化框架仅是为了将文件或数据库持久化。在没有所述持久化框架的情况下,本发明依然能够实现减少等待时间,提闻效率的目的。
[0046]流程外部接口提供外部器件或系统调用的统一接口。其能够从客户端接收指令,将该指令传输给相应的部件,并且能够根据来自其他部件的通知或消息,完成流程当前子进程的处理,并将当前子进程完成的消息通知给客户端。
[0047]下面结合图5和图6详细描述本发明的通用流程异步调度系统的通用流程异步调度处理。图5是以流程提交为例示出了本发明的通用流程异步调度处理的时序图。图6是与图5的时序图对应的流程图。[0048]在图6的步骤S601中,如参照图5的左侧所示的,客户端首先通过流程外部接口执行流程提交处理。
[0049]在步骤S602中,流程外部接口在接收到流程提交处理之后,在相应部件执行了提交相应的处理之后,状态机更新流程状态。
[0050]在步骤S603中,基于此更新的状态,状态机向流程外部接口返回一个状态已更新的消息。由此,流程外部接口进行一些相应的处理,并将完成的结果返回给客户端。
[0051]在步骤S604中,在状态机更新了流程状态之后,状态机产生一个用于启动下一活动的事件。如上文参照图4所描述的,所述事件是基于事件监听控制器所规定的事件发生机制的,以便事件监听控制器能够实时监听到该事件。
[0052]在步骤S605中,事件监听控制器监听到该用于启动下一活动的事件时,向作业处理器发出用于产生下一活动的消息。
[0053]在步骤S606中,作业处理器接收到该用于产生下一活动的消息时,执行启动下一活动的处理。具体地,包括流程路由判断、参与者设置、流程状态的修改的处理。
[0054]上面仅以流程中的两个活动为例说明了本发明的流程异步调度处理。
[0055]从图5和图6以及相应描述可以看出,在本发明的流程异步调度系统中,将客户端的流程提交活动与下一活动分为两个子进程进行处理。并且前一子进程,即,流程提交活动的完成只根据状态的更新来实现,而不是要等到下一活动的启动。这样客户端无需等待,节省了时间,进而大大提高了效率。
[0056]虽然以流程提交活动为例示出了流程异步调度系统或方法的处理,但是该处理并不限于流程提交活动,而是同样适用于流程的其他活动。对于其他活动的处理与上面所述的两个活动的处理相同。例如流程提交活动的下一活动与该下一活动之后的下一活动。在该下一活动的参与者和包括作业处理器的相应部件执行该下一活动时,状态控制机根据活动的执行情况更新流程状态。例如当完成该一下活动的处理时,状态控制机将流程状态更新为当前活动完成的状态。基于此,向流程外部接口返回更新的状态的消息。从而流程外部接口进行一些相应的处理并将当前活动完成的结果返回给当前活动的参与者的客户端。从而当前活动的子进程完成。在此过程中,该参与者不必等待之后活动的启动。
[0057]同样地,在状态控制机更新了流程状态之后,状态控制机产生一个用于启动当前活动的下一活动的事件,进入该下一活动的子进程。事件监听控制器监听到该事件时,向作业处理器发出一个用于产生下一活动的消息。作业处理器接收到该用于产生下一活动的消息时,执行启动下一活动的处理。具体地,包括流程路由判断、参与者设置、流程状态的修改等处理。
[0058]综上所述,根据本发明的流程异步调度系统和方法,将与流程对应的进程顺序地划分为多个子进程;基于流程状态的更新完成所述多个子进程中的一个子进程,而不依赖于所述多个子进程中的下一子进程的启动;在一个子进程完成时,通过流程状态的更新启动所述下一子进程。
[0059]下面对比现有技术中的流程中的提交和验证处理,参照图7和图8说明本发明的通用流程异步调度处理。图7以一个流程中的提交和验证为例示出了本发明的通用流程异步调度处理的示意图。图8是与图7的流程中的提交和验证处理对应的流程图。
[0060]首先,在图8的步骤S801中,客户端通过流程外部接口执行业务申请流程的提交处理,从而进入子进程1,如图7所示。
[0061]然后,在步骤S802中,流程外部接口在接收到业务申请流程的提交处理之后,与业务申请提交相关的处理被执行,如参照图7的(I)执行提交活动。在完成提交活动之后,状态机将流程状态从提交状态更新为提交完成状态,如图7的(2)更新状态所示。
[0062]在步骤S803中,状态机在提交完成状态下向流程外部接口返回一个状态已更新为提交完成状态的消息。流程外部接口接受该消息并进行处理,并将提交完成的结果返回给客户端,如图7的(3)完成提交所示。从而客户端不必像图1所示的现有技术那样,等待启动下一活动。至此,子进程I结束,即,业务申请提交的子进程结束。
[0063]在步骤S804中,状态机在将流程状态更新为提交完成之后,产生用于启动该业务申请的验证的事件,以便事件监听控制器能够实时监听到该事件。如图7的(4)启动验证活动所示。
[0064]在步骤S805中,事件监听控制器在监听到用于启动该业务申请的验证的事件时,向作业处理器发出一个用于产生验证活动的消息。
[0065]在步骤S806中,作业处理器接收到该用于产生验证活动的消息时,执行启动验证活动的处理。包括判断流程应该前进到哪个分支、进行验证活动的参与者以及将流程状态更新为验证启动状态。从而完成验证活动的启动,如图7的(5)启动完成所示。
[0066]此后,执行验证活动,如图7的(7)执行验证活动所示。此后,虽然图中为了清楚未示出,但是在完成验证活动时,更新状态,随后的处理与前一活动,即,申请活动相同,从而完成子进程2。
[0067]通过对比现有技术的图2和本发明的图7可以看出,在本发明中,将提交活动作为一个完整的事务来处理,即,子进程I。提交活动的完成与验证活动的启动是独立的。而现有技术中,提交活动必须在验证活动启动之后才能完成。
[0068]本发明的这种流程异步调度方式有如下优点:
[0069]客户端在完成申请提交活动时候,不需要等待验证活动启动成功后才能执行其他工作。
[0070]申请提交活动完成与验证活动启动两者完全解稱,并支持人工活动与自动活动两类活动的异步处理控制。人工活动一般是指需要人参与和点击处理的活动,例如申请或验证活动。自动活动一般是指由系统或计算机自动处理的活动,例如自动转换活动。当然这两类活动均支持异步处理控制。同时也支持各类扩展事件处理均采用这种机制进行处理。
[0071]本发明并不仅限于上述【具体实施方式】,本领域普通技术人员在本发明的实质范围内作出的变化、改型、添加或替换也应属于本发明的保护范围。
【权利要求】
1.一种通用流程异步调度方法,包括: 将与流程对应的进程顺序地划分为多个子进程; 基于流程状态的更新完成所述多个子进程中的一个子进程,而不依赖于所述多个子进程中的下一子进程的启动; 在所述一个子进程完成时,通过流程状态的更新启动所述下一子进程。
2.根据权利要求1所述的通用流程异步调度方法,其中, 所述的基于流程状态的更新完成所述多个子进程中的一个子进程的步骤包括: 在所述一个子进程完成时,基于更新的流程状态返回完成结果。
3.根据权利要求1所述的通用流程异步调度方法,其中, 所述的通过流程状态的更新启动所述下一子进程的步骤包括: 基于更新的流程状态产生用于启动下一子进程的事件;并且 在该事件的触发下启动所述下一子进程。
4.根据权利要求3所述的通用流程异步调度方法,其中, 在该事件的触发下启动所述下一子进程的步骤包括: 根据该事件,产生用于启动下一子进程的消息;并且 根据所述消息执行下一子进程的启动序列。
5.根据权利要求1到4中任一项所述的通用流程异步调度方法,其中, 所述一个子进程包括从客户端接收的流程提交子进程, 基于该流程提交子进程的执行对流程状态进行更新; 基于更新的流程状态,完成流程提交子进程并向客户端返回结果。
6.一种通用流程异步调度系统,包括: 外部接口,被配置为接收用于执行流程的指令以及输出结果; 状态机,被配置为更新流程状态,基于更新的流程状态完成流程的当前子进程以及产生用于启动下一子进程的事件; 事件监听器,被配置为实时监听事件,并基于监听到的事件发出用于启动下一子进程的消息; 作业处理器,被配置为接收所述消息并启动下一子进程。
7.根据权利要求6所述的通用流程异步调度系统,其中, 所述事件监听器被配置为创建事件发生机制;并且 状态机能够在状态改变时产生基于所述事件发生机制的事件,从而事件监听器能够监听到该事件。
8.根据权利要求6所述的通用流程异步调度系统,其中, 所述子进程包括通过外部接口从客户端接收的流程提交子进程, 所述状态机基于该流程提交子进程的执行对流程状态进行更新,并向外部接口返回该流程提交子进程完成的消息; 所述外部接口在接收到该流程提交子进程完成的消息时,进行流程提交子进程完成的处理并将处理结果返回给客户端。
9.根据权利要求6-8中任一项所述的通用流程异步调度系统,进一步包括: 持久化框架,其被配置为将流程状态的控制和流转通过文件或数据库进行状态持久化。
【文档编号】G06F9/44GK103631594SQ201310643262
【公开日】2014年3月12日 申请日期:2013年12月3日 优先权日:2013年12月3日
【发明者】郑春, 陈路凝, 王杰飞 申请人:北京宇信易诚科技有限公司