掌桥专利:专业的专利平台
掌桥专利
首页

一种基于流程引擎的拖拽式服务编排方法及系统

文献发布时间:2023-06-19 16:12:48



技术领域

本发明涉及微服务领域,主要通过拖拽式的方式进行微服务编排,尤其是基于流程引擎控制的一种服务编排方法及系统。

背景技术

目前微服务是一种常用的软件架构风格。在微服务体系结构中,可以将系统分解为多个较小服务,各个服务可以由独立的团队进行开发、部署。当一个系统采用了微服务架构后,会拆分成很多新的微服务,但原有的业务可能还是没有变化,相对于传统架构,微服务架构下更需要通过各微服务之间的协作来实现一个完整的业务流程。目前大部分通过硬编码的方式,根据实际的业务需求来定制化编写代码,调用相应的服务,得到返回结果之后,对数据进行处理,接着再调用另一个服务。如此循环,需要大量的编码来完成实际业务逻辑。

发明内容

为了解决以上的问题,本发明提供了一种基于流程引擎的可视化的拖拽式服务编排系统及方法,实现可以通过一个请求来依次调用多个微服务,并对每个微服务的输入参数和返回结果做数据处理,返回一个可动态配置的结果值。

本发明通过以下技术方案解决以上问题:

一种基于流程引擎的拖拽式服务编排方法,包括配置端和代理端,配置端完成服务编排的管理,代理端完成微服务的路由和代理;该方法包括以下步骤:

步骤一,服务编排注册:在配置端对待进行服务编排的微服务进行注册;

步骤二,服务编排拖拽式流程定制:在配置端选中已注册的微服务,对其进行拖拽式地服务编排流程设计;

步骤三,服务编排代理执行:在服务编排流程设计完成以后,在代理端调用和执行编排的微服务。

进一步地,所述服务编排注册是在配置端,新建待编排的微服务,编辑服务名称、服务编码、服务访问地址、请求类型、参数类型和开启状态等。支持服务编排的新建、修改、删除、列表查看。配置端的服务编排的信息采用zookeeper注册服务的方式,来实时监听服务编排和存储服务的信息。

进一步地,所述服务编排拖拽式流程定制,其中服务编排可视化、拖拽式流程定制在配置端完成,选中已注册的需要服务编排的服务,弹出服务编排的设计面板,设计面板分为左中右,左侧面板为编排的服务目录树和同步器节点(开始、同步、结束),中间面板为拖拽式流程的定制区域,右侧面板为服务的输入和输出配置区域。其中,同步器节点是拖拽式节点,包括开始、同步、结束。开始:流程开始节点。同步:服务之间连接节点。结束:流程结束节点。从服务目录树,任意选一个微服务可拖拽到中间面板,形成一个服务流程节点。

进一步地,所述服务编排拖拽式流程定制,采用服务编排流程设计器实现,其使用的方法:

1)从左侧面板同步器拖拽开始和结束按钮到中间面板,开始和结束按钮必须成对设计,保证服务编排的流程完整。

2)从左侧面板拖拽编排的服务目录树,选择需要编排的服务,拖拽到中间面板。这里服务目录树可以是自己的微服务,可以是已编排好的服务。

3)在中间面板把服务之间用连接线连上,服务之间可以采用串行和并行连接,服务连接的时候必须使用左侧面板中的同步按钮连接。在并行连接的时候,连接线上可以添加条件设置,以路由到不同的服务。在服务流程节点可以配置每个服务的输入参数和输出结果。

4)在条件设置中直接使用APIBody.param、APIResponse.param和java条件表达式配置条件。java条件如==、>、<等。

5)在输入参数和输出结果配置中会使用到$符号表达式、APIBody.param、APIResponse.param和freemarker引擎进行配置。如果不配置参数,默认为上个节点的参数。输入参数和输出结果配置的时候支持标准的QUERY、FORM和BODY(XML、JSON)格式数据配置。

