CN113760226A - 服务构建方法、装置、电子设备以及存储介质 - Google Patents

服务构建方法、装置、电子设备以及存储介质 Download PDF

Info

Publication number
CN113760226A
CN113760226A CN202011338967.2A CN202011338967A CN113760226A CN 113760226 A CN113760226 A CN 113760226A CN 202011338967 A CN202011338967 A CN 202011338967A CN 113760226 A CN113760226 A CN 113760226A
Authority
CN
China
Prior art keywords
service
calling
building block
result
block
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
Application number
CN202011338967.2A
Other languages
English (en)
Inventor
章昊玄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202011338967.2A priority Critical patent/CN113760226A/zh
Publication of CN113760226A publication Critical patent/CN113760226A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种服务构建方法、装置、电子设备以及存储介质,通过接收服务请求,并根据服务请求确定服务积木,然后解析并执行服务积木,以确定服务调用结果,最后发送服务调用结果。其中,服务积木为多个业务逻辑单元按照预设逻辑次序编排的集合,服务积木从业务逻辑即服务的角度来对各类服务的调用进行了模板化编排,解决了现有技术中以代码实现为核心逻辑的服务构建方法导致的服务调用代码重编工作量大,服务边界不清晰,代码冗余量大且效率低,系统开发、测试和维护困难的技术问题,实现了将服务积木模块化,并利用模板来调用,达到了减少胶水代码,减少代码冗余,统一调用流程,提高系统开发、测试和维护的工作效率的技术效果。

Description

