CN110955534B - 一种基于中间件的业务流程自动化***及方法 - Google Patents
一种基于中间件的业务流程自动化***及方法 Download PDFInfo
- Publication number
- CN110955534B CN110955534B CN201910960347.3A CN201910960347A CN110955534B CN 110955534 B CN110955534 B CN 110955534B CN 201910960347 A CN201910960347 A CN 201910960347A CN 110955534 B CN110955534 B CN 110955534B
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- flow
- middleware
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开一种基于中间件的业务流程自动化***及方法,***用于实现方法,本***的业务微服务和业务流程中间件依赖分布式微服务框架向微服务注册中心进行信息注册;业务微服务通过分布式微服务框架向微服务注册中心订阅业务流程服务,并获取相应的信息,并根据所获取的信息从业务流程中间件调用流程模板;业务中间件对各种业务流程的执行步骤抽象成相应流程模板并将每个流程模板的应用数据存储于数据库,并通过分布式微服务框架从微服务注册中心获取业务微服务的服务信息通知,且根据所获取的信息调用业务微服务的服务业务。本发明为无中心化架构及冗余备份机制提供安全可靠、高效的分布式业务流程自动化服务。
Description
技术领域
本发明涉及微服务领域,更具体地,涉及一种基于中间件的业务流程自动化***及方法。
背景技术
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。***中的各个微服务可被独立封装和独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。
业务流程自动化(BPA)是利用技术对完成一种特别功能或工作流的活动或服务进行自动化。业务流程自动化主张通过自动化的方式进行流程执行,以减少重复劳动,降低人力成本,业务流程自动化***是指业务流程自动化的软件实现。
在业务流程自动化***中,例如申请贷款的业务流程,这需要一套预先确定好的工作流步骤,或流程,用户填写申请表,提交到***,***自动检查提交的审核资料是否完备,然后通知银行相关工作人员,工作人员通过审查用户资料等看是否符合申请条件,检查申请额度是否在额度范围内,初步通过或者拒绝,如果通过初步申请,就继续提交第二审核人,第二审核人如果也通过的话,将会通知用户贷款申请通过,同时通知划账***,最后贷款划拨到用户的对应银行账户内而结束。
消息队列技术,把一些不需要即时获取结果的调用放入指定队列,同时实现功能的微服务从指定队列取出调用请求,执行请求。适用于不需要即时获取结果而且比较耗时的操作。
目前常见的工作流引擎有:Activiti,jbpm,Activiti5基于jBPM4的开源工作流***。他们的人工处理节点都需要配置对应的业务表单,这样会导致流程配置的业务表单和业务***的表单界面不协调、不联动等情况出现。activiti的流程解析和业务是绑定在一起的,使得业务与流程不能分开部署,使业务处理能力难以扩展。Activiti的权限处理是通过配置用户组和用户来实现的,但是这样就导致了流程和业务都需要配置相同的重复的用户信息。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种基于中间件的业务流程自动化***。
本发明旨在至少在一定程度上解决上述技术问题。
本发有的主要目的在于提供一种利用微服务技术实现独立的、分布式的、可扩展的业务流程中间件。
为了达到上述技术效果,本发明的技术方案如下:
一种基于中间件的业务流程自动化***,包括:
分布式微服务框架,用于通过自身的负载均衡能力向业务微服务BS、业务流程中间件PS、微服务注册中心ZK分别提供业务的调用、信息的注册、微服务的订阅及相应服务信息的通知;
业务微服务BS,作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK进行信息注册;通过分布式微服务框架向微服务注册中心ZK订阅业务流程中间件PS中与微服务业务相对应的业务流程服务;通过分布式微服务框架从微服务注册中心ZK获取与所订阅的业务服务相应的业务流程中间件PS的服务信息通知,并根据所获取的业务流程中间件PS信息从业务流程中间件PS调用与服务业务相匹配的流程模板,以按流程模板完成服务业务;
业务流程中间件PS,作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK进行信息注册;将各种面向消息的业务流程的执行步骤抽象成相应流程模板并将每个流程模板的应用数据存储于数据库DB,并通过分布式微服务框架从微服务注册中心ZK获取业务微服务BS的服务信息通知,且根据业务微服务BS信息调用业务微服务BS的服务业务,以按所调用的服务业务提供相应的流程模板;
数据库DB,用于存储微服务的各项流程模板及每项业务流程应用中的数据流;
微服务注册中心ZK,用于依赖分布式微服务框架的业务微服务BS及业务流程中间件PS的信息注册;根据订阅信息反馈相应的服务信息通知,其中所述服务信息通知中至少包括IP地址、服务端口号和业务调用函数的信息。
优选地,所述业务流程中间件PS包括:
流程配置模块PEM(ProcessEdit Module),用于对业务微服务BS的服务业务分析得到表示服务业务流程数据流转到流出的节点和表示服务业务流程中数据流流向的连线,结合节点和连线之间的逻辑结构配置生成与业务微服务BS的各项业务相匹配的流程模板;
流程触发模块PTM(Process Trigger Module),接收业务微服务BS调用的入口,用于将业务微服务BS的调用参数透传至流程控制模块,其中业务微服务BS的调用参数包括表示业务微服务BS的业务信息和与业务信息相匹配的流程状态信息初始值;
流程状态信息初始值包括流程模板编号的初始值、流程模板应用中的数据流编号的初始值,流程模板的应用数据流转的节点编号的初始值;
流程控制模块PCM,用于接收业务微服务BS的调用参数,并根据调用参数调取流程配置模块PEM或数据库DB中相应的流程模板及其应用中数据流转的流程实例,且根据流程模板中各节点及连线之间的逻辑结构来控制流程模板应用的数据流转;将流程状态信息初始值修改为当前业务流程状态信息;将业务信息及当前业务流程状态信息传送至外接调用模块;将所调用的流程模板及其应用中数据流转的流程实例发送至转化模块;
转化模块,用于将所调用的流程模板及其应用中数据流转的流程实例之间的对象结构转化成对象间的关系型数据,并将之存储于数据库DB;或者是,将数据库DB所存储的流程模板及其应用中数据流转的流程实例之间的对象关系型数据转化成流程模板及其应用中数据流转的流程实例之间的对象结构,并将之发送至流程配置模块PEM;
外接调用模块PRM,配置有业务微服务BS的调用函数,调用函数根据业务信息调用相应的业务微服务BS的业务接口及采用反序列化成对应类的方法接收其调用信息,其中调用信息包括业务微服务BS的服务业务名称、调用参数的函数名和调用参数的调用流程,其中调用参数至少包括流程模板编号、当前节点编号、业务信息和流程的状态信息、节点的被调用函数调用的自定义参数;及用于将业务信息及当前业务流程状态信息按调用信息发送至业务微服务BS。
流程实例:在将业务流程抽象成流程模板后,每次业务流程微服务调用流程模板应用于业务流程的数据流通过流程模板产生一个具体的流程实例,流程实例与流程模板是多对一的关系,一个流程模板可以产生多个流程实例,一个流程实例只会由一个流程模板产生。例如:员工A请假,就会通过请假流程模板产生一个新的请假流程实例。流程信息是指流程模板的信息,是具体的每个流程的执行步骤,包括流程模板编号、流程名称、流程包含的节点编号数组和连线编号数组。流程的状态信息是指流程实例的状态信息,包括流程模板编号,流程实例编号,当前所处于的节点编号,还有业务微服务BS需要业务流程中间件PS缓存的业务信息。服务信息包括业务微服务BS或者业务流程微服务PS的ip地址,端口号,函数名等信息。节点信息包括节点编号,流程模板编号,节点类型,连入连线编号数组,连出连线编号数组,业务微服务BS的服务名和函数名,自定义参数,通知信息,JEXL表达式字符串。连线信息包括连线编号,流程模板编号,流入节点编号,流出节点编号,JEXL表达式字符串。通知消息包括通知类型,比如短信、邮件、手机号码或者邮箱地址、通知内容等。业务信息是指业务微服务BS在使用业务流程中间件微服务PS的时候,需要业务流程中间件PS缓存的与业务有关的信息。
本发明的转化模块,包括存储单元DIM(Data In Module)和获取单元DOM(DataOut Module),存储单元DIM用于用于把流程信息和流程的状态信息存储到数据库DB;获取单元DOM用于从数据库DB读取流程数据存储模块PIM所存储的流程信息和流程的状态信息。
流程触发模块PTM用于业务微服务BS启动新的流程实例或处理完业务之后流程的状态信息改变的时候,业务微服务BS调用业务流程中间件PS的流程触发模块PTM,具体流程参看业务微服务调用业务流程中间件流程。
外接调用模块PRM通过远程调用泛函数调用指定的业务微服务BS的函数。
优选地,还包括通知微服务NS和消息中间件MQ,所述流程控制模块PCM从业务信息中解析出业务通知,并把业务通知***消息中间件MQ,消息中间件MQ利用消息传递机制将同步的业务通知进行异步解耦,通知微服务NS定时从消息中间件MQ取出异步解耦后的业务通知,并将之发布。
优选地,还包括用于业务流程配置的前端配置界面PEW,前端配置界面PEW从流程配置模块PEM调取存储于数据库DB的流程模板及其应用中数据流转的流程实例,对流程模板及其应用中数据流转的流程实例进行修改、删除或新建,且将修改、删除或新建后的流程模板及其应用中数据流转的流程实例发送至流程配置模块。
在本发明实施例中,本发明的前端配置界面PEW(Process Edit Web),这是一个Web***,通过调用流程配置模块PEM,通过前端配置界面PEW所见即所得地新建和编辑流程模板。
优选地,所述数据库DB采用主从复制部署有主数据库DB1和从数据库DB2,当主数据库DB1异常时切换至从数据库DB2。
优选地,所述分布式微服务框架可采用分布式Dubbo框架、分布式Springcloud框架或Sofa应用框架。
优选地,所述流程控制模块PCM执行如下步骤:
(1)将流程状态信息初始值修改为当前业务流程状态信息将流程模板编号初始值修改为所调取的流程模板的对应编号,将流程模板应用中的数据流编号的初始值修改为一一对应的流程实例编号,将流程模板应用中数据流转的节点编号的初始值修改所调用流程模板应用中数据流转的节点编号,形成流程状态信息;
(2)接收业务微服务BS的调用函数,根据调用函数调取流程配置模块PEM中相应的流程模板及其应用中数据流转的流程实例;
(3)获取流程实例中的当前节点信息及当前节点所有的连出连线信息;
(4)判断是否当前节点所有的连出连线均在运行;
(5)若还有连出连线没运行,则判断该连出连线信息是否存有动态条件JEXL;
(6)若没有动态条件JEXL,则从连出连线信息中获取流出节点编号,再根据流出节点编号获取流出节点信息及流出节点所有的连出连线信息;若有动态条件JEXL,则执行连出连线上的动态条件JEXL,如果连出连线上的动态条件JEXL返回为正确,则进入步骤(6),如果连出连线上的动态条件JEXL返回为错误,则进入步骤(3);
(7)判断流出节点类型;
(8)若流出节点为结束节点,则结束整个流程实例;若流出节点为动作节点,则通过外接调用模块PRM调用动作节点上配置的业务微服务BS的业务调用函数;若流出节点为人工节点,则调用通知微服务NS;若流出节点为聚合节点,则执行聚合节点连线的动态条件JEXL,若执行结果返回正确,表示满足聚合条件,则视流出节点为当前节点,进入步骤(3)。
本发明还公开了一种基于中间件的业务流程自动化方法,包括如下步骤:
S10业务微服务BS作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务微服务BS信息,业务流程中间件PS作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务注程中间件PS信息;
S20业务微服务BS向微服务注册中心ZK订阅业务流程中间件PS的业务流程服务,微服务注册中心ZK向业务微服务BS通知业务流程中间件PS信息;
S30业务微服务BS根据业务流程中间件PS信息触发业务流程中间件PS,并从中调用与业务服务相匹配的流程模板,以按所调用的流程模板完成服务业务。
本发明还公开了一种基于中间件的业务流程自动化方法,包括如下步骤:
S10业务微服务BS作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务微服务BS信息,业务流程中间件PS作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务注程中间件PS信息;
S20业务流程中间件PS从微服务注册中心ZK订阅业务微服务BS的业务服务,微服务注册中心ZK向业务流程中间件PS通知业务微服务BS信息;
S30业务流程中间件PS根据业务微服务BS信息调用业务微服务BS的服务业务,以按所调用的服务业务提供相应的流程模板。
与现有技术相比,本发明技术方案的有益效果是:本发明基于中间件的业务流程自动化***依赖分布式微服务框架提供的高性能的基于代理的远程调用能力,业务流程中间件PS的构建基于分布式微服务框架,使用分布式微服务框架的三大核心能力:面向接口的远程方法调用、智能容错和负载均衡、以及服务自动注册和微服务发现,分布式微服务框架的面向接口的远程调用将业务流程中间件和业务微服务解耦,两者不管代码和处理逻辑还有部署都是独立的、互不影响,利用该框架的负载均衡能力,可以多机部署业务流程中间件PS和业务微服务BS,从而提高业务流程和业务的处理能力。本发明的业务流程中间件PS为业务流程自动化***提供一种独立的、分布式的、可扩展的中间件技术,为无中心化架构及冗余备份机制提供安全可靠、高效的分布式业务流程自动化服务。
附图说明
图1为本发明的基于中间件的业务流程自动化***一实施例的框架结构图。
图2为本发明的基于中间件的业务流程自动化***一实施例的流程图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
如图1-2所示,一种基于中间件的业务流程自动化***,包括:
分布式微服务框架,用于通过自身的负载均衡能力向业务微服务BS、业务流程中间件PS、微服务注册中心ZK分别提供业务的调用、信息的注册、微服务的订阅及相应服务信息的通知;
业务微服务BS,作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK进行信息注册;通过分布式微服务框架向微服务注册中心ZK订阅业务流程中间件PS中与微服务业务相对应的业务流程服务;通过分布式微服务框架从微服务注册中心ZK获取与所订阅的业务服务相应的业务流程中间件PS的服务信息通知,并根据所获取的业务流程中间件PS信息从业务流程中间件PS调用与服务业务相匹配的流程模板,以按流程模板完成服务业务;
业务流程中间件PS,作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK进行信息注册;将各种面向消息的业务流程的执行步骤抽象成相应流程模板并将每个流程模板的应用数据存储于数据库DB,并通过分布式微服务框架从微服务注册中心ZK获取业务微服务BS的服务信息通知,且根据业务微服务BS信息调用业务微服务BS的服务业务,以按所调用的服务业务提供相应的流程模板;
数据库DB,用于存储微服务的各项流程模板及每项业务流程应用中的数据流;
微服务注册中心ZK,用于依赖分布式微服务框架的业务微服务BS及业务流程中间件PS的信息注册;根据订阅信息反馈相应的服务信息通知,其中所述服务信息通知中至少包括IP地址、服务端口号和业务调用函数的信息。
在本发明实施例中,本发明分布式微服务框架,比如Apache Dubbo,提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。业务流程中间件PS的构建基于Dubbo框架,使用了Dubbo提供的三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。利用该框架的“面向接口的远程方法调用”能力可以很好的将业务流程中间件和业务微服务进行解耦,两者不管代码和处理逻辑还有部署都是独立的,互不影响,利用该框架的“负载均衡”能力,可以多机部署业务流程中间件PS和业务微服务BS,从而提高业务流程和业务的处理能力。本发明的业务流程中间件PS为业务流程自动化***提供一种独立的、分布式的、可扩展的中间件技术,为无中心化架构及冗余备份机制提供安全可靠、高效的分布式业务流程自动化服务。
微服务注册中心ZK:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。业务流程中间件PS(Process Service),用于采用中间件技术为***提供安全可靠的、高效的、分布式的业务流程自动化处理。业务微服务BS(Business Service):用于调用业务流程中间件PS中流程以完成微服务业务。流程模板:是指通过对业务流程需求的整理分析,将具体的每个业务流程的执行步骤抽象成的模板,例如:请假流程模板等。
分布式微服务框架的泛化函数调用技术,通过指定服务名函数名和参数来调用服务提供者的函数,例如:调用一个服务提供者的函数,服务名称为serviceName,函数名称为methodName,函数只有一个参数,参数格式为字符串,参数内容是"1001",返回结果是一个Object对象,可以使用org.apache.commons.beanutils.BeanMap转换为Map对象来进行读取操作。
优选地,所述业务流程中间件PS包括:
流程配置模块PEM,用于对业务微服务BS的服务业务分析得到表示服务业务流程数据流转到流出的节点和表示服务业务流程中数据流流向的连线,结合节点和连线之间的逻辑结构配置生成与业务微服务BS的各项业务相匹配的流程模板;
流程触发模块PTM,接收业务微服务BS调用的入口,用于将业务微服务BS的调用参数透传至流程控制模块,其中业务微服务BS的调用参数包括表示业务微服务BS的业务信息和与业务信息相匹配的流程状态信息初始值;
流程状态信息初始值包括流程模板编号的初始值、流程模板应用中的数据流编号的初始值,流程模板的应用数据流转的节点编号的初始值;
流程控制模块PCM,用于接收业务微服务BS的调用参数,并根据调用参数调取流程配置模块PEM或数据库DB中相应的流程模板及其应用中数据流转的流程实例,且根据流程模板中各节点及连线之间的逻辑结构来控制流程模板应用的数据流转;将流程状态信息初始值修改为当前业务流程状态信息;将业务信息及当前业务流程状态信息传送至外接调用模块;将所调用的流程模板及其应用中数据流转的流程实例发送至转化模块;
转化模块,用于将所调用的流程模板及其应用中数据流转的流程实例之间的对象结构转化成对象间的关系型数据,并将之存储于数据库DB;或者是,将数据库DB所存储的流程模板及其应用中数据流转的流程实例之间的对象关系型数据转化成流程模板及其应用中数据流转的流程实例之间的对象结构,并将之发送至流程配置模块PEM;
外接调用模块PRM,配置有业务微服务BS的调用函数,调用函数根据业务信息调用相应的业务微服务BS的业务接口及采用反序列化成对应类的方法接收其调用信息,其中调用信息包括业务微服务BS的服务业务名称、调用参数的函数名和调用参数的调用流程,其中调用参数至少包括流程模板编号、当前节点编号、业务信息和流程的状态信息、节点的被调用函数调用的自定义参数;及用于将业务信息及当前业务流程状态信息按调用信息发送至业务微服务BS。
在本发明实施例中,本发明的流程节点包括开始节点、结束节点、动作节点、人工处理节点、聚合节点,流程节点之间的有向线段为连线,一根连线的两个端点上有且只有一个节点,起点上的是流入节点,终点上的是流出节点,连出:从节点A连到下一个节点B的动作,相对于节点A为连出,相对于节点B为连入。一条连出连线表示一个流程分支,当节点有多条连出连线时,表示有多个流程分支,流程可以并行流转。一个节点可以有零条或者多条连出连线,结束节点没有连出连线;一个节点可以有零条或者多条连入连线,开始节点没有连入连线,聚合节点有多条连入连线。连线上可以设置JEXL表达式字符串也可以不设置JEXL表达式字符串,没有设置JEXL表达式字符串表示流程直接流转到流出节点;有设置JEXL表达式字符串的话,JEXL表达式字符串在被JEXL执行后,如果返回结果为true就表示满足条件,流程可以流转到流出节点,否则表示不满足条件,流程不流转到流出节点。
本发明的动态表达式JEXL:Java Expression Language是一个表达式语言引擎,在java中直接执行JEXL表达,通过JEXL表达的定义,可以让流程的判断条件变得更灵活,表达式里可以有零个或者多个变量,可以通过JexlContext的set函数给变量赋具体值,例如:‘ret==0’,其中ret是一个变量,通过ctxt.set("ret",0)设置,表示ret变量的值等于0,这个表达式的含义是:ret的值等于0的话返回true,否则返回false。
动作节点需要配置业务微服务BS的服务名称、函数名和自定义参数,动作节点就是用来在流程流转到该节点的时候,需要执行一个该节点里配置的业务微服务BS的函数,动作节点有一条连入连线,一条或者多条连出连线。
人工处理节点是表示需要人工参与处理的节点,就是当流程流转到该节点的时候,业务流程中间件PS会根据节点上配置的手机号码或者邮件地址,还有通知内容等信息,通过短信或者邮件等方式通知相关人员,相关人员在收到通知后在业务微服务BS进行相应业务操作,业务微服务BS在操作完成后通过流程触发模块(PTM)触发流程,从该节点开始继续往下流转。人工处理节点有一条连入连线,一条或者多条连出连线。
聚合节点是有多条连入连线的节点,聚合节点里配置了JXEL条件表达式,JEXL执行表达式后返回true表示满足聚合条件,可以继续后边的流程。聚合节点有多条连入连线,一条连出连线。
优选地,还包括通知微服务NS和消息中间件MQ,所述流程控制模块PCM从业务信息中解析出业务通知,并把业务通知***消息中间件MQ,消息中间件MQ利用消息传递机制将同步的业务通知进行异步解耦,通知微服务NS定时从消息中间件MQ取出异步解耦后的业务通知,并将之发布。
在本发明实施例中,通知微服务NS(Notify Service),用于发送短信、邮件等通知。
优选地,还包括用于业务流程配置的前端配置界面PEW,前端配置界面PEW从流程配置模块PEM调取存储于数据库DB的流程模板及其应用中数据流转的流程实例,对流程模板及其应用中数据流转的流程实例进行修改、删除或新建,且将修改、删除或新建后的流程模板及其应用中数据流转的流程实例发送至流程配置模块。
优选地,所述数据库DB采用主从复制部署有主数据库DB1和从数据库DB2,当主数据库DB1异常时切换至从数据库DB2。
优选地,所述分布式微服务框架可采用分布式Dubbo框架、分布式Springcloud框架或Sofa应用框架。
优选地,所述流程控制模块PCM执行如下步骤:
(1)将流程状态信息初始值修改为当前业务流程状态信息将流程模板编号初始值修改为所调取的流程模板的对应编号,将流程模板应用中的数据流编号的初始值修改为一一对应的流程实例编号,将流程模板应用中数据流转的节点编号的初始值修改所调用流程模板应用中数据流转的节点编号,形成流程状态信息;
(2)接收业务微服务BS的调用函数,根据调用函数调取流程配置模块PEM中相应的流程模板及其应用中数据流转的流程实例;
(3)获取流程实例中的当前节点信息及当前节点所有的连出连线信息;
(4)判断是否当前节点所有的连出连线均在运行;
(5)若还有连出连线没运行,则判断该连出连线信息是否存有动态条件JEXL;
(6)若没有动态条件JEXL,则从连出连线信息中获取流出节点编号,再根据流出节点编号获取流出节点信息及流出节点所有的连出连线信息;若有动态条件JEXL,则执行连出连线上的动态条件JEXL,如果连出连线上的动态条件JEXL返回为正确,则进入步骤(6),如果连出连线上的动态条件JEXL返回为错误,则进入步骤(3);
(7)判断流出节点类型;
(8)若流出节点为结束节点,则结束整个流程实例;若流出节点为动作节点,则通过外接调用模块PRM调用动作节点上配置的业务微服务BS的业务调用函数;若流出节点为人工节点,则调用通知微服务NS;若流出节点为聚合节点,则执行聚合节点连线的动态条件JEXL,若执行结果返回正确,表示满足聚合条件,则视流出节点为当前节点,进入步骤(3)。
在本发明实施例中,本发明的流程控制模块PCM通过转化模块中的获取单元DOM从数据库DB获取节点信息,流程控制模块执行所获取的节点的每一条连出连线上的JEXL条件,如果返回true就执行该连线的连出节点,直到所有连线执行完。
业务流程中间件PS通过外接调用模块PRM调用动作节点上配置的业务微服务BS的业务调用函数,函数参数至少包括:流程模板编号、当前节点编号、业务信息和流程的状态信息,节点上配置的自定义参数,为调用函数参数。业务微服务BS的业务调用函数执行完后,返回执行结果,执行结果至少包括执行结果ret,ret为0,表示执行成功,否则表示执行失败,执行结果还可以包括业务微服务BS需要业务流程中间件PS的缓存的业务信息。
如图1所示:本发明还公开了一种基于中间件的业务流程自动化方法,本发明的***用于实现本方法,本方法包括如下步骤:
S10业务微服务BS作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务微服务BS信息,业务流程中间件PS作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务注程中间件PS信息;
S20业务微服务BS向微服务注册中心ZK订阅业务流程中间件PS的业务流程服务,微服务注册中心ZK向业务微服务BS通知业务流程中间件PS信息;
S30业务微服务BS根据业务流程中间件PS信息触发业务流程中间件PS,并从中调用与业务服务相匹配的流程模板,以按所调用的流程模板完成服务业务。
如图1所示:本发明还公开了一种基于中间件的业务流程自动化方法,本发明的***用于实现本方法,本方法包括如下步骤:
S10业务微服务BS作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务微服务BS信息,业务流程中间件PS作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务注程中间件PS信息;
S20业务流程中间件PS从微服务注册中心ZK订阅业务微服务BS的业务服务,微服务注册中心ZK向业务流程中间件PS通知业务微服务BS信息;
S30业务流程中间件PS根据业务微服务BS信息调用业务微服务BS的服务业务,以按所调用的服务业务提供相应的流程模板。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (9)
1.一种基于中间件的业务流程自动化***,其特征在于,包括:
分布式微服务框架,用于通过自身的负载均衡能力向业务微服务BS、业务流程中间件PS、微服务注册中心ZK分别提供业务的调用、信息的注册、微服务的订阅及相应服务信息的通知;
业务微服务BS,作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK进行信息注册;通过分布式微服务框架向微服务注册中心ZK订阅业务流程中间件PS中与微服务业务相对应的业务流程服务;通过分布式微服务框架从微服务注册中心ZK获取与所订阅的业务服务相应的业务流程中间件PS的服务信息通知,并根据所获取的业务流程中间件PS信息从业务流程中间件PS调用与服务业务相匹配的流程模板,以按流程模板完成服务业务;
业务流程中间件PS,作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK进行信息注册;将各种面向消息的业务流程的执行步骤抽象成相应流程模板并将每个流程模板的应用数据存储于数据库DB,并通过分布式微服务框架从微服务注册中心ZK获取业务微服务BS的服务信息通知,且根据业务微服务BS信息调用业务微服务BS的服务业务,以按所调用的服务业务提供相应的流程模板;
所述业务流程中间件PS包括:
流程配置模块PEM,用于对业务微服务BS的服务业务分析得到表示服务业务流程数据流转到流出的节点和表示服务业务流程中数据流流向的连线,结合节点和连线之间的逻辑结构配置生成与业务微服务BS的各项业务相匹配的流程模板;
流程触发模块PTM,接收业务微服务BS调用的入口,用于将业务微服务BS的调用参数透传至流程控制模块,其中业务微服务BS的调用参数包括表示业务微服务BS的业务信息和与业务信息相匹配的流程状态信息初始值;
流程状态信息初始值包括流程模板编号的初始值、流程模板应用中的数据流编号的初始值,流程模板的应用数据流转的节点编号的初始值;
流程控制模块PCM,用于接收业务微服务BS的调用参数,并根据调用参数调取流程配置模块PEM或数据库DB中相应的流程模板及其应用中数据流转的流程实例,且根据流程模板中各节点及连线之间的逻辑结构来控制流程模板应用的数据流转;将流程状态信息初始值修改为当前业务流程状态信息;将业务信息及当前业务流程状态信息传送至外接调用模块;将所调用的流程模板及其应用中数据流转的流程实例发送至转化模块;
转化模块,用于将所调用的流程模板及其应用中数据流转的流程实例之间的对象结构转化成对象间的关系型数据,并将之存储于数据库DB;或者是,将数据库DB所存储的流程模板及其应用中数据流转的流程实例之间的对象关系型数据转化成流程模板及其应用中数据流转的流程实例之间的对象结构,并将之发送至流程配置模块PEM;
外接调用模块PRM,配置有业务微服务BS的调用函数,调用函数根据业务信息调用相应的业务微服务BS的业务接口及采用反序列化成对应类的方法接收其调用信息,其中调用信息包括业务微服务BS的服务业务名称、调用参数的函数名和调用参数的调用流程,其中调用参数至少包括流程模板编号、当前节点编号、业务信息和流程的状态信息、节点的被调用函数调用的自定义参数;及用于将业务信息及当前业务流程状态信息按调用信息发送至业务微服务BS;
数据库DB,用于存储微服务的各项流程模板及每项业务流程应用中的数据流;
微服务注册中心ZK,用于依赖分布式微服务框架的业务微服务BS及业务流程中间件PS的信息注册;根据订阅信息反馈相应的服务信息通知,其中所述服务信息通知中至少包括IP地址、服务端口号和业务调用函数的信息。
2.如权利要求1所述的基于中间件的业务流程自动化***,其特征在于,还包括通知微服务NS和消息中间件MQ,所述流程控制模块PCM从业务信息中解析出业务通知,并把业务通知***消息中间件MQ,消息中间件MQ利用消息传递机制将同步的业务通知进行异步解耦,通知微服务NS定时从消息中间件MQ取出异步解耦后的业务通知,并将之发布。
3.如权利要求1所述的基于中间件的业务流程自动化***,其特征在于,还包括用于业务流程配置的前端配置界面PEW,前端配置界面PEW从流程配置模块PEM调取存储于数据库DB的流程模板及其应用中数据流转的流程实例,对流程模板及其应用中数据流转的流程实例进行修改、删除或新建,且将修改、删除或新建后的流程模板及其应用中数据流转的流程实例发送至流程配置模块。
4.如权利要求1所述的基于中间件的业务流程自动化***,其特征在于,所述数据库DB采用主从复制部署有主数据库DB1和从数据库DB2,当主数据库DB1异常时切换至从数据库DB2。
5.如权利要求1所述的基于中间件的业务流程自动化***,其特征在于,所述分布式微服务框架可采用分布式Dubbo框架、分布式Springcloud框架或Sofa应用框架。
6.如权利要求1所述的基于中间件的业务流程自动化***,其特征在于,所述分布式微服务框架封装有非阻塞的网络通信框架Netty,通过网络通信框架Netty的epoll选择器为***提供连接及输入输出。
7.如权利要求1-6任一项所述的基于中间件的业务流程自动化***,其特征在于,所述流程控制模块PCM执行如下步骤:
(1)将流程状态信息初始值修改为当前业务流程状态信息将流程模板编号初始值修改为所调取的流程模板的对应编号,将流程模板应用中的数据流编号的初始值修改为一一对应的流程实例编号,将流程模板应用中数据流转的节点编号的初始值修改所调用流程模板应用中数据流转的节点编号,形成流程状态信息;
(2)接收业务微服务BS的调用函数,根据调用函数调取流程配置模块PEM中相应的流程模板及其应用中数据流转的流程实例;
(3)获取流程实例中的当前节点信息及当前节点所有的连出连线信息;
(4)判断是否当前节点所有的连出连线均已运行;
(5)若还有连出连线没运行,则判断该连出连线信息是否存有动态条件JEXL;
(6)若没有动态条件JEXL,则从连出连线信息中获取流出节点编号,再根据流出节点编号获取流出节点信息及流出节点所有的连出连线信息;若有动态条件JEXL,则执行连出连线上的动态条件JEXL,如果连出连线上的动态条件JEXL返回为正确,则进入步骤(6),如果连出连线上的动态条件JEXL返回为错误,则进入步骤(3);
(7)判断流出节点类型;
(8)若流出节点为结束节点,则结束整个流程实例;若流出节点为动作节点,则通过外接调用模块PRM调用动作节点上配置的业务微服务BS的业务调用函数;若流出节点为人工节点,则调用通知微服务NS;若流出节点为聚合节点,则执行聚合节点连线的动态条件JEXL,若执行结果返回正确,表示满足聚合条件,则视流出节点为当前节点,进入步骤(3)。
8.一种基于中间件的业务流程自动化方法,其特征在于,所述方法基于权利要求1所述的基于中间件的业务流程自动化***实现,包括如下步骤:
S10业务微服务BS作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务微服务BS信息,业务流程中间件PS作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务注程中间件PS信息;
S20业务微服务BS向微服务注册中心ZK订阅业务流程中间件PS的业务流程服务,微服务注册中心ZK向业务微服务BS通知业务流程中间件PS信息;
S30业务微服务BS根据业务流程中间件PS信息触发业务流程中间件PS,并从中调用与业务服务相匹配的流程模板,以按所调用的流程模板完成服务业务。
9.一种基于中间件的业务流程自动化方法,其特征在于,所述方法基于权利要求1所述的基于中间件的业务流程自动化***实现,包括如下步骤:
S10业务微服务BS作为业务调用的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务微服务BS信息,业务流程中间件PS作为业务流程的提供者依赖分布式微服务框架向微服务注册中心ZK注册业务注程中间件PS信息;
S20业务流程中间件PS从微服务注册中心ZK订阅业务微服务BS的业务服务,微服务注册中心ZK向业务流程中间件PS通知业务微服务BS信息;
S30业务流程中间件PS根据业务微服务BS信息调用业务微服务BS的服务业务,以按所调用的服务业务提供相应的流程模板。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910960347.3A CN110955534B (zh) | 2019-10-10 | 2019-10-10 | 一种基于中间件的业务流程自动化***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910960347.3A CN110955534B (zh) | 2019-10-10 | 2019-10-10 | 一种基于中间件的业务流程自动化***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110955534A CN110955534A (zh) | 2020-04-03 |
CN110955534B true CN110955534B (zh) | 2023-04-11 |
Family
ID=69976361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910960347.3A Active CN110955534B (zh) | 2019-10-10 | 2019-10-10 | 一种基于中间件的业务流程自动化***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110955534B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666090B (zh) * | 2020-06-10 | 2022-09-20 | 贵州电子商务云运营有限责任公司 | 一种应用***扩展组件在线更新支撑*** |
CN111858001B (zh) * | 2020-07-15 | 2021-02-26 | 武汉众邦银行股份有限公司 | 一种基于服务于微服务架构***的工作流处理方法 |
CN111949326A (zh) * | 2020-08-03 | 2020-11-17 | 杭州当虹科技股份有限公司 | 一种基于Activiti的微服务工作流方法 |
CN112085201B (zh) * | 2020-09-22 | 2021-05-18 | 广州医药信息科技有限公司 | 一种基于微服务应用的逻辑推演方法 |
CN112291235B (zh) * | 2020-10-28 | 2022-06-07 | 泰华智慧产业集团股份有限公司 | 适配微服务架构的物联网设备协议编解码的方法及装置 |
CN112286521A (zh) * | 2020-10-30 | 2021-01-29 | 上海中通吉网络技术有限公司 | 一种任务流程处理方法、存储介质及处理器 |
CN112488562B (zh) * | 2020-12-11 | 2024-06-07 | 北京金山云网络技术有限公司 | 一种业务实现方法及装置 |
CN113762702A (zh) * | 2021-04-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 工作流部署方法、装置、计算机***和可读存储介质 |
CN113326026B (zh) * | 2021-05-11 | 2023-09-08 | 福建天泉教育科技有限公司 | 一种微服务业务流程接口的生成方法与终端 |
CN114548897A (zh) * | 2022-01-10 | 2022-05-27 | 北京思特奇信息技术股份有限公司 | 一种微服务组合订单引擎***及其微服务调用方法 |
CN114780261B (zh) * | 2022-04-28 | 2022-11-29 | 四川虹魔方网络科技有限公司 | 智能设备运营管理中基础数据微服务化共享***及方法 |
CN117573396B (zh) * | 2024-01-15 | 2024-03-29 | 浙江锦智人工智能科技有限公司 | 一种分布式工作流事件处理方法、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751255A (zh) * | 2009-12-30 | 2010-06-23 | 山东中创软件工程股份有限公司 | 遵循xpdl规范工作流中间件实现服务编制的方法、装置 |
CN104572062A (zh) * | 2014-04-15 | 2015-04-29 | 武汉中地数码科技有限公司 | 地理空间信息工作流服务功能流程模板的构建方法 |
CN107102847A (zh) * | 2016-02-23 | 2017-08-29 | 中国水电工程顾问集团有限公司 | 基于微服务的软件开发方法、装置及*** |
CN107911430A (zh) * | 2017-11-06 | 2018-04-13 | 上海电机学院 | 一种微服务基础设施装置 |
-
2019
- 2019-10-10 CN CN201910960347.3A patent/CN110955534B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751255A (zh) * | 2009-12-30 | 2010-06-23 | 山东中创软件工程股份有限公司 | 遵循xpdl规范工作流中间件实现服务编制的方法、装置 |
CN104572062A (zh) * | 2014-04-15 | 2015-04-29 | 武汉中地数码科技有限公司 | 地理空间信息工作流服务功能流程模板的构建方法 |
CN107102847A (zh) * | 2016-02-23 | 2017-08-29 | 中国水电工程顾问集团有限公司 | 基于微服务的软件开发方法、装置及*** |
CN107911430A (zh) * | 2017-11-06 | 2018-04-13 | 上海电机学院 | 一种微服务基础设施装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110955534A (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110955534B (zh) | 一种基于中间件的业务流程自动化***及方法 | |
US6317428B1 (en) | Method of providing a service to users of a telecommunication network, service control facility, and processing node | |
CN107273228B (zh) | 基于星型拓扑架构的消息传输方法 | |
CN108881369B (zh) | 一种基于面向数据内容的云消息中间件的数据交换方法和云消息中间件*** | |
CN113268319A (zh) | 基于微服务架构的业务流程定制与分布式流程调度方法 | |
CN105577446B (zh) | 一种轻量级嵌入式网络管理***和方法 | |
CN110297620A (zh) | 一种基于Drools的动态规则维护和生成的方法 | |
CN110784360A (zh) | 一种实现Kong声明式配置热更新的方法及*** | |
CN109412877B (zh) | 一种基于utn网络的网络能力开放*** | |
CN109639484B (zh) | 基于软件定义的工业融合网络管理方法及其网络管理器 | |
CN101741904A (zh) | 一种分布式空间计算服务节点的构建方法及网关装置 | |
CN113821363B (zh) | 一种进程间通讯方法及*** | |
CN110096545A (zh) | 一种基于大数据平台数据处理域构架方法 | |
CN109656688A (zh) | 一种实现分布式业务规则的方法、***和服务器 | |
CN103957188A (zh) | 一种对称的双向解耦的企业服务描述方法及服务调度*** | |
CN109218086B (zh) | 一种交换网构建方法与*** | |
CN112527523A (zh) | 面向高性能计算多云的分布式消息传递方法及*** | |
CN106027534A (zh) | 一种基于Netty实现金融报文处理*** | |
CN115086176B (zh) | 基于SpringCloud微服务技术实现服务治理策略动态下发的*** | |
CN116489214A (zh) | 一种基于微服务网关的统一服务调度方法、装置、介质及设备 | |
CN111813503A (zh) | 一种基于容器云的微服务化应用开放*** | |
CN111309691A (zh) | 基于总线架构的数据共享交换***和交换方法 | |
CN101771724A (zh) | 异构分布式信息集成方法、装置及*** | |
CN114173355A (zh) | 一种设计运行态分离的网络指令动态执行方法及*** | |
CN113726828B (zh) | 一种支持微服务的高并发的可信区块链***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |