一种基于分布式部署的跨系统流程引擎协作系统及方法与流程

文档序号:11135002阅读:619来源:国知局
一种基于分布式部署的跨系统流程引擎协作系统及方法与制造工艺

本发明涉及一种基于分布式部署的跨系统流程引擎协作系统及方法,属于中间件技术领域,尤其是在业务流程管理领域。



背景技术:

流程引擎的本质是状态变迁和过程流转,目前市场上的流程引擎大部分基于Petri Net或有限状态机(Finite State Machine-FSM)模型实现。基于Petri Net或FSM模型,利用token树驱动流程状态的变迁,进而实现串行流程、并行流程、子流程等常见的业务流程,在OA、ERP等软件系统中普遍应用。但是,在组织架构复杂、跨地域协作工作的集团型大企业里,传统的流程引擎不能支持跨组织、跨地域、分布式部署环境下的流程自动协作,往往需要人工参与进行数据合并和驱动流转,既给系统运维增加难度,也影响了系统的实时性。



技术实现要素:

本发明技术解决问题:为了解决现有的流程引擎在分布式、多系统环境下不能自动协作运行的问题,提供一种基于分布式部署的跨系统流程引擎协作系统及方法,可以实现在流程实例在分布式、多系统环境下的自动识别和整合协作,减少人工参与,降低运维成本,满足流程运行的实时性。

本发明技术方案是:一种基于分布式部署的跨系统流程引擎协作系统,所述协作系统中具有多个应用系统,每个应用系统中分别部署有流程引擎内核及扩展模块:在需要跨系统调用外协流程的位置部署节点扩展及流程路由模块,该节点扩展及流程路由模块中配置了外协流程模板的注册信息,其中

流程注册中心模块:负责管理协作系统中所有已存在流程模板的地址,供流程引擎内核及扩展模块通过流程注册查找接口进行调用,即,流程注册中心模块使得协作系统中所有的流程模板能够有序地被流程引擎内核及扩展模块以路由的形式调用;当协作系统中的服务器启动时,所有流程模板分别将各自所在服务器地址以编号的形式注册在流程注册中心模块,形成一个流程模板列表;当应用系统A中的流程引擎内核及扩展模块发起一个流程实例,并执行到节点扩展及流程路由模块的外协节点时,根据外协节点中配置的外协流程模板编号并通过流程注册查找接口调用流程注册中心模块,得到外协流程模板所在服务器地址,进而发起RESTful请求并执行跨系统调用动作,驱动应用系统B中流程引擎内核及扩展模块发起相应的外协流程实例并执行流转;外协流程实例执行完成之后,同样会根据外协流程模板所配置的应用系统A中流程模板编号通过流程注册查找接口调用流程注册中心模块,得到应用系统A中流程引擎所在服务器地址,进而发RESTful请求并执行返回动作,驱动应用系统A中流程实例继续流转;

流程注册中心模块可以基于zookeeper技术实现,协作系统中的所有流程模板将其所在服务器地址以编号的形式注册在zookeeper集群的流程注册中心,使得协作系统中所有的流程能够被外部流程引擎以路由的形式有序的调用。其中,zookeeper集群中流程注册列表的注册方式为:在根节点下,按应用系统标识和访问地址创建第二层节点,并将每一个应用系统内所有流程模板ID和编号添加在各自节点下,由于zookeeper自身的特性,协作系统内的所有其他节点将自动发现当前节点下的流程模板列表。流程模板编号是流程模板的唯一标识,又是流程模板所在服务器地址必不可少的组成部分,通过查询外协流程编号在zookeeper注册列表中的位置就可以得到外协流程所在服务器的地址,所以只需在外协节点中配置外协流程编号,即可实现当前流程对外协流程的调用,驱动外协流程进行流转。

