CN115665219A - 一种工作流引擎在分布式场景下的应用方法及系统 - Google Patents
一种工作流引擎在分布式场景下的应用方法及系统 Download PDFInfo
- Publication number
- CN115665219A CN115665219A CN202211271830.9A CN202211271830A CN115665219A CN 115665219 A CN115665219 A CN 115665219A CN 202211271830 A CN202211271830 A CN 202211271830A CN 115665219 A CN115665219 A CN 115665219A
- Authority
- CN
- China
- Prior art keywords
- service
- client
- workflow
- server
- distributed
- 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.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种工作流引擎在分布式场景下的应用方法及系统,工作流服务为服务端,第三方服务为客户端,包括:研发分布式调度框架,包括中心化的服务端和分布式的客户端;工作流服务配置自动扩展工作流服务和第三方服务的交互规则,工作流服务开发通用监听器读取配置规则,集成服务端实现工作流服务向第三方服务发送交互请求;第三方服务通过集成客户端实现与工作流服务的交互。本发明通过分布式调度框架将工作流服务与第三方服务或异构系统的交互通过配置和标准接口的方式实现,剥离工作流服务中与业务服务或异构系统交互代码,从而实现解耦和关注点分离,使工作流服务更加独立,提升服务稳定性;通过配置和依赖倒置降低开发难度,提升开发效率。
Description
技术领域
本发明涉及工作流引擎应用领域和分布式领域,尤其涉及基于调度框架实现工作流引擎在分布式场景下的应用方法及系统。
背景技术
基于开源工作流引擎封装实现工作流服务已经成为当下构建工作流场景的主流解决方案,然而目前主流工作流引擎并非基于分布式架构进行设计实现。所以,当在分布式场景下应用时,现在的工作流服务只能通过在监听器中使用服务调用的开发方式与第三方服务(业务服务或者异构系统)进行集成。
以Flowable或者Activiti为例,在分布式环境下,当需要工作流服务与第三方服务交互时,开发步骤如下:
第一步:业务服务开放服务调用接口(比如FeignClient);
第二步:在工作流服务中开发监听器,通过监听器进行服务调用;
第三步:在工作流模型配置时,在节点或者线上配置监听器。
所以当有新的工作流服务与第三方服务交互时,每次都需要重复以上三步;当工作流或者服务接口任何一方变更时,另一方可能都会受到影响需要同步变更,这样的开发方式无法节省任何开发量,很难形成复用能力,也很难保证开发规范和开发质量。
中国发明专利名称:工作流业务的控制控制方法、控制系统和终端,专利号:CN106648573A,本发明提供了一种工作流业务的控制方法、控制系统和终端,其中,所述工作流业务的控制方法包括:检测是否获取所述应用系统发送的任务触发事件;在检测到获取所述任务触发事件时,根据所述任务触发事件创建任务信息;将所述任务信息通过所述网页服务接口发送至所述应用系统,以供所述应用系统根据所述任务信息对相应的业务数据进行处理。通过本发明的技术方案,实现了工作流业务与应用系统的业务数据的去耦合,同时实现了对工作流引擎的任务信息的智能创建和驱动,以及将工作流引擎便捷地应用于多个应用系统。该专利主要通过前端页面的方式实现工作流应用与业务处理的解耦。它通过通用的页面展现业务系统通过工作流控制系统发送的任务事件,然后在事件中携带供工作流路由的信息,然后跳转到对应业务处理界面完成处理,它主要解决的是单体环境下的工作流和业务耦合问题,当处于分布式环境下时,依然无法解决工作流服务与业务应用服务高度耦合的问题。
发明内容
针对现有技术中存在的问题,本发明通过分布式调度框架将工作流中进行服务调用或异构系统集成的依赖通过配置和标准接口的方式进行替换,剥离工作流服务中与业务服务或异构系统交互的代码,使工作流服务更加独立,从而提升服务稳定性;通过配置和接口来降低了开发难度和提升开发效率,从而实现降本增效。
本发明采用的技术方案为:
基于调度框架实现工作流引擎在分布式场景下的应用方法,工作流服务即为服务端,第三方服务即为客户端,所述方法包括:
研发分布式调度框架Tiger,包括一个中心化的服务端和分布式的客户端,服务端持有服务端注册器、分发器和服务端执行器,负责维护客户端注册信息、根据注册信息路由、完成客户端调用等;客户端持有客户端注册器、客户端执行器和处理器,负责向服务端注册、移除注册、心跳监测、接收服务端请求,执行器执行,返回信息等;
通过配置自动扩展工作流服务与第三方服务的交互,包括配置工作流服务和第三方服务的交互规则,工作流服务开发通用监听器集成并TigerServer实现工作流服务和第三方服务的交互;
第三方服务通过集成TigerClient并实现客户端处理器完成与工作流服务的交互。
一种工作流引擎在分布式场景下的应用系统,包括:
服务端,持有服务端注册器、分发器和服务端执行器,负责维护客户端注册信息、根据注册信息路由、完成客户端调用;
客户端,持有客户端注册器、客户端执行器和处理器,负责向服务端注册、移除注册、心跳监测、接收服务端请求,执行器执行,返回信息;
研发模块,用于研发分布式调度框架;
配置模块,用于配置自动扩展工作流服务与第三方服务的交互;
数据库,用于存储信息。
本发明的有益效果为:
本发明通过自研分布式调度框架,将工作流服务视为服务端,第三方服务视为客户端,解耦工作流服务集成业务服务或异构系统时的代码耦合,通过框架解决分布式场景下客户端服务地址动态变化、路由规则、标准化远程过程调用的问题,通过配置进行服务间交互替换传统服务调用(例如Feign或者Dubbo)的方式,基于以上前提,工作流服务即可通过防腐层使其不再直接依赖第三方服务,从而大幅提高工作流服务的稳定性,通过框架提供的标准接口使得工作流服务和第三方服务可以独立进行开发和迭代,屏蔽服务内的实现细节,从而大幅降低工作流上手应用难度和开发难度,有效提升开发效率和降低问题排查难度,实现降本增效的目的。
附图说明
图1所示,为本发明基于调度框架实现工作流引擎在分布式场景下的应用方法流程图。
具体实施方式
下面结合附图与实施例对本发明做进一步说明:为能清楚说明本发明的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
以基于Flowable或者Activiti(Flowable和Activiti都是目前最流程的开源工作流引擎)构建工作流服务为例,当运行环境为单体架构时,工作流和业务代码是系统内调用,不存在任何问题,而当处于分布式环境下时,比如基于容器技术的微服务架构下,工作流服务和业务服务是独立的应用,二者之间需要交互时(二者确实存在大量交互,而且持续增加),工作流引擎提供的解决方案为通过流程监听器(Listener)进行服务调用,而监听器必须部署于工作流服务中,因为业务服务是复杂多变的,工作流服务应该是相对稳定的,所以这种高耦合的解决方案带来了一系列问题。
其中关于本发明中分布式调度框架Tiger的详细描述如下:Tiger实现方案是结合分布式场景下的应用交互特征通过抽象将服务双方分为服务端TigerServer和客户端TigerClient,二者的底层都是通过独立的进程(NettyServer)运行和交互,与主程序解耦,但是程序运行时又可以实现资源的共享,同时因为Tiger可作为独立的二方库被集成,与应用框架关联性极低,因此可以普适多个应用场景。
二者共享同一个核心(TigerCore),核心负责提供配置信息,异常定义,参数定义,模型定义,工具类等公共类。
服务端TigerServer主要有服务端注册器,分发器,服务端执行器等几个核心组件组成,服务端注册器提供注册接口供客户端进行注册和维持心跳,并把注册信息保存到数据库中;分发器一方面承担参数校验和路由的职责,另一方面作为入口提供应用Tiger的能力;服务端执行器负责根据执行策略和重试策略调用客户端执行器。
客户端主要有客户端注册器、处理器、客户端执行器等几个核心组件,客户端注册器负责启动、移除注册和调用服务端心跳接口维持心跳;处理器通过注解的方式由应用实现具体业务逻辑并在应用启动的时候自动扫描维护在内存中,客户端执行器负责接收服务端执行器的执行请求,然后根据参数调用对应的处理器执行逻辑处理后返回。
客户端执行器负责接收服务端执行器请求并调用客户端处理器,客户端处理器完成客户端具体实现的执行并返回。
如图1所示,为本发明基于调度框架实现工作流引擎在分布式场景下的应用方法流程图,本发明通过分布式调度框架,将工作流服务视为服务端,将业务服务视为客户端,通过框架将交互进行分离,工作流服务通过配置进行路由和调用,客户端专注于业务服务本身,从而实现二者解耦,交互时,工作流服务仅需要增加一个配置,客户端内部实现一个执行器即可,详细步骤说明如下:
(一)研发分布式调度框架
在分布式环境下,基于Java语言研发了分布式调度框架Tiger,Tiger由一个中心化的服务端(TigerServer)和若干分布式的客户端(TigerClient)组成,服务端持有服务端注册器、分发器和服务端执行器,服务端注册器负责维护客户端注册信息,分发器负责查询客户端注册信息并根据配置的路由规则调用服务端服务端执行器,服务端执行器负责调用客户端执行器完成调用;客户端持有客户端注册器、客户端执行器和处理器,客户端注册器负责启动、移除注册和调用服务端心跳接口维持心跳;处理器通过注解的方式由应用实现具体业务逻辑并在应用启动的时候自动扫描维护在内存中,客户端执行器负责接收服务端执行器的执行请求,然后根据参数调用对应的处理器执行逻辑处理后返回。
通过分布式调度框架Tiger,具备了解耦工作流服务和第三方服务的条件,其中设定工作流服务为TigerServer,第三方服务为TigerClient,一方面屏蔽了客户端差异;不论客户端为微服务还是异构系统,在此框架下都是TigerClient,同时也具备了便于管理的优点,另一方面具备了统一工作流服务中的监听器的条件,通过配置即可轻松实现扩展;同时,服务调用逻辑被分布式调度框架实现,因此,工作流服务不再依赖第三方服务接口,第三方服务变更也不会影响工作流服务,通过以上两个方面,可大幅提升了工作流服务的稳定性,降低服务间耦合度,也明显降低了开发难度,进而提升开发效率。
(二)工作流服务通过配置实现自动扩展
分布式调度框架使工作流服务和第三方服务可以在分布式场景下进行非常方便的交互,但是并没有解决工作流服务和第三方服务新增交互时自动扩展的问题,本发明分两步解决了这个问题:
第一步:通过配置实现工作流服务和第三方服务的交互规则
以Flowable或Activiti为例,配置应该包含以下信息:流程定义Key,监听器类型,监听器Key(任务定义Key或者活动Id),执行时机,执行器标识,执行顺序。
通过以上配置实现以下几点特性:1、兼容多版本流程(通过流程定义Key而不是流程定义Id);2、兼容多种监听器类型;3、一个监听器支持多执行器配置。
第二步:开发通用监听器集成TigerServer实现工作流服务和第三方服务交互。
通过开发通用监听器或者修改源码的方式,控制工作流流转时触发监听器,监听器先读取第一步的配置信息,然后根据配置信息调用分布式调度框架Tiger的分发器,实现工作流服务和其他服务的交互,支持同步异步调用,支持不同路由规则,支持重试,支持链路追踪。
通过这种实现方式,在配置工作流的时候如果需要服务间交互,只需要增加一个配置即可,同时还可以获得调度框架提供的高度可复用的能力,极大地降低了开发难度,提高了开发效率。
(三)第三方服务通过实现处理器与工作流服务交互
在分布式场景下,每个业务服务逻辑应该尽量的内聚,所以通过集成TigerClient,将业务服务逻辑收敛到服务内部,无需暴露接口,彻底屏蔽实现细节,从而使业务服务内可以实现高度的复用,只需要实现工作流流转时对业务的影响即可,业务服务开发人员可以完全不关注工作流,为工作流和业务独立迭代创造条件。
第三方服务首先集成TigerClient,TigerClient提供客户端处理器接口,业务服务通过Bean的方式实现接口完成业务逻辑处理,业务服务启动时,TigerClient会自动扫描客户端处理器并纳入内存管理,最后等待工作流服务调用,运行执行器执行接口方法并返回服务端完成完整的交互过程。通过这种方式业务服务将不需要关注工作流的运行状态,从而实现第三方服务与工作流服务的解耦,降低开发难度,同时可以通过并行开发的方式提高开发效率。
本发明还提供了一种工作流引擎在分布式场景下的应用系统,所述系统适用于工作流引擎在分布式场景下的应用方法,包括:
服务端,持有服务端注册器、分发器和服务端执行器,负责维护客户端注册信息、根据注册信息路由、完成客户端调用;
客户端,持有客户端注册器、客户端执行器和处理器,负责向服务端注册、移除注册、心跳监测、接收服务端请求,执行器执行,返回信息;
研发模块,用于研发分布式调度框架;
配置模块,用于配置自动扩展工作流服务与第三方服务的交互;
数据库,用于存储信息。
通过这种方式,在分布式场景下,通过将工作流服务和第三方服务的交互通过配置和框架进行实现,使得二者的交互变的简单,同时也具备通用性高阶能力,也使得不同服务的研发人员可以专注于自己负责的服务,满足高内聚和低耦合的软件设计思想。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种工作流引擎在分布式场景下的应用方法,在本方法中工作流服务即为服务端,第三方服务即为客户端,其特征在于,所述方法包括:
研发分布式调度框架,包括一个中心化的服务端和分布式的客户端,服务端持有服务端注册器、分发器和服务端执行器,负责维护客户端注册信息、根据注册信息路由、完成客户端调用;客户端持有客户端注册器、客户端执行器和处理器,负责向服务端注册、移除注册、心跳监测、接收服务端请求,执行器执行,返回信息;
通过配置自动扩展工作流服务与第三方服务的交互,包括配置工作流服务和第三方服务的交互规则,工作流服务开发通用监听器集成,服务端实现工作流服务和第三方服务的交互;
第三方服务通过集成客户端实现客户端处理器完成与工作流服务的交互。
2.如权利要求1所述的工作流引擎在分布式场景下的应用方法,其特征在于,服务端注册器负责维护客户端注册信息;分发器负责查询客户端注册信息并根据配置的路由规则调用服务端执行器,服务端执行器调用客户端执行器完成调用。
3.如权利要求1所述的工作流引擎在分布式场景下的应用方法,其特征在于,客户端注册器负责启动、移除注册和调用服务端心跳接口维持心跳;处理器通过注解的方式由应用实现具体业务逻辑并在应用启动的时候自动扫描维护在内存中,客户端执行器负责接收服务端执行器的执行请求,然后根据参数调用对应的处理器执行逻辑处理后返回。
4.如权利要求1所述的工作流引擎在分布式场景下的应用方法,其特征在于,配置工作流服务和第三方服务的交互规则包括:流程定义秘钥,监听器类型,监听器秘钥,执行时机,执行器标识,执行循序,用于兼容多版本流程、多种监听器类型、一个监听器支持多种执行器配置。
5.如权利要求4所述的工作流引擎在分布式场景下的应用方法,其特征在于,监听器秘钥包括:任务定义秘钥、标识类字段。
6.如权利要求1所述的工作流引擎在分布式场景下的应用方法,其特征在于,工作流服务开发通用监听器集成服务端实现工作流服务和第三方服务交互包括:通过开发通用监听器或者修改源码,控制工作流流转时触发通用监听器;通用监听器读取自定义的配置信息,根据配置信息调用分布式调度框架服务端分发器,用于向客户端发送请求实现服务间交互,支持同步异步调用,支持重试和链路追踪。
7.如权利要求1所述的工作流引擎在分布式场景下的应用方法,其特征在于,第三方服务集成客户端,客户端提供客户端处理器接口,业务服务启动时,客户端自动扫描客户端处理器并纳入内存管理,用于等待工作流服务调用,运行执行器执行接口方法并返回服务端完成交互过程。
8.一种工作流引擎在分布式场景下的应用系统,所述系统适用于权利要求1-7任一项所述工作流引擎在分布式场景下的应用方法,其特征在于,包括:
服务端,持有服务端注册器、分发器和服务端执行器,负责维护客户端注册信息、根据注册信息路由、完成客户端调用;
客户端,持有客户端注册器、客户端执行器和处理器,负责向服务端注册、移除注册、心跳监测、接收服务端请求,执行器执行,返回信息;
研发模块,用于研发分布式调度框架;
配置模块,用于配置自动扩展工作流服务与第三方服务的交互;
数据库,用于存储信息。
9.如权利要求8所述的工作流引擎在分布式场景下的应用系统,其特征在于,服务端包括:服务端注册器、分发器和服务端执行器;服务端注册器提供注册接口供客户端进行注册和维持心跳,并把注册信息保存到数据库中;分发器负责查询客户端注册信息并根据配置的路由规则调用服务端执行器;服务端执行器负责根据执行策略和重试策略调用客户端执行器。
10.如权利要求8所述的工作流引擎在分布式场景下的应用系统,其特征在于,客户端包括:客户端注册器、客户端执行器和处理器,客户端注册器负责启动、移除注册和调用服务端心跳接口维持心跳;处理器通过注解的方式由应用实现具体业务逻辑并在应用启动的时候自动扫描维护在内存中,客户端执行器负责接收服务端执行器的执行请求,然后根据参数调用对应的处理器执行逻辑处理后返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211271830.9A CN115665219A (zh) | 2022-10-18 | 2022-10-18 | 一种工作流引擎在分布式场景下的应用方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211271830.9A CN115665219A (zh) | 2022-10-18 | 2022-10-18 | 一种工作流引擎在分布式场景下的应用方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115665219A true CN115665219A (zh) | 2023-01-31 |
Family
ID=84990414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211271830.9A Pending CN115665219A (zh) | 2022-10-18 | 2022-10-18 | 一种工作流引擎在分布式场景下的应用方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115665219A (zh) |
-
2022
- 2022-10-18 CN CN202211271830.9A patent/CN115665219A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110262902B (zh) | 信息处理方法及系统、介质和计算设备 | |
EP2815346B1 (en) | Coordination of processes in cloud computing environments | |
CN112394947B (zh) | 一种基于微服务架构的信息系统 | |
CN112463211A (zh) | 一种兼容多种开发架构的系统架构改造方法及系统架构 | |
CN111147308B (zh) | 基于微服务架构的网络管理方法和系统 | |
CN113821268A (zh) | 一种与OpenStack Neutron融合的Kubernetes网络插件方法 | |
CN114237994A (zh) | 用于分布式系统的测试方法及系统、电子设备及存储介质 | |
CN110581893A (zh) | 数据传输方法、装置、路由设备、服务器及存储介质 | |
CN116708266A (zh) | 一种云服务拓扑图实时更新方法、装置、设备及介质 | |
CN113835786B (zh) | 一种数据对接系统、方法和计算机可读存储介质 | |
CN113360386B (zh) | 交换芯片驱动测试方法、装置、电子设备和存储介质 | |
CN114489585A (zh) | 一种治理功能插件化的微服务开发框架及实现方法 | |
CN114443226A (zh) | 一种基于kubernetes的IDE应用云上部署方法及系统 | |
CN111309474B (zh) | 通信方法、通信装置及分布式服务注册中心 | |
CN113157737A (zh) | 服务实例关联关系动态构建系统 | |
CN116248629B (zh) | 一种sca设备组件的注册优化方法 | |
CN115665219A (zh) | 一种工作流引擎在分布式场景下的应用方法及系统 | |
CN115686662A (zh) | 网状类加载架构、服务调用方法及装置 | |
CN111831394B (zh) | 采用kubernetes部署有状态pod的方法及装置 | |
CN115883283A (zh) | 一种容器化vnf的部署方法及装置 | |
CN111580998A (zh) | SaaS服务模式下多租户的RPC调用方法 | |
US20080027944A1 (en) | Globally unique instance identification | |
CN104298750B (zh) | 用于实时系统通信的更新处理方法及装置 | |
CN111741102A (zh) | 分布式微服务应用的升级方法及装置 | |
CN117033033B (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 |