CN110865854B - 一种支持热部署的接口调用编排方法 - Google Patents

一种支持热部署的接口调用编排方法 Download PDF

Info

Publication number
CN110865854B
CN110865854B CN201911095855.6A CN201911095855A CN110865854B CN 110865854 B CN110865854 B CN 110865854B CN 201911095855 A CN201911095855 A CN 201911095855A CN 110865854 B CN110865854 B CN 110865854B
Authority
CN
China
Prior art keywords
interface
calling
message
parameter
service
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
Application number
CN201911095855.6A
Other languages
English (en)
Other versions
CN110865854A (zh
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.)
Ustc Sinovate Software Co ltd
Original Assignee
Ustc Sinovate Software 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 Ustc Sinovate Software Co ltd filed Critical Ustc Sinovate Software Co ltd
Priority to CN201911095855.6A priority Critical patent/CN110865854B/zh
Publication of CN110865854A publication Critical patent/CN110865854A/zh
Application granted granted Critical
Publication of CN110865854B publication Critical patent/CN110865854B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种支持热部署的接口调用编排方法,涉及互联网技术领域。本发明包括如下步骤:S1:传入服务编码和初始入参,将初始入参保存至ConcurrentHashMap管理的参数集合中;S2:执行调用接口的自定义方法invokeService;S3:系统通过服务编码查询关联的接口模板列表;S4:按照接口顺序循环调用列表中的接口;S5:每个接口调用执行完成后执行其对应的参数解析脚本,并将解析出的参数放入ConcurrentHashMap管理的参数集合中;S6:判断接口模板列表调用是否完成;S7:将所有接口返回的报文拼成一个汇总报文;S8:执行服务对应的报文转换脚本对汇总报文进行转换,生成符合系统设计的报文内容。本发明能够更加灵活配置接口模板,支持接口变更后热部署,简化了开发和实施内容,提高研发效率。

Description

一种支持热部署的接口调用编排方法
技术领域
本发明属于互联网技术领域,特别是涉及一种支持热部署的接口调用编排方法。
背景技术
在系统集成方案设计过程中,系统平台中的接口众多,依赖关系复杂,通过接口交换的数据与接口调用必须遵循统一的接口模型进行设计。在方案实施过程中,需要与外围系统进行对接时,则需要外围系统按照系统集成建设方提供的接口标准协议进行相应的编码开发工作以提供符合要求的接口。而在实际的项目实施过程中,常常会因为各种各样的原因(如时间成本,工作量成本),相关的外围系统不会按照系统集成建设方提供的接口协议提供接口,而是提供他们现有的接口以节省时间和工作量,而这些现有的接口则是按照其他的标准开发而成的,这样集成系统设计开发与实施之间就出现了重大偏差,集中表现在接口适配问题,包括协议、出入参和接口数量等方面。
针对上述情况,目前行业内的普遍做法是在集成系统与外围系统之间引入接口平台,用于对接口协议和出入参进行转换,但这种方法增加系统集成建设的复杂度,占用更多资源,提升维护难度,同时带来了更多的风险,且这种方案在复杂的接口交互中也无能为力。
发明内容
本发明的目的在于提供一种支持热部署的接口调用编排方法,通过服务将多个接口模板组织在一起,设置接口模板调用顺序,使用通用缓存保存一个键值对集合,统一方法输入,使用多线程并发调用接口模板,基于xquery和groovy脚本实现对返回报文的解析和转换,解决了现有的系统集成建设困难、占用资源多、风险大的问题。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明为一种支持热部署的接口调用编排方法,包括如下步骤:
步骤S1:传入服务编码和初始入参,将初始入参保存至ConcurrentHashMap管理的参数集合中;
步骤S2:执行调用接口的自定义方法invokeService,将服务编码和参数集合作为入参;
步骤S3:系统通过invokeService方法参数中的服务编码查询关联的接口模板列表;
步骤S4:按照接口顺序循环调用列表中的接口,在调用前会根据该模块的属性,将动态变量替换成ConcurrentHashMap管理的参数集合中的实际的值,然后执行org.apache.http.impl.client.HttpClients类中的execute函数调用对端接口;
步骤S5:每个接口调用执行完成后执行其对应的参数解析脚本,并将解析出的参数放入ConcurrentHashMap管理的参数集合中,用以后续其他接口调用前替换掉动态变量;
步骤S6:判断接口模板列表调用是否完成;
若调用完成,则执行步骤S7;
若调用未完成,则返回执行步骤S4;
步骤S7:将所有接口返回的报文拼成一个汇总报文,汇总报文结构根据服务数据属性中的数据结构类型决定的XML或JSON;
步骤S8:执行服务对应的报文转换脚本对汇总报文进行转换,生成符合系统设计的报文内容。
优选地,所述步骤S3中,接口模板支持多种协议并能够设置失败重试次数和超时终止时长,所述接口模块属性通过系统管理界面进行人工编辑;所述属性包括接口名称、接口协议类型、接口地址、调用超时时长、失败重试次数、调用是否成功判断脚本、模拟返回报文和接口入参模板。
优选地,所述步骤S3中,服务与接口模板绑定时,需要设置多个接口模板的调用顺序、参数解析脚本和报文转换脚本,且脚本类型支持groovy和xquery。
优选地,所述步骤S4中,按照设定的接口顺序执行接口调用时,使用线程池为每一个调用的接口分配一个线程,若执行顺序一致,则这些接口同时执行;若接口顺序不一致,则顺序靠后的接口进入等待状态。
本发明具有以下有益效果:
本发明通过服务将多个接口模板组织在一起,设置接口模板调用顺序,使用通用缓存保存一个键值对集合,同一方法输入使多线程并发调用接口模板,基于xquery和groovy脚本实现对返回报文的解析和转换,更加灵活配置接口模板,支持接口变更后热部署,简化了开发和实施内容,提高研发效率。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一种支持热部署的接口调用编排方法流程图;
图2为本发明的人工设置好服务和接口模板的关系图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1所示,本发明为一种支持热部署的接口调用编排方法,包括如下步骤:
步骤S1:传入服务编码和初始入参,将初始入参保存至ConcurrentHashMap管理的参数集合中;使用ConcurrentHashMap对接口调用过程中的关键参数进行管理,ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,在保证效率同时也更加安全;
步骤S2:执行调用接口的自定义方法invokeService,将服务编码和参数集合作为入参;
步骤S3:系统通过invokeService方法参数中的服务编码查询关联的接口模板列表;
步骤S4:按照接口顺序循环调用列表中的接口,在调用前会根据该模块的“是否模拟调用”属性,在开发阶段“是否模拟调用”属性设为是,在实施阶段设置为否;若为否,则对接口模板中的接口报文进行替换操作,把其中的动态变量替换成ConcurrentHashMap管理的参数集合中实际的值,然后执行org.apache.http.impl.client.HttpClients类中的execute函数调用对端接口;
步骤S5:每个接口调用执行完成后执行其对应的参数解析脚本,并将解析出的参数放入ConcurrentHashMap管理的参数集合中,用以后续其他接口调用前替换掉动态变量;
步骤S6:判断接口模板列表调用是否完成;
若调用完成,则执行步骤S7;
若调用未完成,则返回执行步骤S4;
步骤S7:将所有接口返回的报文拼成一个汇总报文,汇总报文结构根据服务数据属性中的数据结构类型决定的XML或JSON;
步骤S8:执行服务对应的报文转换脚本对汇总报文进行转换,生成符合系统设计的报文内容。
请参阅图2所示,上述步骤开始前还需要对数据进行人工设置,具体的设置步骤如下:
步骤A1:人工设置好接口模板数据,在系统后台配置管理页面中新增一条或者多条接口模板数据,包括接口名称、接口协议类型、接口地址、调用超时时长、失败重试次数、调用是否成功判断脚本、是否模拟调用、模拟返回报文和接口入参模板;
步骤A2:人工设置好服务数据(服务的概念为:为完成某一功能需要调用的接口集合的最小单位),在系统后台配置管理页面中新增一条服务数据,包括服务编码、服务名称、数据结构类型(XML和JSON)、服务转换脚本;
步骤A3:人工设置好服务和接口模板的关联关系(服务与接口模板是一对多的关系),在系统后台配置管理页面中新增一条或者多条服务和接口模板的关联关系,包括接口模板执行顺序、中间参数解析脚本。
其中,步骤S3中,接口模板支持webservice、http等多种协议,接口模板支持多种协议并能够设置失败重试次数和超时终止时长,接口模块属性通过系统管理界面进行人工编辑,服务是调用外围接口实现某一功能的最小单元,开发人员在编码开发一个需要调用接口来完成的功能时,只需要将相关参数值保存到ConcurrentHashMap管理的参数集合中,然后执行调用接口的通用方法invokeService,将该服务对应的唯一标识服务编码及ConcurrentHashMap作为方法的参数即可;属性包括接口名称、接口协议类型、接口地址、调用超时时长、失败重试次数、调用是否成功判断脚本、模拟返回报文和接口入参模板;
其中,各项属性所表示的含义为:接口名称为接口提供方提供的接口名称;接口协议类型为接口的协议类型,如webservice、http等;接口地址为接口提供方提供的接口调用地址;调用超时时长为系统实际执行接口调用时等接口提供方响应接口的时长,等待时间超出超时时长后,则终止本次接口调用;调用是否成功判断脚本为系统在实际执行接口调用后用于判断本次接口调用是否成功;失败重试次数为系统实际执行接口调用时若操作失败后进行重试的次数;模拟返回报文为开发阶段开发人员用于模拟接口调用后得到的报文,方便编码及调试;接口入参模板为统一输入的核心,由静态文本和动态变量两部分组成。
静态文本为接口入参报文中固定不变的内容,动态变量为实际的调用参数,使用特殊符号标识,这里命名为特殊符号1,系统实际执行接口调用前会对进行接口入参模板进行扫描,若发现特殊符号标识的动态变量则从ConcurrentHashMap管理的入参集合中找到key与之相匹配的value进行替换。接口入参模板中还有另一种特殊符号,这里命名为特殊符号2,在动态变量替换完成后,进行对特殊符号2的扫描,若扫描到目标,则使用Saxon执行特殊符号2标识的文本内容。
其中,步骤S3中,服务与接口模板绑定时,需要设置多个接口模板的调用顺序、参数解析脚本和报文转换脚本,服务在执行过程中通过invokeService方法参数中的服务编码去查询到绑定的接口模板列表;获得接口模板列表后开始循环调用列表中的接口;循环过程中会按照设定的接口顺序执行接口调用,且脚本类型支持groovy和xquery,该脚本的作用是将从接口返回报文中解析出来的参数放入ConcurrentHashMap管理的参数集合中,方便其他接口作为动态入参值使用。
其中,步骤S4中,按照设定的接口顺序执行接口调用时,使用线程池为每一个调用的接口分配一个线程,若执行顺序一致,则这些接口同时执行,提高效率,缩短等待时间;若接口顺序不一致,则顺序靠后的接口进入等待状态,当每个接口调用执行完成后执行其对应的参数解析脚本,该脚本的作用是将从接口返回报文中解析出来的参数放入ConcurrentHashMap管理的参数集合中,方便其他接口作为动态入参值使用。
值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

Claims (4)

1.一种支持热部署的接口调用编排方法,其特征在于,包括如下步骤:
步骤S1:传入服务编码和初始入参,将初始入参保存至ConcurrentHashMap管理的参数集合中;
步骤S2:执行调用接口的自定义方法invokeService,将服务编码和参数集合作为入参;
步骤S3:系统通过invokeService方法参数中的服务编码查询关联的接口模板列表;
步骤S4:按照接口顺序循环调用列表中的接口,在调用前会根据该模块的属性,将动态变量替换成ConcurrentHashMap管理的参数集合中的实际的值,然后执行org.apache.http.impl.client.HttpClients类中的execute函数调用对端接口;
步骤S5:每个接口调用执行完成后执行其对应的参数解析脚本,并将解析出的参数放入ConcurrentHashMap管理的参数集合中,用以后续其他接口调用前替换掉动态变量;
步骤S6:判断接口模板列表调用是否完成;
若调用完成,则执行步骤S7;
若调用未完成,则返回执行步骤S4;步骤S7:将所有接口返回的报文拼成一个汇总报文,汇总报文结构根据服务数据属性中的数据结构类型决定的XML或JSON;步骤S8:执行服务对应的报文转换脚本对汇总报文进行转换,生成符合系统设计的报文内容。
2.根据权利要求1所述的一种支持热部署的接口调用编排方法,其特征在于,所述步骤S3中,接口模板支持多种协议并能够设置失败重试次数和超时终止时长,所述接口模块属性通过系统管理界面进行人工编辑;所述属性包括接口名称、接口协议类型、接口地址、调用超时时长、失败重试次数、调用是否成功判断脚本、模拟返回报文和接口入参模板。
3.根据权利要求1所述的一种支持热部署的接口调用编排方法,其特征在于,所述步骤S3中,服务与接口模板绑定时,需要设置多个接口模板的调用顺序、参数解析脚本和报文转换脚本,且脚本类型支持groovy和xquery。
4.根据权利要求1所述的一种支持热部署的接口调用编排方法,其特征在于,所述步骤S4中,按照设定的接口顺序执行接口调用时,使用线程池为每一个调用的接口分配一个线程,若执行顺序一致,则这些接口同时执行;若接口顺序不一致,则顺序靠后的接口进入等待状态。
CN201911095855.6A 2019-11-11 2019-11-11 一种支持热部署的接口调用编排方法 Active CN110865854B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911095855.6A CN110865854B (zh) 2019-11-11 2019-11-11 一种支持热部署的接口调用编排方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911095855.6A CN110865854B (zh) 2019-11-11 2019-11-11 一种支持热部署的接口调用编排方法