流程注册方式为:第一层为根节点,然后按应用系统标识和访问地址前缀创建第二层节点,并将每一个应用系统内所有流程模板ID和编号添加在各自节点下,形成第三层节点;当某一应用系统出现故障或者断开时,位于第二层节点中相应的应用系统节点及其子节点也会消失。基于流程注册中心模块自身的特性,第二层节点中所有其他节点将能够自动发现当前节点下的流程模板列表。

流程引擎内核及扩展模块:负责根据外协流程的调用动作为协作系统提供流程节点的流转、待办的生成、审批意见、操作历史记录的功能。当应用系统A中的流程引擎内核及扩展模块执行流程实例到外协节点并通过zookeeper调用应用系统B中的外协流程时,会将当前流程实例的处理意见及待办信息以参数的形式发送给外协流程,然后将操作记录记录到后台数据库中。调用动作包括如下:

a)启动:根据外协流程模板编号,启动一个新的流程;

b)提交:根据外协流程模板编号、实例ID和节点参数,驱动流程流转;

c)拿回:根据外协流程模板编号、实例ID和节点参数,取消上一次的送审;

d)跳转:根据外协流程模板编号、实例ID和节点参数,直接跳转至流程中的某一个节点;

e)结束:根据外协流程模板编号、实例ID直接结束一个流程。

若当前调用动作为启动一个外协流程,则需要记录到数据库的内容包括:当前流程的启动动作、当前流程处理人的处理权限、外协流程实例ID、外协流程实例的全局属性、流程跟踪信息;若当前调用动作为提交、拿回、跳转,结束中的一种,则需要记录到数据库的内容包括:当前流程的提交动作、当前流程代办的已处理动作以及为外协流程中的下一步骤生成新待办动作、当前流程处理人意见以及外协流程中的下一步骤的处理人意见。应用系统B中的外协流程执行完成返回应用系统A时,会将外协流程的处理结果数据以JSON的格式发送给应用系统A中的流程引擎内核及扩展模块,以驱动原流程继续流转。

节点扩展及流程路由模块:节点扩展是指扩展流程引擎的节点类型,即外协节点,外协节点中需要配置外协流程在zookeeper流程注册中心中的注册编号及当前流程的输出参数,包括处理人、是否同步,若输出参数中的是否同步属性设置为“是”,则应用系统A中的流程引擎执行到外协节点时,会等待直到外协流程流转完成,然后继续执行后续的流程;若输出参数中的是否同步属性设置为“否”,则应用系统A中的流程引擎执行到外协节点时,提交调用动作,直接进行当前流程后续的流转。流程路由是指流程引擎的RESTful请求地址,通过在流程注册中心中查找外协节点中配置的外协模板编号和其所在服务器地址前缀来获得,且支持外部调用。所述RESTful请求是通过访问指定URL的形式来实现的,根据流程引擎内核及扩展模块发起的调用动作的不同,URL的组合形式分为两种,若调用动作为启动一个外协流程,则其中URL形式为:服务器地址前缀+所述的调用动作+流程模板ID,且外协流程启动后会将外协流程实例ID发送给原流程引擎;若调用动作为提交、拿回、跳转、结束一个外协流程,则URL形式为服务器地址前缀+所述的调用动作+流程模板ID+流程实例ID。当流程引擎内核及扩展模块执行流程实例到节点扩展及流程路由模块的外协节点时,会根据外协节点的配置信息获取外协流程模板的路由,进而发起RESTful请求并调用外协流程。同理,外协流程流转结束之后也通过自身的外协节点返回到原流程实例的外协节点处,驱动原流程实例继续流转。

综合以上三个模块所述,本发明的实施过程为:在需要流程调用的位置设置外协节点,流程引擎执行至外协节点时,根据zookeeper中的流程注册列表,查找外协节点配置的外协流程模板编号,进而获取外协流程的服务器地址,再根据服务器地址调用RESTful服务驱动外协流程流转;当外协流程调用结束后,也根据注册列表及原流程引擎所在的服务器地址返回到外协节点,驱动当前流程继续流转。

本发明与现有技术相比的有益效果是