服务构建方法、装置、电子设备以及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种服务构建方法、装置、电子设备以及存储介质。
背景技术
随着计算机系统的普及和完善,以及人们对于计算机系统的需求多样化程度越来越高,计算机系统的更新换代、维护、开发的周期也越来越短。这也给计算机程序开发的开发人员带来了巨大的工作量。
目前,在开发一套新的计算机系统的时候,由于软硬件架构,开发工作分配等原因,一个计算机系统一般分为:底层、中间层和应用层。各个层由不同的开发人员负责实施,前一个层为下一个层的调用设计了对应的调用接口,而每个层又用“胶水”代码将各个调用接口,根据具体应用的场景粘合成业务模块或者应用模块。
但是现有的计算机系统开发和维护过程中,在不同系统或者不同模块或者不同架构中调用某个服务,就需要前端开发人员编制不同的业务粘合代码,造成大量的重复工作,工作效率低。并且各个服务之间的调用编排的灵活性较差,每次都要修改代码重新编排,并且重新发布上线。而且由于多次维护或者多个版本的更新累积等原因,使得粘合服务的代码过多,造成了服务对应的业务逻辑单元边界不清晰,造成后续程序代码冗余量越来越大,代码效率越来越低,长此以往难以对计算机系统进行测试和维护。
发明内容
本申请提供一种服务构建方法、装置、电子设备以及存储介质,以解决现有技术中的服务调用需重复编制不同粘合代码,导致的工作效率低,各服务调用编排灵活性差,粘合代码过多造成服务的业务逻辑单元边界不清的技术问题。
第一个方面,本申请提供一种服务构建方法,包括:
接收服务请求,所述服务请求包括服务积木标识;
根据所述服务请求确定服务积木,所述服务积木包括:调用模板以及至少一个用于装载被调用服务的积木,所述调用模板用于编排所述积木以及所述被调用服务的预设逻辑次序;
根据所述调用模板解析所述服务积木中的各个所述积木,以确定服务调用结果;
发送所述服务调用结果。
在一种可能的设计中,所述解析并执行所述服务积木,以确定服务调用结果,包括:
根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务;
根据所述调用模板确定各个所述被调用服务的调用流程,
根据所述调用流程执行所述被调用服务,以确定所述服务调用结果。
可选的,所述调用流程包括所述被调用服务的预设逻辑次序以及执行所述被调用服务需要传递的参数,所述根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
根据所述预设逻辑次序以及所述参数执行所述被调用服务,确定所述服务调用结果。
可选的,所述被调用服务为业务逻辑单元。
在一种可能的设计中,所述根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务,包括:
将所述调用模板中声明的第一个所述积木设置为当前积木;
A:解析所述当前积木的属性值以确定解析结果;
B:根据所述解析结果确定所述当前积木的调用对象;
C:判断所述调用对象的类型;
若所述类型为服务,则从服务注册中心中查找到对应的所述被调用服务;
继续解析所述调用模板中声明的下一个所述积木,直至解析完所述调用模板中声明的所有所述积木。
可选的,所述积木还用于装载子积木,所述子积木与所述积木具有相同的组成结构形式;所述C:判断所述调用对象的类型之后,还包括:
若所述类型为子积木,则将所述子积木设置为当前积木;
重复步骤A~C,直至确定所述子积木中的所有所述被调用服务,返回父积木继续解析,所述父积木为装载所述子积木的所述积木。
可选的,所述积木还用于装载子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;所述C:判断所述调用对象的类型之后,还包括:
若所述类型为子服务积木,则根据所述子服务积木中的调用模板确定所述子服务积木对应的积木;
将所述子服务积木的调用模板中声明的第一个积木设置为当前积木;
重复步骤A~C,直至确定所述子服务积木调用的所有被调用服务;
执行所述子服务积木调用的所有被调用服务,以确定所述子服务积木的调用结果;
将所述子服务积木的调用结果返回给所述服务积木,并继续解析所述调用模板中声明的下一个积木。
在一种可能的设计中,所述积木包括结果包装器,所述结果包装器用于指示所述积木返回给所述调用模板的所述调用结果的数据类型,所述根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
利用所述结果包装器获取所述被调用服务的调用结果;
根据所述调用流程中的对于所述结果包装器的设置参数确定所述结果包装器返回的所述调用结果的所述数据类型。
可选的,所述数据类型包括:结果值、结果图以及自定义结果;
所述结果值为所述积木中最后一个子单元的调用结果,所述子单元包括:所述被调用服务、所述子积木以及子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;
所述结果图为所述积木中各个所述子单元的调用结果;
所述自定义结果为由另一个结果包装器指示的服务调用结果。
在一种可能的设计中,所述积木的属性值包括决策器,所述决策器用于指示是否需要调用所述积木的所述子单元,所述A:解析所述当前积木的属性值确定解析结果,包括:
根据所述当前积木的所述决策器判断是否继续解析所述当前积木;
若所述决策器的判断结果是不做任何决策,则继续解析;
若所述判断结果是自定义决策器,则继续解析所述自定义决策器指定的所述子单元。
可选的,所述积木的属性值包括服务调用执行方式,所述执行方式包括:串行调用以及并行调用;
所述串行调用表示将所有或部分所述子单元按所述积木中的声明顺序依次调用,上一个子单元的输出作为下一个子单元的输入;
所述并行调用表示将所有或部分所述子单元同时进行调用,并获取所述子单元的调用结果;
所述A:解析所述当前积木的属性值确定解析结果,包括:
根据所述当前积木的服务调用执行方式确定所述子单元的调用方式。
在一种可能的设计中,所述积木的属性值包括服务类型,所述服务类型用于指示所述积木是否接收参数以及所述积木的返回值类型,所述A:解析所述当前积木的属性值确定解析结果,包括:
若所述当前积木的所述服务类型为供给型,则所述当前积木不接收参数。
在一种可能的设计中,所述A:解析所述当前积木的属性值确定解析结果,还包括:
若所述当前积木的所述服务类型不是所述供给型,则
所述根据所述当前积木的服务调用执行方式确定所述子单元的调用方式,包括:
若所述服务调用执行方式为串行调用,则把上一步调用结果作为当前调用的传入参数;
若所述服务调用执行方式为并行调用,则把所述积木中上下文定义的参数作为所述当前调用的传入参数。
在一种可能的设计中,所述方法还包括:
通过用户界面拖拽各个服务的图形化标识,以确定所述服务的所述预设逻辑次序;
定义所述调用模板的上下文传递参数;
根据所述服务、所述预设逻辑次序以及所述上下文传递参数确定所述调用模板。
可选的,在所述接收服务请求之前,还包括:
利用服务注册模型确定基本的业务逻辑单元;
将所述业务逻辑单元确定为服务,并注册到服务注册中心之中。
第二个方面,本申请提供一种服务构建装置,包括:
接收模块,用于接收服务请求,所述服务请求包括服务积木标识;
处理模块,用于根据所述服务请求确定服务积木,所述服务积木包括:调用模板以及至少一个用于装载被调用服务的积木,所述调用模板用于编排所述积木以及所述被调用服务的预设逻辑次序;
所述处理模块,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定服务调用结果;
发送模块,用于发送所述服务调用结果。
在一种可能的设计中,所述处理模块,还用于解析并执行所述服务积木,以确定服务调用结果,包括:
所述处理模块,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务;
所述处理模块,还用于根据所述调用模板确定各个所述被调用服务的调用流程,所述调用流程包括所述被调用服务的预设逻辑次序以及执行所述被调用服务需要传递的参数;
所述处理模块,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果。
可选的,所述调用流程包括所述被调用服务的预设逻辑次序以及执行所述被调用服务需要传递的参数,所述处理模块,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
所述处理模块,还用于根据所述预设逻辑次序以及所述参数执行所述被调用服务,确定所述服务调用结果。
可选的,所述被调用服务为业务逻辑单元。
在一种可能的设计中,所述处理模块,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务,包括:
所述处理模块,还用于将所述调用模板中声明的第一个所述积木设置为当前积木;
所述处理模块,还用于A:解析所述当前积木的属性值以确定解析结果;B:根据所述解析结果确定所述当前积木的调用对象;C:判断所述调用对象的类型;
所述处理模块,还用于若所述类型为服务,则从服务注册中心中查找到对应的所述被调用服务;
所述处理模块,还用于继续解析所述调用模板中声明的下一个所述积木,直至解析完所述调用模板中声明的所有所述积木。
可选的,所述积木还用于装载子积木,所述子积木与所述积木具有相同的组成结构形式;所述处理模块,还用于C:判断所述调用对象的类型之后,还包括:
所述处理模块,还用于若所述类型为子积木,则将所述子积木设置为当前积木;
所述处理模块,还用于重复步骤A~C,直至确定所述子积木中的所有所述被调用服务,返回父积木继续解析,所述父积木为装载所述子积木的所述积木。
可选的,所述积木还用于装载子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;所述处理模块,还用于C:判断所述调用对象的类型之后,还包括:
所述处理模块,还用于若所述类型为子服务积木,则根据所述子服务积木中的调用模板确定所述子服务积木对应的积木;
所述处理模块,还用于将所述子服务积木的调用模板中声明的第一个积木设置为当前积木;
所述处理模块,还用于重复步骤A~C,直至确定所述子服务积木调用的所有被调用服务;
所述处理模块,还用于执行所述子服务积木调用的所有被调用服务,以确定所述子服务积木的调用结果;
所述处理模块,还用于将所述子服务积木的调用结果返回给所述服务积木,并继续解析所述调用模板中声明的下一个积木。
在一种可能的设计中,所述积木包括结果包装器,所述结果包装器用于指示所述积木返回给所述调用模板的所述调用结果的数据类型,所述处理模块,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
所述处理模块,还用于利用所述结果包装器获取所述被调用服务的调用结果;
所述处理模块,还用于根据所述调用流程中的对于所述结果包装器的设置参数确定所述结果包装器返回的所述调用结果的所述数据类型。
可选的,所述数据类型包括:结果值、结果图以及自定义结果;
所述结果值为所述积木中最后一个子单元的调用结果,所述子单元包括:所述被调用服务、所述子积木以及子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;
所述结果图为所述积木中各个所述子单元的调用结果;
所述自定义结果为由另一个结果包装器指示的服务调用结果。
在一种可能的设计中,所述积木的属性值包括决策器,所述决策器用于指示是否需要调用所述积木的所述子单元,所述处理模块,还用于A:解析所述当前积木的属性值确定解析结果,包括:
所述处理模块,还用于根据所述当前积木的所述决策器判断是否继续解析所述当前积木;
所述处理模块,还用于若所述决策器的判断结果是不做任何决策,则继续解析;
所述处理模块,还用于若所述判断结果是自定义决策器,则继续解析所述自定义决策器指定的所述子单元。
可选的,所述积木的属性值包括服务调用执行方式,所述执行方式包括:串行调用以及并行调用;
所述串行调用表示将所有或部分所述子单元按所述积木中的声明顺序依次调用,上一个子单元的输出作为下一个子单元的输入;
所述并行调用表示将所有或部分所述子单元同时进行调用,并获取所述子单元的调用结果;
所述处理模块,还用于A:解析所述当前积木的属性值确定解析结果,包括:
所述处理模块,还用于根据所述当前积木的服务调用执行方式确定所述子单元的调用方式。
在一种可能的设计中,所述积木的属性值包括服务类型,所述服务类型用于指示所述积木是否接收参数以及所述积木的返回值类型,所述处理模块,还用于A:解析所述当前积木的属性值确定解析结果,包括:
所述处理模块,还用于若所述当前积木的所述服务类型为供给型,则所述当前积木不接收参数。
在一种可能的设计中,所述处理模块,还用于A:解析所述当前积木的属性值确定解析结果,还包括:
所述处理模块,还用于若所述当前积木的所述服务类型不是所述供给型,则
所述处理模块,还用于根据所述当前积木的服务调用执行方式确定所述子单元的调用方式,包括:
所述处理模块,还用于若所述服务调用执行方式为串行调用,则把上一步调用结果作为当前调用的传入参数;
所述处理模块,还用于若所述服务调用执行方式为并行调用,则把所述积木中上下文定义的参数作为所述当前调用的传入参数。
在一种可能的设计中,还包括:
所述获取模块,还用于获取用户界面拖拽各个服务的图形化标识,
所述处理模块,还用于通过所述图形化标识确定所述服务的所述预设逻辑次序;
所述处理模块,还用于定义所述调用模板的上下文传递参数;
所述处理模块,还用于根据所述服务、所述预设逻辑次序以及所述上下文传递参数确定所述调用模板。
可选的,在所述获取模块,用于接收服务请求之前,还包括:
所述处理模块,还用于利用服务注册模型确定基本的业务逻辑单元;
所述处理模块,还用于将所述业务逻辑单元确定为服务,并注册到服务注册中心之中。
第三个方面,本申请提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,执行第一方面所提供的任意一种可能的服务构建方法。
第四个方面,本申请提供一种存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序用于执行第一方面所提供的任意一种可能的服务构建方法。
本申请提供了一种服务构建方法、装置、电子设备以及存储介质,通过接收服务请求,并根据服务请求确定服务积木,然后解析并执行服务积木,以确定服务调用结果,最后发送服务调用结果。其中,服务积木为多个业务逻辑单元按照预设逻辑次序编排的集合,服务积木从业务逻辑即服务的角度来对各类服务的调用进行了模板化编排,解决了现有技术中以代码实现为核心逻辑的服务构建方法导致的服务调用代码重编工作量大,服务边界不清晰,代码冗余量大且效率低,系统开发、测试和维护困难的技术问题,实现了将服务积木模块化,并利用模板来调用,达到了减少胶水代码,减少代码冗余,统一调用流程,提高系统开发、测试和维护的工作效率的技术效果。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的服务积木、积木和调用模板关系的示意图;
图2为本申请提供的一种服务构建方法的流程示意图;
图3为本申请提供的另一种服务构建方法的流程示意图;
图4为本申请提供的又一种服务构建方法的载体的系统架构示意图;
图5为本申请提供的又一种服务构建方法的流程示意图;
图6为本申请提供的一种服务构建装置的结构示意图;
图7为本申请提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,包括但不限于对多个实施例的组合,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面对本申请实施例所涉及到的专业术语进行解释介绍。
服务:为满足某对象的某种需求而进行的活动,一项服务有可以划分为多个功能业务。对象可以为一个也可以是一类,活动可以是一项活动也可以是一些列的活动,例如:无线通信为一项服务,线上购物为一项服务。进一步地,线上购物又可以分为:订单业务,商品搜索业务,售后业务等。
在计算机技术领域,服务是计算机对数据处理请求的响应和处理的能力,一些基本的数据处理功能可以被多个服务重复地使用,或者说某个应用程序的某个业务功能就是由相应的一个或多个服务来完成的,那么就可以把这个业务功能的基本逻辑单元称为服务。
在本申请的实施例中,服务表示一个具体的功能调用过程。服务可以被积木所装载。服务的属性值包括调用方式,调用方式用于表明是按命名空间和ID查找并调用服务。调用方式包括:远程调用和本地调用,其中远程调用是在服务的属性值中没有被特别声明时默认的调用方式,即远程调用为调用方式的缺省值。远程调用是指从服务注册中心查找并调用服务。本地调用是指从当前本地进程内查找并调用服务。
需要说明的是,服务也是可以再分割成逻辑范围更小的服务,对于不可再细分的服务,称为原子服务。服务能够被积木所装载。
积木:服务在调用过程中的一个逻辑流程单元,同时也是一个逻辑容器,用来装载服务、积木以及服务积木中的至少一类。积木可以和其它积木嵌套。并列组合。嵌套的积木,把作为基础的积木称为父积木,嵌套得到的积木称为子积木,没有父积木的积木称为根积木,每次对积木进行解析时,都是从根积木开始解析的。并列组合的积木,或者具有相同父积木的积木称为兄弟积木。积木只有在积木引擎解析进程内有效,其生命周期从被引擎解析时开始,随着被进程销毁而结束。
积木的属性值包括:
a)ID|RefId:定义本地唯一编码|引用一个已存在的本地唯一编码所指代的积木。
b)Root:根积木标识,根积木用来装载其他积木或服务或服务积木,是服务调用的入口,根积木有且只有一个。
c)Type:服务类型。
function:功能型,接收上下文定义的参数,有一个返回值。是服务类型的缺省值。
predicate:判断型,接收上下文定义的参数,有一个boolean型返回值。
consumer:消费型,接收上下文定义的参数,没有返回值。
supplier:供给型,不接收参数,有一个返回值。
callback:回调型,接收上下文定义的参数,执行完成后回调一个callback返回。
d)Action:服务调用执行方式。
chain:顺序调用或称为串行调用,积木嵌套的子积木或服务按声明顺序依次调用,上一个子单元的输出作为下一个子单元的输入。是服务调用执行方式的缺省值。
parallel:并行调用,积木的子单元(包括子积木、服务、子服务积木)并行进行调用,并搜集并行调用结果。
e)Decision:服务调用决策器,判断是否需要调用积木的子单元(即全部或部分子积木、服务、子服务积木)。
none:是决策器的缺省值,不做任何决策,直接调用。
customize:自定义,需要实现一个决策器来判断是否调用该积木的子单元。决策器的入参为积木的入参。所谓入参就是程序的传入参数。
f)Wrapper:服务调用结果包装器。当服务类型不等于consumer和callback时才会被触发。
result:结果值,是结果包装器的缺省值,取积木的最后一个子单元的调用结果作为结果。
map:结果图,取积木的各个子单元的调用结果,并用map包装结果。
customize:自定义结果,需要实现一个包装器来包装服务调用结果。包装器的入参为积木的调用结果。
积木还包括调用入参。当积木有父积木时,积木的调用入参由父积木传递。当积木没有父积木时,其调用入参由引擎动态传入,参数为模版解析执行时的上下文定义的传入参数。
服务积木:按照预设逻辑次序编排积木,并声明和定义各个积木之间传递的参数和返回数据,这样的方式成为积木的模板化编排,所形成的编排好的各个积木的有序集合整体称为服务积木。服务积木的编排结构和参数即编排一个完整的服务调用流程后,经过模版语言生成的片段就称为调用模板。
服务积木的属性值包括:
a)ID:唯一编码,必须和Namespace命名空间结合。不同命名空间,但是ID可以相同,在同一命名空间下,ID不能相同。
b)RefId:引用一个已经存在的服务积木。例如引用格式为:
Namespace::ID。
c)Namespace:命名空间。
Template:模版,编排一个完整的服务调用流程后,经过模版语言生成的片段。
服务积木的调用入参:服务积木的调用入参由引擎解析执行模版时动态传入。
下面对本申请的发明构思进行介绍。
在现有技术中,计算机系统或者计算机软件的开发,或者移动应用程序的开发,测试和维护,由于开发人员的惯性思维,都是从代码的构建逻辑的角度来看待问题,很多功能的实现,由于代码是载体,就会使得开发人员更关注函数调用,对象构建等等代码化的手段。但是在对整个应用程序或者计算机系统的架构规划的时候,一般会把架构分为三层:底层、中间层、应用层。在具体工作中,一般开发人员很少做跨层的工作,都是调用上一层输出的接口代码,进程调用代码等进行下一步的工作。
目前由于系统的更新换代周期越来越短,或者是以一个应用程序为基础衍生出一系列的应用程序来实现分布式服务的开发任务需求越来越多,这就使得同一服务可能会在不同的应用场景当中使用,而由于应用场景之间的差异又不能完全照搬原来的代码。这就导致了开发人员不断地需要更新各种基础业务模块的调用代码即胶水代码,并且随着更新和维护次数的增加、开发人员的流动更换、应用场景的变化等原因,使得胶水代码冗余度不断提高,并且也使得原本的基础业务模块的服务边界变得不清晰,也就是很难区分出真正起到实际作用的代码段是哪一部分,这对于后期整个程序的精简、测试、维护都带来了极大的不便。
在面对上述问题的时候,本申请发明人跳出常规代码化思维逻辑,转而从服务整体上进行调用规划,将基础性的业务功能模块固化成为一个“服务”,然后给服务的调用配置标准型的工具,即服务积木。如果将程序的开发中某个服务的实现过程看成是造一辆汽车的话,服务积木就是汽车的发动机、车身、底盘等部件,通过服务积木的组合配置就能够实现服务。而具体的基础类型的服务如何容置于服务积木当中,就要依赖于服务积木的调用模板以及积木。三者之间的关系可以用图1来表示。
图1为本申请实施例提供的服务积木、积木和调用模板关系的示意图。如图1所示,服务积木10中是由各种积木,如积木101、积木102、子服务积木11等按照预设的位置、顺序和结构编排而得到的,而每个服务积木的编排方式就是调用模板。因为一个服务积木能够完成一项或者多项业务功能即服务内容,而把这些服务内容进行模板化固定后,就能够使得服务的调用和实现不再被胶水代码所困扰,每次只要在调用模板中进行相关的声明,就能够满足不同的应用场景的调用需求,而不需要去重新编制粘合或调用的胶水代码。对于服务积木的修改也仅仅只需要去更新调用模板就可以了,因为调用模板就已经编排了服务积木中究竟要用到哪些积木。
需要说明的是积木中还可以装载子单元,子单元包括:积木、服务、服务积木。当子单元为服务积木时,该积木就是子服务积木。如图1中的子服务积木11,子服务积木11中又包含着子积木111和子积木112。服务积木就是由积木嵌套而成的一个具有一定组织结构的集合整体,而最小的逻辑单元为服务,服务对应着一个具体的功能模块或者说是功能代码段。
为了解决现有技术中重复编制服务调用的胶水代码,造成的重复工作量大,胶水代码使得服务边界不清晰,导致后续程序代码冗余度高,代码效率低等技术问题,本申请提出了一种服务构建方法,下面结合具体实施例来对该服务构建方法进行详细介绍。
图2为本申请提供的一种服务构建方法的流程示意图。如图2所示,本申请实施例提供的服务构建方法,具体步骤包括:
S201、接收服务请求。
在本步骤中,服务请求包括服务积木标识。
服务消费设备将服务需求通过服务请求发送给服务提供设备,而每项服务需求都与服务积木存在着映射关系表,因此服务请求中包含着所需要用的服务积木标识,通过服务积木标识就能够查找到对应的服务积木。
S202、根据服务请求确定服务积木。
在本步骤中,服务积木为多个业务逻辑单元按照预设逻辑次序编排的集合。服务积木包括:调用模板以及至少一个用于装载被调用服务的积木,调用模板用于编排积木以及被调用服务的预设逻辑次序。
服务积木引擎根据接收到的服务请求,查找对应的服务积木标识,以确定所要用到的服务积木。
S203、解析并执行所述服务积木,以确定服务调用结果。
在本步骤中,解析并执行所述服务积木包括:根据所述调用模板解析所述服务积木中的各个所述积木。
服务积木引擎通过解析服务积木中所需要用到的积木,以及各个积木之间参数的传递关系,各个积木中的被调用服务的返回值情况,这些都是由服务积木中的调用模板来进行规划的,调用模板其实就是编排了整个服务调用流程。根据解析结果确定到具体的被调用服务,以及各个被调用服务的执行顺序,还有返回值情况后,就从服务注册中心或者本地进程中调用被调用服务,并执行后,得到服务调用结果。
S204、发送服务调用结果。
在本步骤中,在服务积木所调用的服务都执行完毕并返回相应的调用结果后,服务提供服务器,向服务消费设备发送服务调用结果。
本实施例提供了一种服务构建方法,通过接收服务请求,并根据服务请求确定服务积木,然后解析并执行服务积木,以确定服务调用结果,最后发送服务调用结果。其中,服务积木为多个业务逻辑单元按照预设逻辑次序编排的集合,服务积木从业务逻辑即服务的角度来对各类服务的调用进行了模板化编排,解决了现有技术中以代码实现为核心逻辑的服务构建方法导致的服务调用代码重编工作量大,服务边界不清晰,代码冗余量大且效率低,系统开发、测试和维护困难的技术问题,实现了将服务积木模块化,并利用模板来调用,达到了减少胶水代码,减少代码冗余,统一调用流程,提高系统开发、测试和维护的工作效率的技术效果。
图3为本申请提供的另一种服务构建方法的流程示意图。如图3所示,该服务构建方法的具体步骤包括:
S301、接收服务请求,并根据服务请求确定服务积木。
本步骤与S201-S202的原理相似,具体内容原理及名词解释参考上文,在此不再赘述。
S302、根据调用模板解析服务积木中的各个积木,以确定每个积木中的被调用服务。
在本步骤中,具体步骤包括:
S3021、将调用模板中声明的第一个积木设置为当前积木;
S3022、解析当前积木的属性值以确定解析结果;
在本实施例中,积木的属性值包括服务调用的执行方式,执行方式包括:串行调用以及并行调用。串行调用表示将所有或部分子单元按积木中的声明顺序依次调用,上一个子单元的输出作为下一个子单元的输入;并行调用表示将所有或部分子单元同时进行调用,并获取子单元的调用结果。需要说明的是,由于积木可以看成是一个容器,因此子单元可以包括:服务、积木、服务积木。而被当前积木装载的积木就是子积木,被当前积木装载的服务积木就是子服务积木。
那么,在本步骤中,具体的,根据当前积木的服务调用执行方式确定子单元的调用方式,以确定后续被调用服务是串行方式执行还是并行方式执行,或者是部分串行调用,另一部分并行调用。
在一种可能的实现方式中,积木的属性值包括服务类型,所述服务类型用于指示所述积木是否接收参数以及积木的返回值类型,则本步骤还包括:
若当前积木的服务类型为供给型,则当前积木不接收参数;
若当前积木的所述服务类型不是所述供给型,则根据当前积木的服务调用执行方式确定子单元的调用方式,包括:
若服务调用执行方式为串行调用,则把上一步调用结果作为当前调用的传入参数;
若服务调用执行方式为并行调用,则把积木中上下文定义的参数作为当前调用的传入参数。
需要说明的是,调用方式可以使得服务积木中被调用服务的编排更加灵活多样,从而满足各种服务调用的应用场景的不同需求,使得调用模板的编排更加合理和多样。
S3023、根据解析结果确定当前积木的调用对象;
S3024、判断调用对象的类型,若类型为服务,则从服务注册中心中查找到对应的被调用服务。
在一种可能的设计中,还包括,判断调用的服务为本地服务还是远程服务,若为本地服务,则从本地进程中查找对应的被调用服务,若为远程服务则从服务注册中心中查找对应的被调用服务。
在解析完一个积木后,判断当前积木是否解析完成,若没有完成,则继续重复S3021-S3024,若当前积木完成了解析,则继续重复S3021-S3024解析调用模板中声明的下一个积木,直至解析完调用模板中声明的所有积木。
在一种可能的设计中,积木还用于装载子积木,子积木与积木具有相同的组成结构形式,也可以作为一个容器,类似于代码语言中的父类和子类的作用,子积木可以继承父积木的一些属性,也可以具备自己单独的属性值。
那么S3024还包括:若类型为子积木,则将子积木设置为当前积木,重复执行S3021-S3024直至确定子积木中的所有被调用服务,返回父积木继续解析。需要说明的是,父积木为装载子积木的积木。
在一种可能的设计中,积木还用于装载子服务积木,子服务积木与服务积木具有相同的组成结构形式。
那么S3024还包括:若类型为子服务积木,则根据子服务积木中的调用模板确定子服务积木对应的积木;
将子服务积木的调用模板中声明的第一个积木设置为当前积木;
重复执行S3021-S3024,直至确定子服务积木调用的被调用服务;
执行子服务积木调用的所有被调用服务,以确定子服务积木的调用结果;
将子服务积木的调用结果返回给服务积木,并继续解析调用模板中声明的下一个积木。
S303、根据调用模板确定各个被调用服务的调用流程。
在本步骤中,调用流程包括被调用服务的预设逻辑次序以及执行被调用服务需要传递的参数。
调用模板给出了各个被调用服务的执行顺序以及传递的参数和返回的数据。
S304、根据调用流程执行被调用服务,以确定服务调用结果。
在本步骤中,服务积木运行中心根据调用模板来执行各个被调用服务,从而得到服务调用结果。
需要说明的是,调用结果可以根据积木的属性值中的服务
S305、发送服务调用结果。
在本步骤中,在服务积木所调用的服务都执行完毕并返回相应的调用结果后,服务提供服务器,向服务消费设备发送服务调用结果。
本实施例提供了一种服务构建方法,通过接收服务请求,并根据服务请求确定服务积木,然后解析并执行服务积木,以确定服务调用结果,最后发送服务调用结果。其中,服务积木为多个业务逻辑单元按照预设逻辑次序编排的集合,服务积木从业务逻辑即服务的角度来对各类服务的调用进行了模板化编排,解决了现有技术中以代码实现为核心逻辑的服务构建方法导致的服务调用代码重编工作量大,服务边界不清晰,代码冗余量大且效率低,系统开发、测试和维护困难的技术问题,实现了将服务积木模块化,并利用模板来调用,达到了减少胶水代码,减少代码冗余,统一调用流程,提高系统开发、测试和维护的工作效率的技术效果。
图4为本申请提供的又一种服务构建方法的载体的系统架构示意图。如图4所示,在本实施例中,调用模板对被调用服务的编排是通过模板元数据来实现的。该系统是面对于应用层上的两个服务活动对象即服务消费者和服务提供者之间服务的调用进行了架构规划。
服务消费者可以调用服务积木来获取服务提供者提供的服务或者是服务注册中心提供的服务;服务消费者也可以实现本地服务调用,所谓本地服务调用是当前服务消费者正在处理的进程中的服务的调用,并且服务消费者可以对服务积木的调用结果进行包装,即“包装调用结果”,以对调用结果进行其它处理。
服务提供者可以根据模板元数据的调用指令来返回调用的结果,也可以将自身所能够提供的服务注册到服务注册中心当中,服务消费者可以直接从服务注册中心中查找服务来进行本地服务调用。
服务积木引擎是用来分析服务消费者提出的服务请求,并查找相应的积木,在图4中所描述的积木包括:积木和服务积木,因为当积木只用来装载子服务积木时,其本质就是一个服务积木。服务积木引擎把所需要的积木或服务积木发送给服务积木配置运行中心,以查找到对应的积木或服务积木,并根据积木或服务积木关联的调用模板获得模板元数据,并进行下载缓存。最终服务积木引擎根据目标元数据解析并执行服务提供者所提供的服务,并得到服务调用结果,返回给服务消费者。
该系统具体的服务调用过程如图5所示。
图5为本申请提供的又一种服务构建方法的流程示意图。如图5所示,该服务构建方法的具体步骤包括:
S501、接收服务请求。
在本步骤中,服务消费者通过服务请求发起服务调用。
具体包括:
服务消费者与服务积木引擎建立通信,以发送服务请求;
利用服务积木引擎对服务请求中的调用元数据进行预处理。
S502、根据所述服务请求确定服务积木。
在本步骤中,具体实现方式为:利用服务积木引擎以及服务积木运行中心查找服务积木,具体步骤包括:
利用服务积木引擎在本地缓存中查找被调用的服务积木;
与服务积木运行中心通信,并查找被调用的服务积木。
S503、解析并执行所述服务积木,以确定服务调用结果。
在本步骤中,可以将本步骤细分为S5031-S5033,具体如下:
S5031、利用服务积木引擎以及服务积木运行中心获取服务积木调用模板。
S5032、利用服务积木引擎解析模板元数据并执行调用。
在本步骤中,具体的实现方式如下:
(1)利用服务积木引擎解析服务积木中的父子积木、兄弟积木关系。
(2)设置服务积木中声明的第一个积木为当前积木。
需要说明的是,第一个积木为根积木,从根积木开始解析。
(3)利用服务积木引擎解析当前积木的服务调用决策器Decision的调用策略。
(4)根据调用策略判断是否继续解析当前积木。如果是none,则继续解析,如果是customize,则调用自定义决策器判断是否继续解析。
(5)利用服务积木引擎解析当前积木的服务调用执行方式Action。
(6)根据Action判断解析按何种顺序进行。如果是chain即串行调用,则按声明的顺序解析,如果是parallel即并行调用,则按照并行调用定义的方式进行解析。
(7)利用服务积木引擎解析当前积木的服务类型Type。
(8)根据Type判断是否接收参数及怎么接收参数。
如果Type是供给型supplier,则不接收参数;
如果Type不是supplier,则要根据服务调用方式Action来判断,若Action为chain,则把上一步调用结果作为调用入参,若Action为parallel则把调用上下文定义的入参作为调用入参。
(9)调用当前积木的子积木、子服务积木、子服务。所谓子服务就是当前积木中所声明的被调用服务。
(10)判断当前调用是调用服务,或者是调用服务积木,或者是调用积木。
(11)若调用服务,则从服务注册中心查找被调用服务,并进行缓存,执行被调用服务,并获取调用结果;若调用服务积木,则取该服务积木的模板元数据即调用模板,继续进行解析;若调用积木,则设置该积木为当前积木,并从第(2)步开始继续解析。
(12)获取当前积木的调用类型Type,若是消费型consumer或回调型callback,则继续解析当前积木的下一个子积木(或子服务积木或子服务)。若不是,则返回当前积木的调用结果。
(13)判断当前积木是否解析完毕。若没有解析完毕,则从第(9)步继续解析其子积木、子服务积木、子服务;若解析完毕,则获取当前积木的服务调用结果包装器Wrapper。
(14)以当前积木的调用结果为入参,调用Wrapper获得最终调用结果。
(15)返回当前积木的最终调用结果给父积木。
S5033、获取服务积木调用结果。
在本步骤中,根积木解析和调用全部结束时,则从根积木获取调用结果,此结果即为该服务积木的调用结果。
S504、将服务积木调用结果发送给服务消费者。
本实施例提供了一种服务构建方法,通过接收服务请求,并根据服务请求确定服务积木,然后解析并执行服务积木,以确定服务调用结果,最后发送服务调用结果。其中,服务积木为多个业务逻辑单元按照预设逻辑次序编排的集合,服务积木从业务逻辑即服务的角度来对各类服务的调用进行了模板化编排,解决了现有技术中以代码实现为核心逻辑的服务构建方法导致的服务调用代码重编工作量大,服务边界不清晰,代码冗余量大且效率低,系统开发、测试和维护困难的技术问题,实现了将服务积木模块化,并利用模板来调用,达到了减少胶水代码,减少代码冗余,统一调用流程,提高系统开发、测试和维护的工作效率的技术效果。
在一种可能的设计中,在步骤S501之前,即接收服务请求之前,还包括:
利用服务注册模型确定基本的业务逻辑单元;
将业务逻辑单元确定为服务,并注册到服务注册中心之中。
由于本申请所提供的服务构建方法,需要对现有的服务调用的业务逻辑单元进行重新分配和管理,以便于进行服务积木的装载,因此需要利用服务注册模型对图4所示的服务提供者的服务进行划分,以确定基本的业务逻辑单元,并把这些基本的业务逻辑单元固化为本申请中的服务,然后注册到服务注册中心之中,便于上述的调用。
在一种可能的设计中,对于调用模板是可以进行管理的,所谓管理包括建立和修改调用模板,由于调用模板是对被调用服务的具体编排,因此对于不同的应用场景,只需要修改已有的调用模板或者建立新的调用模板就可以实现适用与不同应用场景的服务调用。从而减少程序开发人员编制胶水代码的工作量。而为了更加直观简便地实现修改和新建调用模板,可以设置专门的调用模板界面来进行图形化地修改或新建。具体步骤包括:
通过用户界面拖拽各个服务的图形化标识,以确定服务的预设逻辑次序;
定义调用模板的上下文传递参数;
根据服务、预设逻辑次序以及上下文传递参数确定调用模板。
这样通过用户界面就能够方便地实现调用模板的修改和新建了,极大地减少了程序开发人员在不同应用场景时对服务调用的胶水代码的编制工作量。
图6为本申请提供的一种服务构建装置的结构示意图。该服务构建装置装置600可以通过软件、硬件或者两者的结合实现。
如图6所示,该服务构建装置600包括:
接收模块601,用于接收服务请求,所述服务请求包括服务积木标识;
处理模块602,用于根据所述服务请求确定服务积木,所述服务积木为多个业务逻辑单元按照预设逻辑次序编排的集合,所述服务积木包括:调用模板以及至少一个用于装载被调用服务的积木,所述调用模板用于编排所述积木以及所述被调用服务的预设逻辑次序;
所述处理模块602,还用于解析并执行所述服务积木,以确定服务调用结果,包括:根据所述调用模板解析所述服务积木中的各个所述积木,以确定服务调用结果;
发送模块603,用于发送所述服务调用结果。
在一种可能的设计中,所述服务积木包括:所述处理模块602,还用于解析并执行所述服务积木,以确定服务调用结果,包括:
所述处理模块602,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务;
所述处理模块602,还用于根据所述调用模板确定各个所述被调用服务的调用流程;
所述处理模块602,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果。
可选的,所述调用流程包括所述被调用服务的预设逻辑次序以及执行所述被调用服务需要传递的参数,所述处理模块602,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
所述处理模块602,还用于根据所述预设逻辑次序以及所述参数执行所述被调用服务,确定所述服务调用结果。
可选的,所述被调用服务为所述业务逻辑单元。
在一种可能的设计中,所述处理模块602,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务,包括:
所述处理模块602,还用于将所述调用模板中声明的第一个所述积木设置为当前积木;
所述处理模块602,还用于A:解析所述当前积木的属性值以确定解析结果;B:根据所述解析结果确定所述当前积木的调用对象;C:判断所述调用对象的类型;
所述处理模块602,还用于若所述类型为服务,则从服务注册中心中查找到对应的所述被调用服务;
所述处理模块602,还用于继续解析所述调用模板中声明的下一个所述积木,直至解析完所述调用模板中声明的所有所述积木。
可选的,所述积木还用于装载子积木,所述子积木与所述积木具有相同的组成结构形式;所述处理模块602,还用于C:判断所述调用对象的类型之后,还包括:
所述处理模块602,还用于若所述类型为子积木,则将所述子积木设置为当前积木;
所述处理模块602,还用于重复步骤A~C,直至确定所述子积木中的所有所述被调用服务,返回父积木继续解析,所述父积木为装载所述子积木的所述积木。
可选的,所述积木还用于装载子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;所述处理模块602,还用于C:判断所述调用对象的类型之后,还包括:
所述处理模块602,还用于若所述类型为子服务积木,则根据所述子服务积木中的调用模板确定所述子服务积木对应的积木;
所述处理模块602,还用于将所述子服务积木的调用模板中声明的第一个积木设置为当前积木;
所述处理模块602,还用于重复步骤A~C,直至确定所述子服务积木调用的所有被调用服务;
所述处理模块602,还用于执行所述子服务积木调用的所有被调用服务,以确定所述子服务积木的调用结果;
所述处理模块602,还用于将所述子服务积木的调用结果返回给所述服务积木,并继续解析所述调用模板中声明的下一个积木。
在一种可能的设计中,所述积木包括结果包装器,所述结果包装器用于指示所述积木返回给所述调用模板的所述调用结果的数据类型,所述处理模块602,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
所述处理模块602,还用于利用所述结果包装器获取所述被调用服务的调用结果;
所述处理模块602,还用于根据所述调用流程中的对于所述结果包装器的设置参数确定所述结果包装器返回的所述调用结果的所述数据类型。
可选的,所述数据类型包括:结果值、结果图以及自定义结果;
所述结果值为所述积木中最后一个子单元的调用结果,所述子单元包括:所述被调用服务、所述子积木以及子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;
所述结果图为所述积木中各个所述子单元的调用结果;
所述自定义结果为由另一个结果包装器指示的服务调用结果。
在一种可能的设计中,所述积木的属性值包括决策器,所述决策器用于指示是否需要调用所述积木的所述子单元,所述处理模块602,还用于A:解析所述当前积木的属性值确定解析结果,包括:
所述处理模块602,还用于根据所述当前积木的所述决策器判断是否继续解析所述当前积木;
所述处理模块602,还用于若所述决策器的判断结果是不做任何决策,则继续解析;
所述处理模块602,还用于若所述判断结果是自定义决策器,则继续解析所述自定义决策器指定的所述子单元。
可选的,所述积木的属性值包括服务调用执行方式,所述执行方式包括:串行调用以及并行调用;
所述串行调用表示将所有或部分所述子单元按所述积木中的声明顺序依次调用,上一个子单元的输出作为下一个子单元的输入;
所述并行调用表示将所有或部分所述子单元同时进行调用,并获取所述子单元的调用结果;
所述处理模块602,还用于A:解析所述当前积木的属性值确定解析结果,包括:
所述处理模块602,还用于根据所述当前积木的服务调用执行方式确定所述子单元的调用方式。
在一种可能的设计中,所述积木的属性值包括服务类型,所述服务类型用于指示所述积木是否接收参数以及所述积木的返回值类型,所述处理模块602,还用于A:解析所述当前积木的属性值确定解析结果,包括:
所述处理模块602,还用于若所述当前积木的所述服务类型为供给型,则所述当前积木不接收参数。
在一种可能的设计中,所述处理模块602,还用于A:解析所述当前积木的属性值确定解析结果,还包括:
所述处理模块602,还用于若所述当前积木的所述服务类型不是所述供给型,则
所述处理模块602,还用于根据所述当前积木的服务调用执行方式确定所述子单元的调用方式,包括:
所述处理模块602,还用于若所述服务调用执行方式为串行调用,则把上一步调用结果作为当前调用的传入参数;
所述处理模块602,还用于若所述服务调用执行方式为并行调用,则把所述积木中上下文定义的参数作为所述当前调用的传入参数。
在一种可能的设计中,还包括:
所述获取模块,还用于获取用户界面拖拽各个服务的图形化标识,
所述处理模块602,还用于通过所述图形化标识确定所述服务的所述预设逻辑次序;
所述处理模块602,还用于定义所述调用模板的上下文传递参数;
所述处理模块602,还用于根据所述服务、所述预设逻辑次序以及所述上下文传递参数确定所述调用模板。
可选的,在所述获取模块,用于接收服务请求之前,还包括:
所述处理模块602,还用于利用服务注册模型确定基本的业务逻辑单元;
所述处理模块602,还用于将所述业务逻辑单元确定为服务,并注册到服务注册中心之中。
值得说明的是,图6所示实施例提供的服务构建装置,可以执行上述任一方法实施例所提供的方法,其具体实现原理、技术特征、专业名词解释以及技术效果类似,在此不再赘述。
图7为本申请提供的一种电子设备的结构示意图。如图7所示,该电子设备700可以包括:至少一个处理器701和存储器702。图7示出的是以一个处理器为例的电子设备。
存储器702,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
存储器702可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器701用于执行存储器702存储的计算机执行指令,以实现以上各方法实施例所述的方法。
其中,处理器701可能是一个中央处理器(central processing unit,简称为CPU),或者是特定集成电路(application specific integrated circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选地,存储器702既可以是独立的,也可以跟处理器701集成在一起。当所述存储器702是独立于处理器701之外的器件时,所述电子设备700,还可以包括:
总线703,用于连接所述处理器701以及所述存储器702。总线可以是工业标准体系结构(industry standard architecture,简称为ISA)总线、外部设备互连(peripheralcomponent,PCI)总线或扩展工业标准体系结构(extended industry standardarchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器702和处理器701集成在一块芯片上实现,则存储器702和处理器701可以通过内部接口完成通信。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random accessmemory,RAM)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述各方法实施例中的方法。
本申请还提供一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现上述各实施例中的服务构建方法
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (33)

1.一种服务构建方法,其特征在于,包括:
接收服务请求,所述服务请求包括服务积木标识;
根据所述服务请求确定服务积木,所述服务积木包括:调用模板以及至少一个用于装载被调用服务的积木,所述调用模板用于编排所述积木以及所述被调用服务的预设逻辑次序;
根据所述调用模板解析所述服务积木中的各个所述积木,以确定服务调用结果;
发送所述服务调用结果。
2.根据权利要求1所述的服务构建方法,其特征在于,所述根据所述调用模板解析所述服务积木中的各个所述积木,以确定服务调用结果,包括:
根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务;
根据所述调用模板确定各个所述被调用服务的调用流程;
根据所述调用流程执行所述被调用服务,以确定所述服务调用结果。
3.根据权利要求2所述的服务构建方法,其特征在于,所述调用流程包括所述被调用服务的预设逻辑次序以及执行所述被调用服务需要传递的参数,所述根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
根据所述预设逻辑次序以及所述参数执行所述被调用服务,确定所述服务调用结果。
4.根据权利要求1-3中任意一项所述的服务构建方法,其特征在于,所述被调用服务为业务逻辑单元。
5.根据权利要求2或3所述的服务构建方法,其特征在于,所述根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务,包括:
将所述调用模板中声明的第一个所述积木设置为当前积木;
解析所述当前积木的属性值以确定解析结果;
根据所述解析结果确定所述当前积木的调用对象;
判断所述调用对象的类型;
若所述类型为服务,则从服务注册中心中查找到对应的所述被调用服务;
继续解析所述调用模板中声明的下一个所述积木,直至解析完所述调用模板中声明的所有所述积木。
6.根据权利要求5所述的服务构建方法,其特征在于,所述积木还用于装载子积木,所述子积木与所述积木具有相同的组成结构形式;所述判断所述调用对象的类型之后,还包括:
若所述类型为子积木,则将所述子积木设置为当前积木;
重复步骤:解析所述当前积木的属性值以判断所述调用对象的类型,直至确定所述子积木中的所有所述被调用服务,返回父积木继续解析,所述父积木为装载所述子积木的所述积木。
7.根据权利要求6所述的服务构建方法,其特征在于,所述积木还用于装载子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;所述判断所述调用对象的类型之后,还包括:
若所述类型为子服务积木,则根据所述子服务积木中的调用模板确定所述子服务积木对应的积木;
将所述子服务积木的调用模板中声明的第一个积木设置为当前积木;
重复步骤:解析所述当前积木的属性值以判断所述调用对象的类型,直至确定所述子服务积木调用的所有被调用服务;
执行所述子服务积木调用的所有被调用服务,以确定所述子服务积木的调用结果;
将所述子服务积木的调用结果返回给所述服务积木,并继续解析所述调用模板中声明的下一个积木。
8.根据权利要求7所述的服务构建方法,其特征在于,所述积木包括结果包装器,所述结果包装器用于指示所述积木返回给所述调用模板的所述调用结果的数据类型,所述根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
利用所述结果包装器获取所述被调用服务的调用结果;
根据所述调用流程中的对于所述结果包装器的设置参数确定所述结果包装器返回的所述调用结果的所述数据类型。
9.根据权利要求8所述的服务构建方法,其特征在于,所述数据类型包括:结果值、结果图以及自定义结果;
所述结果值为所述积木中最后一个子单元的调用结果,所述子单元包括:所述被调用服务、所述子积木以及子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;
所述结果图为所述积木中各个所述子单元的调用结果;
所述自定义结果为由另一个结果包装器指示的服务调用结果。
10.根据权利要求9所述的服务构建方法,其特征在于,所述积木的属性值包括决策器,所述决策器用于指示是否需要调用所述积木的所述子单元,所述解析所述当前积木的属性值确定解析结果,包括:
根据所述当前积木的所述决策器判断是否继续解析所述当前积木;
若所述决策器的判断结果是不做任何决策,则继续解析;
若所述判断结果是自定义决策器,则继续解析所述自定义决策器指定的所述子单元。
11.根据权利要求10所述的服务构建方法,其特征在于,所述积木的属性值包括服务调用执行方式,所述执行方式包括:串行调用以及并行调用;
所述串行调用表示将所有或部分所述子单元按所述积木中的声明顺序依次调用,上一个子单元的输出作为下一个子单元的输入;
所述并行调用表示将所有或部分所述子单元同时进行调用,并获取所述子单元的调用结果;
所述解析所述当前积木的属性值确定解析结果,包括:
根据所述当前积木的服务调用执行方式确定所述子单元的调用方式。
12.根据权利要求11所述的服务构建方法,其特征在于,所述积木的属性值包括服务类型,所述服务类型用于指示所述积木是否接收参数以及所述积木的返回值类型,所述解析所述当前积木的属性值确定解析结果,包括:
若所述当前积木的所述服务类型为供给型,则所述当前积木不接收参数。
13.根据权利要求12所述的服务构建方法,其特征在于,所述解析所述当前积木的属性值确定解析结果,还包括:
若所述当前积木的所述服务类型不是所述供给型,则
所述根据所述当前积木的服务调用执行方式确定所述子单元的调用方式,包括:
若所述服务调用执行方式为串行调用,则把上一步调用结果作为当前调用的传入参数;
若所述服务调用执行方式为并行调用,则把所述积木中上下文定义的参数作为所述当前调用的传入参数。
14.根据权利要求1-3中任意一项所述的服务构建方法,其特征在于,所述方法还包括:
通过用户界面拖拽各个服务的图形化标识,以确定所述服务的所述预设逻辑次序;
定义所述调用模板的上下文传递参数;
根据所述服务、所述预设逻辑次序以及所述上下文传递参数确定所述调用模板。
15.根据权利要求1-3中任意一项所述的服务构建方法,其特征在于,在所述接收服务请求之前,还包括:
利用服务注册模型确定基本的业务逻辑单元;
将所述业务逻辑单元确定为服务,并注册到服务注册中心之中。
16.一种服务构建装置,其特征在于,包括:
接收模块,用于接收服务请求,所述服务请求包括服务积木标识;
处理模块,用于根据所述服务请求确定服务积木,所述服务积木包括:调用模板以及至少一个用于装载被调用服务的积木,所述调用模板用于编排所述积木以及所述被调用服务的预设逻辑次序;
所述处理模块,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定服务调用结果;
发送模块,用于发送所述服务调用结果。
17.根据权利要求16所述的服务构建装置,其特征在于,所述处理模块,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定服务调用结果,包括:
所述处理模块,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务;
所述处理模块,还用于根据所述调用模板确定各个所述被调用服务的调用流程;
所述处理模块,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果。
18.根据权利要求17所述的服务构建装置,其特征在于,所述调用流程包括所述被调用服务的预设逻辑次序以及执行所述被调用服务需要传递的参数,所述处理模块,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
所述处理模块,还用于根据所述预设逻辑次序以及所述参数执行所述被调用服务,确定所述服务调用结果。
19.根据权利要求16-18中任意一项所述的服务构建装置,其特征在于,所述被调用服务为业务逻辑单元。
20.根据权利要求17或18所述的服务构建装置,其特征在于,所述处理模块,还用于根据所述调用模板解析所述服务积木中的各个所述积木,以确定每个所述积木中的所述被调用服务,包括:
所述处理模块,还用于将所述调用模板中声明的第一个所述积木设置为当前积木;
所述处理模块,还用于解析所述当前积木的属性值以确定解析结果;根据所述解析结果确定所述当前积木的调用对象;判断所述调用对象的类型;
所述处理模块,还用于若所述类型为服务,则从服务注册中心中查找到对应的所述被调用服务;
所述处理模块,还用于继续解析所述调用模板中声明的下一个所述积木,直至解析完所述调用模板中声明的所有所述积木。
21.根据权利要求20所述的服务构建装置,其特征在于,所述积木还用于装载子积木,所述子积木与所述积木具有相同的组成结构形式;所述处理模块,还用于判断所述调用对象的类型之后,还包括:
所述处理模块,还用于若所述类型为子积木,则将所述子积木设置为当前积木;
所述处理模块,还用于重复步骤:解析所述当前积木的属性值以判断所述调用对象的类型,直至确定所述子积木中的所有所述被调用服务,返回父积木继续解析,所述父积木为装载所述子积木的所述积木。
22.根据权利要求21所述的服务构建装置,其特征在于,所述积木还用于装载子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;所述处理模块,还用于判断所述调用对象的类型之后,还包括:
所述处理模块,还用于若所述类型为子服务积木,则根据所述子服务积木中的调用模板确定所述子服务积木对应的积木;
所述处理模块,还用于将所述子服务积木的调用模板中声明的第一个积木设置为当前积木;
所述处理模块,还用于重复步骤:解析所述当前积木的属性值以判断所述调用对象的类型,直至确定所述子服务积木调用的所有被调用服务;
所述处理模块,还用于执行所述子服务积木调用的所有被调用服务,以确定所述子服务积木的调用结果;
所述处理模块,还用于将所述子服务积木的调用结果返回给所述服务积木,并继续解析所述调用模板中声明的下一个积木。
23.根据权利要求22所述的服务构建装置,其特征在于,所述积木包括结果包装器,所述结果包装器用于指示所述积木返回给所述调用模板的所述调用结果的数据类型,所述处理模块,还用于根据所述调用流程执行所述被调用服务,以确定所述服务调用结果,包括:
所述处理模块,还用于利用所述结果包装器获取所述被调用服务的调用结果;
所述处理模块,还用于根据所述调用流程中的对于所述结果包装器的设置参数确定所述结果包装器返回的所述调用结果的所述数据类型。
24.根据权利要求23所述的服务构建装置,其特征在于,所述数据类型包括:结果值、结果图以及自定义结果;
所述结果值为所述积木中最后一个子单元的调用结果,所述子单元包括:所述被调用服务、所述子积木以及子服务积木,所述子服务积木与所述服务积木具有相同的组成结构形式;
所述结果图为所述积木中各个所述子单元的调用结果;
所述自定义结果为由另一个结果包装器指示的服务调用结果。
25.根据权利要求24所述的服务构建装置,其特征在于,所述积木的属性值包括决策器,所述决策器用于指示是否需要调用所述积木的所述子单元,所述处理模块,还用于解析所述当前积木的属性值确定解析结果,包括:
所述处理模块,还用于根据所述当前积木的所述决策器判断是否继续解析所述当前积木;
所述处理模块,还用于若所述决策器的判断结果是不做任何决策,则继续解析;
所述处理模块,还用于若所述判断结果是自定义决策器,则继续解析所述自定义决策器指定的所述子单元。
26.根据权利要求25所述的服务构建装置,其特征在于,所述积木的属性值包括服务调用执行方式,所述执行方式包括:串行调用以及并行调用;
所述串行调用表示将所有或部分所述子单元按所述积木中的声明顺序依次调用,上一个子单元的输出作为下一个子单元的输入;
所述并行调用表示将所有或部分所述子单元同时进行调用,并获取所述子单元的调用结果;
所述处理模块,还用于解析所述当前积木的属性值确定解析结果,包括:
所述处理模块,还用于根据所述当前积木的服务调用执行方式确定所述子单元的调用方式。
27.根据权利要求26所述的服务构建装置,其特征在于,所述积木的属性值包括服务类型,所述服务类型用于指示所述积木是否接收参数以及所述积木的返回值类型,所述处理模块,还用于解析所述当前积木的属性值确定解析结果,包括:
所述处理模块,还用于若所述当前积木的所述服务类型为供给型,则所述当前积木不接收参数。
28.根据权利要求27所述的服务构建装置,其特征在于,所述处理模块,还用于解析所述当前积木的属性值确定解析结果,还包括:
所述处理模块,还用于若所述当前积木的所述服务类型不是所述供给型,则
所述处理模块,还用于根据所述当前积木的服务调用执行方式确定所述子单元的调用方式,包括:
所述处理模块,还用于若所述服务调用执行方式为串行调用,则把上一步调用结果作为当前调用的传入参数;
所述处理模块,还用于若所述服务调用执行方式为并行调用,则把所述积木中上下文定义的参数作为所述当前调用的传入参数。
29.根据权利要求16-18中任意一项所述的服务构建装置,其特征在于,还包括:
所述获取模块,还用于获取用户界面拖拽各个服务的图形化标识,
所述处理模块,还用于通过所述图形化标识确定所述服务的所述预设逻辑次序;
所述处理模块,还用于定义所述调用模板的上下文传递参数;
所述处理模块,还用于根据所述服务、所述预设逻辑次序以及所述上下文传递参数确定所述调用模板。
30.根据权利要求16-18中任意一项所述的服务构建装置,其特征在于,在所述获取模块,用于接收服务请求之前,还包括:
所述处理模块,还用于利用服务注册模型确定基本的业务逻辑单元;
所述处理模块,还用于将所述业务逻辑单元确定为服务,并注册到服务注册中心之中。
31.一种电子设备,其特征在于,包括:
处理器;以及,
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至14任一项所述的服务构建方法。
32.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14任一项所述的服务构建方法。
33.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-14中任意一项所述的服务构建方法。
CN202011338967.2A 2020-11-25 2020-11-25 服务构建方法、装置、电子设备以及存储介质 Pending CN113760226A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011338967.2A CN113760226A (zh) 2020-11-25 2020-11-25 服务构建方法、装置、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011338967.2A CN113760226A (zh) 2020-11-25 2020-11-25 服务构建方法、装置、电子设备以及存储介质

Publications (1)

Publication Number Publication Date
CN113760226A true CN113760226A (zh) 2021-12-07

Family

ID=78786066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011338967.2A Pending CN113760226A (zh) 2020-11-25 2020-11-25 服务构建方法、装置、电子设备以及存储介质

Country Status (1)

Country Link
CN (1) CN113760226A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106909368A (zh) * 2017-01-12 2017-06-30 华南理工大学 一种实现快速业务开发的服务端业务层逻辑架构
CN107133049A (zh) * 2017-05-23 2017-09-05 中国联合网络通信集团有限公司 基于通信的服务的处理方法和装置
CN110716748A (zh) * 2019-09-24 2020-01-21 深圳中集智能科技有限公司 业务处理方法、装置、计算机可读介质及电子设备
CN110780870A (zh) * 2019-10-29 2020-02-11 中国建设银行股份有限公司 一种业务执行方法、装置、设备及存储介质
CN111026367A (zh) * 2019-11-22 2020-04-17 金证财富南京科技有限公司 微服务编排方法、装置、终端设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106909368A (zh) * 2017-01-12 2017-06-30 华南理工大学 一种实现快速业务开发的服务端业务层逻辑架构
CN107133049A (zh) * 2017-05-23 2017-09-05 中国联合网络通信集团有限公司 基于通信的服务的处理方法和装置
CN110716748A (zh) * 2019-09-24 2020-01-21 深圳中集智能科技有限公司 业务处理方法、装置、计算机可读介质及电子设备
CN110780870A (zh) * 2019-10-29 2020-02-11 中国建设银行股份有限公司 一种业务执行方法、装置、设备及存储介质
CN111026367A (zh) * 2019-11-22 2020-04-17 金证财富南京科技有限公司 微服务编排方法、装置、终端设备及存储介质

Similar Documents

Publication Publication Date Title
US8572236B2 (en) Distributing services in graph-based computations
CN103069385B (zh) 用于动态加载基于图的计算的系统和方法
Posse et al. An executable formal semantics for UML-RT
CN106537426A (zh) 自动生成用于工作流程的执行序列
Börger et al. A method for verifiable and validatable business process modeling
Martin et al. A novel approach to decentralized workflow enactment
CN108171528B (zh) 一种归因方法及归因系统
KR102432807B1 (ko) 마이크로서비스 구조 재구성 방법 및 장치
US20160292581A1 (en) Minimized processing of streaming changes into a semantic reasoner
US8601454B2 (en) Device and method for automatically optimizing composite applications having orchestrated activities
CN116643854A (zh) 一种服务编排方法、装置、流程控制器及任务处理器
Lascu et al. Automatic deployment of component-based applications
CN111522623A (zh) 组件化软件多进程运行系统
US10547565B2 (en) Automatic determination and just-in-time acquisition of data for semantic reasoning
CN113760226A (zh) 服务构建方法、装置、电子设备以及存储介质
US8335215B2 (en) Process data for a data packet
Dumas et al. Event-based coordination of process-oriented composite applications
US9122461B2 (en) Method and system for iteratively partitioning and validating program trees into environments at visibility space granularity
Bracchi et al. Performability modeling of mobile software systems
Martins et al. A graph pattern based approach for automatic decomposition of IoT aware business processes
CN116719627B (zh) 数据处理方法、装置、设备及存储介质
Amoretti et al. A formalized framework for mobile cloud computing
CN113778642B (zh) 网络服务的调度方法、装置、智能终端及存储介质
US9235382B2 (en) Input filters and filter-driven input processing
US11983516B2 (en) Method for executing code portions on execution resources

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