Publications (2)

Publication Number Publication Date
CN110865854A CN110865854A (zh) 2020-03-06
CN110865854B true CN110865854B (zh) 2023-03-31

Family

ID=69653912

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911095855.6A Active CN110865854B (zh) 2019-11-11 2019-11-11 一种支持热部署的接口调用编排方法

Country Status (1)

Country Link
CN (1) CN110865854B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112348458A (zh) * 2020-10-19 2021-02-09 湖南大唐先一科技有限公司 基于业务规则的流程模型匹配方法及系统
CN113297215B (zh) * 2021-05-13 2022-07-19 中国人民解放军军事科学院战争研究院 一种支持实时访问的三维剖分网格空间数据组织方法
CN114860834B (zh) * 2022-06-01 2024-03-26 北京字节跳动网络技术有限公司 一种关联查询请求的处理方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008052389A1 (fr) * 2006-11-02 2008-05-08 Zte Corporation Procédé et système de réalisation d'interfaces universelles dans le système de gestion de réseau
CN102291464A (zh) * 2011-08-29 2011-12-21 上海普元信息技术股份有限公司 BPM中业务流程动态生成Web Service的系统及方法
CN107277116A (zh) * 2017-05-27 2017-10-20 北京思特奇信息技术股份有限公司 一种可配置的客户端引擎及利用其调用服务的方法
WO2018006789A1 (zh) * 2016-07-04 2018-01-11 中兴通讯股份有限公司 一种参数校验方法和装置、以及网管服务器和计算机存储介质
CN108228149A (zh) * 2016-12-19 2018-06-29 北京京东尚科信息技术有限公司 一种可动态装配服务的app接口适配方法及装置
CN110427331A (zh) * 2019-09-03 2019-11-08 四川长虹电器股份有限公司 基于接口测试工具自动生成性能测试脚本的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8402064B2 (en) * 2010-02-01 2013-03-19 Oracle International Corporation Orchestration of business processes using templates
WO2015065398A1 (en) * 2013-10-30 2015-05-07 Hewlett-Packard Development Company, L.P. Application programable interface (api) discovery

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008052389A1 (fr) * 2006-11-02 2008-05-08 Zte Corporation Procédé et système de réalisation d'interfaces universelles dans le système de gestion de réseau
CN102291464A (zh) * 2011-08-29 2011-12-21 上海普元信息技术股份有限公司 BPM中业务流程动态生成Web Service的系统及方法
WO2018006789A1 (zh) * 2016-07-04 2018-01-11 中兴通讯股份有限公司 一种参数校验方法和装置、以及网管服务器和计算机存储介质
CN108228149A (zh) * 2016-12-19 2018-06-29 北京京东尚科信息技术有限公司 一种可动态装配服务的app接口适配方法及装置
CN107277116A (zh) * 2017-05-27 2017-10-20 北京思特奇信息技术股份有限公司 一种可配置的客户端引擎及利用其调用服务的方法
CN110427331A (zh) * 2019-09-03 2019-11-08 四川长虹电器股份有限公司 基于接口测试工具自动生成性能测试脚本的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于模型的云应用动态配置框架;梁超超等;《计算机科学》;20170415(第04期);全文 *
面向服务集成的自动化服务注册方法;李松犁等;《计算机应用与软件》;20160615(第06期);全文 *