其中,支持HTTP协议的GET和POST请求,QUERY表示GET请求传参方式,FORM表示POST请求中的表单参数,BODY表示POST请求中的BODY参数。

其中,APIBody为服务的输入参数,APIResponse为服务的输出结果,通过该表达式获取A服务的参数和返回值。

配置举例:

a)POST的BODY格式

{"userName":"${addXmlToJsonBody.userName}","sex":"${addXmlToJsonBody.sex}"}

其中,POST表示HTTP协议的POST请求,userName表示自定义参数名称,$表示freemarker引擎参数配置符号,addXmlToJson表示API的名称,addXmlToJsonBody.userName表示API的输入参数,sex表示自定义参数名称,addXmlToJsonBody.sex表示API的输入参数。

b)POST、GET的QUERY格式

uuid=${getNameFlowBody.uuid}&name=${getNameFlowBody.name}

其中,GET表示HTTP协议的GET请求,uuid表示自定义参数名称,getNameFlowBody.表示API的名称,getNameFlowBody.uuid表示API的输入参数,&表示GET请求中的参数连接符号,name表示自定义参数名称,getNameFlowBody.name表示API的输入参数。

c)POST的XML格式

${addJsonToXmlBody.userName}

${addJsonToXmlBody.sex}

其中,POST表示HTTP协议的POST请求,userName、sex表示XML格式的标签,$表示freemarker引擎参数配置符号,addJsonToXml表示API的名称,addJsonToXmlBody.userName、addJsonToXmlBody.sex表示API的输入参数。

d)Freemarker引擎格式

模板一:JSON格式

其中,模板一为JSON数据,user、userName表示JSON数据的KEY属性,[]表示JSON数据的VALUE值,为数组类型,$表示freemarker引擎参数配置符号,list、as、item、if、gt表示freemarker引擎的符号,getUser表示API的名称,getUserResponse表示API的输出结果。

模板二:QUERY格式

其中,模板二为QUERY数据,userName表示GET请求的参数名称,$表示freemarker引擎参数配置符号,list、as、item、if、gt表示freemarker引擎的符号,getUser表示API的名称,getUserResponse表示API的输出结果。

进一步地,所述服务编排代理执行,是在服务编排流程设计完成以后,服务编排的服务就可以被调用,即在代理端调用和执行编排的服务。代理端采用zookeeper监听、流程引擎、freemarker引擎来控制服务的流转和参数、返回值的解析。当服务发起请求的时候,会通过流程引擎流转执行相应的服务流程节点,代理端会把该服务的输入参数以JSONObject(JSON对象,同下)标准格式存入到上下文(上下文即ServletContext,是一个全局的储存信息的空间,服务器启动,其就存在,服务器关闭,其才释放),代理完成后同样会把返回结果以JSONObject标准格式存入到全局变量,每当执行一个服务流程节点的时候都会把相应的输入参数和输出结果以JSONObject格式存入到上下文。直到服务流程节点执行完成,返回最后一个服务流程节点的输出结果。最终服务代理执行完成。

本发明还提供一种采用上述方法的基于流程引擎的拖拽式服务编排系统,其包括配置端和代理端,配置端完成服务编排的管理,代理端完成微服务的路由和代理;在配置端对待进行服务编排的微服务进行注册;在配置端选中已注册的微服务,对其进行拖拽式地服务编排流程设计;在服务编排流程设计完成以后,在代理端调用和执行编排的微服务。

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

1)提供了一种基于流程引擎的可视化的拖拽式服务编排系统及方法,可以通过一个请求来依次调用多个微服务,并对每个服务的输入参数和返回结果做数据处理,返回一个可动态配置的结果值。

2)基于服务编排的配置端和代理端实现,在预先配置的服务编排下,向代理端发送一个服务请求,按序调用相应的服务流程节点执行任务,实现多个微服务之间业务逻辑过程,即可获得最终的服务请求结果,可减小前后端交互的次数并降低了客户端开发的复杂性。

附图说明

图1为基于流程引擎的拖拽式服务编排方法的步骤流程图。