(1)由于本发明中的流程注册中心为分布式系统中的所有流程注册地址,使得流程引擎间的相互调用更具秩序化,特别是针对组织架构复杂、跨地域协作的集团型企业,极大地提高了流程调用的可靠性。

(2)本发明扩展了流程引擎内核,将流程内的执行动作通过外协节点扩展到流程之间,提高了分布式系统中流程引擎的可用性,及扩展性。

(3)本发明中分布式系统中流程引擎相互调用的过程是通过设置外协节点及RESTful请求来实现的,调用动作通过外协节点自动完成,大大简化了系统间流程调用的人工操作,避免出现数据丢失或不一致等问题,而RESTful请求方式又使得被调用流程得资源暴露出来更具透明性,不需要考虑上下文及当前状态,极大的降低了路由的复杂度,进一步提高了执行效率。

附图说明

图1是本发明的逻辑部署结构图;

图2是流程注册中心的流程注册方式图;

图3为流程引擎内核的扩展图;

图4为外协节点的设置方式图;

图5为流程调用的路由方式图。

具体实施方式

下面结合附图和实例对本发明进一步详细说明。

如图1所示,本发明主要包括流程注册中心模块、流程引擎内核及扩展模块、节点扩展及流程路由模块。流程注册中心模块将协作系统内的所有流程进行注册,为节点扩展及流程路由模块进行路径规划提供基础,节点扩展及路由模块为分布式系统中流程引擎相互调用提供路径支持,流程引擎内核及扩展模块依靠前两个模块实现流程引擎间相互调用的动作及内容。

整个实现过程可归述为:当协作系统中的服务器启动时,所有流程模板分别将各自所在服务器地址以编号的形式注册在流程注册中心模块,形成一个流程模板列表。当应用系统A中的流程引擎内核及扩展模块发起一个流程实例,并执行到节点扩展及流程路由模块的外协节点时,根据外协节点中配置的外协流程模板编号并通过流程注册查找接口调用流程注册中心模块,得到外协流程模板所在服务器地址,进而发起RESTful请求并执行跨系统调用动作,驱动应用系统B中流程引擎内核及扩展模块发起相应的外协流程实例并执行流转。外协流程实例执行完成之后,同样会根据外协流程模板所配置的应用系统A中流程模板编号通过流程注册查找接口调用流程注册中心模块,得到应用系统A中流程引擎所在服务器地址,进而发RESTful请求并执行返回动作,同时会将外协流程的处理结果数据以JSON的格式发送给应用系统A中的流程引擎内核及扩展模块,以驱动应用系统A中流程实例继续流转。

如图2所示,本发明中流程注册中心模块具体实现如下:

协作系统内的所有流程模板根据编号将其所在服务器地址以列表的形式注册在流程注册中心模块,当应用系统A中的流程引擎内核及扩展模块发起一个流程实例,并执行到节点扩展及流程路由模块的外协节点时,根据外协节点中配置的外协流程模板编号并通过流程注册查找接口调用流程注册中心模块,查询流程模板列表,得到外协流程模板所在服务器地址,进而发起RESTful请求并执行跨系统调用动作,驱动应用系统B中流程引擎内核及扩展模块发起相应的外协流程实例并执行流转;外协流程实例执行完成之后,同样会根据外协流程模板所配置的应用系统A中流程模板编号通过流程注册查找接口查询zookeeper中的流程列表,得到应用系统A中流程引擎所在服务器地址,进而发RESTful请求并执行返回动作,驱动应用系统A中流程实例继续流转。流程注册中心模块基于zookeeper技术实现,当协作系统中的服务器启动时,所有流程模板将其所在服务器地址以编号的形式注册在zookeeper集群的流程注册中心,形成流程模板列表,使得协作系统中的流程能够被外部流程引擎以路由的形式有序的调用。zookeeper集群中流程模板列表的注册方式为:在zookeeper的根节点下,按应用系统标识和访问地址前缀创建第二层节点,并将每一个应用系统内所有流程模板ID和编号添加在各自节点下,形成第三层节点。当某一应用系统出现故障或者断开时,位于第二层节点中相应的应用系统节点及其子节点也会消失。由于zookeeper自身的特性,协作系统内的所有其他节点将自动发现当前节点下的流程模板列表。流程模板编号是流程模板的唯一标识,又是流程模板所在服务器地址必不可少的组成部分,通过查询外协流程编号在zookeeper的流程模板列表位置就可以得到外协流程所在服务器的地址,所以只需在外协节点中配置外协流程编号,即可实现当前流程对外协流程的调用,驱动外协流程进行流转。外协流程执行完成之后,同样会通过原流程的模板编号和流程注册查找接口来查询zookeeper中的流程模板列表,得到原流程的服务器地址,进而返回到原流程的外协节点,驱动其继续流转。