Also Published As

Publication number Publication date
CN110865854A (zh) 2020-03-06

Similar Documents

Publication Publication Date Title
CN110865854B (zh) 一种支持热部署的接口调用编排方法
CN108804140B (zh) 一种批量指令解析方法、装置及设备
CN102096631B (zh) 接口测试方法及装置
CN110442396B (zh) 应用程序启动方法及装置、存储介质及电子设备
CN108304172B (zh) 一种web开发方法及web开发引擎
WO2020233369A1 (zh) 基于模拟端口改进软件集成系统的方法及相关设备
CN104821954B (zh) 一种跨平台远程过程调用方法
CN104021080A (zh) 基于自定义脚本的自动化测试系统
CN107241315B (zh) 银行网关接口的接入方法、装置及计算机可读存储介质
CN111459821A (zh) 一种基于TestNG的软件自动化单元测试方法
CN110188135B (zh) 文件生成方法及设备
CN111930365B (zh) 基于Qt的应用程序快速开发框架、开发方法及运行方法
CN105204917B (zh) 在应用程序启动时加载配置文件的方法及装置
CN112380255A (zh) 一种业务处理方法、装置、设备和存储介质
CN110609755A (zh) 跨区块链节点的消息处理方法及装置、设备、介质
CN104899134A (zh) 域名注册服务器自动化测试系统和方法
CN106600226A (zh) 用于优化流程管理系统的方法及装置
CN111242445B (zh) 基于配置生产线测试产品的方法、设备及可读存储介质
CN113204495A (zh) 基于b/s架构的自动化测试方法、装置、存储介质及设备
CN102486731B (zh) 增强软件的软件调用栈的可视化的方法、设备和系统
CN109190969B (zh) 称重设备管控方法、系统、称重设备管理中间件及介质
CN107977304B (zh) 一种系统调试方法和装置
CN113708971A (zh) 一种Openstack云平台的部署方法及相关装置
CN114297057A (zh) 一种自动化测试用例的设计及使用方法
CN111610964A (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