图2为可视化编排的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种基于流程引擎的可视化的拖拽式服务编排方法及系统,该方法基于服务编排的配置端和代理端实现,在预先配置的服务编排下,向代理端发送一个服务请求,按序调用相应的服务流程节点执行任务,实现多个微服务之间业务逻辑过程,即可获得最终的服务请求结果,可减小前后端交互的次数并降低了客户端开发的复杂性。

下面将结合具体实施例子对该系统及方法作进一步说明。

结合图1所示,本实施例提供一种基于流程引擎的可视化的拖拽式服务编排方法,至少包括如下步骤:

说明:服务F是服务编排的开始服务,服务A、服务B、服务C是服务编排的服务流程节点。

服务F:FBody.param为服务F的输入参数,FResponse.param为服务F的输出结果服务A:ABody.param为服务A的输入参数,AResponse.param为服务A的输出结果

服务B:BBody.param为服务B的输入参数,BResponse.param为服务B的输出结果

服务C:CBody.param为服务C的输入参数,CResponse.param为服务C的输出结果

1)在服务编排管理平台,新建一个编排的微服务F,编辑服务名称、服务编码、服务访问地址、请求类型、参数类型和开启状态等。配置端服务编排的信息采用zookeeper注册服务的方式,来实时监听服务编排和存储服务的信息。

2)从左侧面板同步器拖拽开始和结束按钮到中间面板,开始和结束按钮必须成对设计,保证服务编排的流程完整。

3)从左侧面板拖拽编排的服务目录树,选择服务A、服务B、服务C,拖拽到中间面板。这里服务目录树可以是自己的微服务,可以是已编排好的服务。

4)在中间面板把服务之间用连接线连上,服务A、服务B采用并行方式,服务C采用串行方式,如图2所示。服务连接的时候必须使用左侧面板中的同步按钮连接。在服务A和服务B的连接线上可以添加设置,路由到不同的服务。在服务A、B、C节点分别配置每个服务的输入参数和输出结果。

5)在服务A和服务B的条件设置框中分别设置条件判断,当连接服务A的条件设置为FBody.type=1时,路由到服务A,当连接服务B的条件设置FBody.type=2时,路由到服务B。

6)在服务A、B、C节点分别配置每个服务的输入参数和输出结果。

服务F为POST请求,参数为放在body中JSON字符串。

服务A为POST请求,参数为放在body中JSON字符串。

服务B为POST请求,参数为放在body中XML字符串。

服务C为GET请求,参数为URL后面拼接字符串。如:url?param1=value2¶m2=value2。

配置服务A的输入参数为:

{"param1":"${FBody.param1}","param2":"${FBody.param2}","type":"${FBody.type}"}

配置服务B的输入参数为:

"${FBody.param1}${FBody.param2}${FBody.type

配置服务C的输入参数为:默认上个流程节点的返回结果,XResponse的值是通过条件设置的服务A或者服务B的返回结果。

param1=${XBody.param1¶m2=${XBody.param2}

7)服务编排可视化定制完成以后,即可通过代理端来实现服务的调用,服务代理端通过zookeeper可获取所有服务的信息,在执行过程中通过流程引擎、freemarker引擎完成服务编排的各个节点,最终返回编排服务的结果。

基于同一发明构思,本发明的另一实施例提供一种采用上述方法的基于流程引擎的拖拽式服务编排系统,其包括配置端和代理端,配置端完成服务编排的管理,代理端完成微服务的路由和代理;在配置端对待进行服务编排的微服务进行注册;在配置端选中已注册的微服务,对其进行拖拽式地服务编排流程设计;在服务编排流程设计完成以后,在代理端调用和执行编排的微服务。

基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。

基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如ROM/RAM、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。

以上公开的本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例和附图所公开的内容,本发明的保护范围以权利要求书界定的范围为准。

相关技术
  • 一种基于流程引擎的拖拽式服务编排方法及系统
  • 一种基于容器编排系统的分布式四域计算服务架构实时交互分析实现方法
技术分类

06120114739524