如图3所示,本发明中流程引擎内核及扩展模块具体实现如下:

当应用系统A中的流程引擎内核及扩展模块执行流程实例到外协节点并通过流程注册中心模块调用应用系统B中的外协流程时,会将当前流程实例的处理意见及待办信息以参数的形式发送给外协流程,然后将操作记录记录到后台数据库中。调用动作包括如下:

a)启动:根据外协流程模板编号,启动一个新的流程;

b)提交:根据外协流程模板编号、实例ID和节点参数,驱动流程流转;

c)拿回:根据外协流程模板编号、实例ID和节点参数,取消上一次的送审;

d)跳转:根据外协流程模板编号、实例ID和节点参数,直接跳转至流程中的某一个节点;

e)结束:根据外协流程模板编号、实例ID直接结束一个流程。

若当前调用动作为启动一个外协流程,则需要记录到数据库的内容包括:当前流程的启动动作、当前流程处理人的处理权限、外协流程实例ID、外协流程实例的全局属性、流程跟踪信息;若当前调用动作为提交、拿回、跳转,结束中的一种,则需要记录到数据库的内容包括:当前流程的提交动作、当前流程代办的已处理动作以及为外协流程中的下一步骤生成新待办动作、当前流程处理人意见以及外协流程中的下一步骤的处理人意见。应用系统B中的外协流程执行完成返回应用系统A时,会将外协流程的处理结果数据以JSON的格式发送给应用系统A中的流程引擎内核及扩展模块,以驱动原流程继续流转。

如图4和图5所示,本发明中节点扩展及流程路由模块具体实现如下:

节点扩展是指扩展流程引擎的节点类型,即外协节点,外协节点中需要配置外协流程在流程注册中心模块中的注册编号及当前流程的输出参数,包括处理人、是否同步,若输出参数中的是否同步属性设置为“是”,则应用系统A中的流程引擎执行到外协节点时,会等待直到外协流程流转完成,然后继续执行后续的流程;若输出参数中的是否同步属性设置为“否”,则应用系统A中的流程引擎执行到外协节点时,提交调用动作,直接进行当前流程后续的流转。流程路由是指流程引擎的RESTful请求地址,通过在流程注册中心模块中查找外协节点中配置的外协模板编号和其所在服务器地址前缀来获得,且支持外部调用。RESTful请求是通过访问指定URL的形式来实现的,根据流程引擎内核及扩展模块发起的调用动作的不同,URL的组合形式分为两种,若调用动作为启动一个外协流程,则其中URL形式为:服务器地址前缀+所述的调用动作+流程模板ID,且外协流程启动后会将外协流程实例ID发送给原流程引擎;若调用动作为提交、拿回、跳转、结束一个外协流程,则URL形式为服务器地址前缀+所述的调用动作+流程模板ID+流程实例ID。当流程引擎内核及扩展模块执行流程实例到节点扩展及流程路由模块的外协节点时,会根据外协节点的配置信息获取外协流程模板的路由,进而发起RESTful请求并调用外协流程,并提交业务相关的JSON数据。同理,外协流程流转结束之后也通过自身的外协节点返回到原流程实例的外协节点处,驱动原流程实例继续流转。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1