CN110704122A - 插件加载方法及装置 - Google Patents
插件加载方法及装置 Download PDFInfo
- Publication number
- CN110704122A CN110704122A CN201810749810.5A CN201810749810A CN110704122A CN 110704122 A CN110704122 A CN 110704122A CN 201810749810 A CN201810749810 A CN 201810749810A CN 110704122 A CN110704122 A CN 110704122A
- Authority
- CN
- China
- Prior art keywords
- plug
- target
- function
- information
- identification number
- 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
- 238000011068 loading method Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000004891 communication Methods 0.000 claims abstract description 21
- 230000006870 function Effects 0.000 claims description 240
- 238000004590 computer program Methods 0.000 claims description 18
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 2
- 230000007547 defect Effects 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 238000011161 development Methods 0.000 description 7
- 230000010354 integration Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000012827 research and development Methods 0.000 description 3
- 238000003339 best practice Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种插件加载方法及装置。所述方法应用于客户端,所述方法包括:接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号;根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号;根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。本发明实现了客户端为用户提供全天候的服务,避免了在新插件安装之后,需要重启整个服务来加载该新插件的弊端。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种插件加载方法及装置。
背景技术
随着软件行业的不断发展,敏捷开发方法已经逐渐成为软件开发市场的主流形势。其中,持续集成作为一个敏捷开发的最佳实践形式,其应用范围也在逐渐扩大。然而,如何将软件从“开发完成”迅速实现“上线发布”,在持续集成领域仍然是一个非常棘手的挑战。为了解决该问题,研发人员使用自动化的持续部署流水线,来代替人手工进行交付部署工作。
在实际应用中,研发人员通常会通过搭建部署流水线服务的平台,为研发团队提供流水线服务,主要的流水线功能由服务平台自身来实现。然而,每个研发团队对于流水线功能的需求不尽相同,一些针对具体业务场景的功能需求,需要用户上传安装定制化的插件,来实现具体业务场景的功能需求。例如,在编译打包环节,根据不同的程序开发语言就需要不同的编译打包过程实现程序逻辑。
目前,主流的持续部署工具Jenkins,正是通过这种支持插件化拓展的方式实现了其功能。Jenkins作为一种基于Java开发的持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。具体地,Jenkins的插件功能定义了一系列的拓展接口,即拓展点;用户可以根据具体业务场景需求,定制安装自身需要的插件。
然而,现有的持续集成工具,比如Jenkins,在新插件安装之后,需要重启整个服务来加载该新插件,给用户带来极大不便;比如,对于大型企业来说,持续部署平台需要为众多开发团队提供持续性的流水线服务,需要保证系统全天候运行,难以接受用户上传插件就需要重启服务器的缺陷。
发明内容
本发明实施例提供一种插件加载方法及装置,用以解决现有技术中持续集成工具在新插件安装之后,需要重启整个服务来加载该新插件的问题。
一方面,本发明实施例提供一种插件加载方法,应用于客户端,所述方法包括:
接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号;
根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号;
根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
另一方面,本发明实施例提供一种插件加载装置,应用于客户端,所述装置包括:
获取模块,用于接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号;
查询模块,用于根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号;
加载模块,用于根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
另一方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述插件加载方法中的步骤。
再一方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述插件加载方法中的步骤。
本发明实施例提供的插件加载方法及装置,接收到用户部署流水线的部署操作时,获取所部署的流水线中包括的第一目标功能的标识号,根据第一目标功能的标识号,从功能实现表中查询目标功能所属的第一目标插件的存储地址,并根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件,并创建实例提供给流水线执行线程。基于功能实现表的实时更新,当有新插件上传时,插件便可即时服务于流水线部署工作,而无需重启客户端或者插件仓库。本发明实现了客户端为用户提供全天候的服务,避免了在新插件安装之后,需要重启整个服务来加载该新插件的弊端。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的插件加载方法的流程示意图之一;
图2为本发明实施例提供的插件加载方法的流程示意图之二;
图3为本发明实施例的第二示例的示意图之一;
图4为本发明实施例的第二示例的示意图之二;
图5为本发明实施例的第三示例的应用实例的架构图;
图6为本发明实施例提供的插件加载装置的结构示意图。
图7为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例提供的一种插件加载方法的流程示意图。
如图1所示,本发明实施例提供的插件加载方法,应用于客户端,所述方法包括:
步骤101,接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号。
其中,本发明实施例中,客户端包括一用户界面(User Interface,UI),即用户的操作界面,包含应用程序,网页,智能穿戴设备等。客户端即为用户部署流水线提供服务的服务平台。
当客户端接收到用户创建新功能并部署流水线的部署操作时,确定所部署的流水线包括的目标功能。为了便于客户端以及与客户端通信连接的其他设备进行功能识别,本发明实施例中,每个功能包括一标识号,因此,需获取所部署的流水线包括的第一目标功能的标识号,并且根据第一目标功能的标识号,反向推出能够实现该目标功能的插件,即第一目标插件。
作为一种实现方式,可在客户端的UI界面提供用户选择的功能,当用户部署流水线时,可在UI界面选择所部署的流水线中包括的功能。
步骤102,根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号。
本步骤中,用于存储插件的插件信息的功能实现表可以设置在客户端本地,或者与客户端通信连接的其他设备中。
插件信息中至少包括每个插件的存储地址、插件所包括的功能的标识号;且功能实现表是实时更新的,当任意一插件的插件信息有所更新,或者新增、删减插件时,功能实现表都会更新,这样,在每次有新插件上传时,通过功能实现表的更新,插件便存储在功能实现表中并服务于流水线部署工作,而无需重启客户端或者插件仓库。
当确定流水线中所包括的第一目标功能的标识号时,从功能信息表中,查询该标识号对应的第一目标插件,并进一步确定第一目标插件的存储地址。
步骤103,根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
其中,当存储地址确定之后,通过客户端的流水线功能接口,从与所述客户端通信连接的插件仓库加载第一目标插件,并创建实例提供给流水线执行线程。
可以理解的是,加载插件即加载插件的实现类。本发明实施例中,上述加载插件的过程为实时加载,在部署流水线的过程中,根据流水线所需的目标插件,实时从插件仓库中加载目标插件。
本发明上述实施例中,接收到用户部署流水线的部署操作时,获取所部署的流水线中包括的第一目标功能的标识号,根据第一目标功能的标识号,从功能实现表中查询目标功能所属的第一目标插件的存储地址,并根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件,并创建实例提供给流水线执行线程。基于功能实现表的实时更新,当有新插件上传时,插件便可即时服务于流水线部署工作,而无需重启客户端或者插件仓库。本发明实现了客户端为用户提供全天候的服务,避免了在新插件安装之后,需要重启整个服务来加载该新插件的弊端;本发明解决了现有技术中持续集成工具在新插件安装之后,需要重启整个服务来加载该新插件的问题。
可选地,本发明实施例中,所述插件信息还包括:插件包括的功能接口信息;
所述根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址的步骤,包括:
查询实时更新的功能实现表中,与所述第一目标功能的标识号对应的功能接口信息、所述功能接口信息中的目标功能接口以及所述目标功能接口所属的第一目标插件;
查询所述第一目标插件的插件信息中的存储地址。
其中,功能接口信息包括插件所支持的功能接口。功能实现表中,与功能的标识号对应的是功能接口信息,在查询存储地址的过程中,客户端首先根据第一目标功能的标识号,确定对应的功能接口信息;再查找功能接口信息中的目标功能接口所属的目标插件,这样便确定了第一目标插件;最后根据插件信息,查询第一目标插件的存储地址。
可以理解的是,存储地址也可以为客户端本地;当存储地址为客户端本地时,客户端直接从本地加载第一目标插件即可。
可选地,本发明实施例中,所述从与所述客户端通信连接的插件仓库加载所述第一目标插件的步骤,包括:
通过所述目标功能接口,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
其中,当确定第一目标插件的存储地址之后,需通过目标功能接口从插件仓库中加载第一目标插件。
作为另一实施例,参见图2,本发明提供的插件加载方法,应用于客户端,所述方法包括:
步骤201,接收用户上传的第二目标插件。
其中,用户可通过客户端向插件仓库中上传新的插件,即第二目标插件。
步骤202,获取所述第二目标插件的插件信息;所述第二目标插件的插件信息中至少包括所述第二目标插件的功能接口信息。
其中,功能接口信息即第二目标插件所支持的功能接口。当用户上传一个插件信息完全未知的第二目标插件时,基于Java的反射机制,客户端可以通过运行该插件而获得该插件的所有属性和方法,即插件信息。
步骤203,将所述第二目标插件的插件信息存储至所述功能实现表中,并将所述第二目标插件存储至所述插件仓库。
具体地,将第二插件的插件信息更新至功能实现表中,并将第二目标插件存储至插件仓库中。
第二目标插件的插件信息中还包括存储地址、所支持的功能的标识号;由于功能实现表是实时更新的,第二目标插件完成上传操作时,通过功能实现表的更新,使得第二目标插件可服务于流水线部署工作,而无需重启客户端或者插件仓库。
步骤204,接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第二目标插件包括的第二目标功能的标识号。
其中,当用户所部署的流水线中包括第二目标功能的标识号时,根据第二目标功能的标识号可确定该流水线中包括第二目标插件。
步骤205,根据所述第二目标功能的标识号,从实时更新的功能实现表中查询所述第二目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的第二目标功能的标识号。
当确定流水线中所包括的第二目标功能的标识号时,从功能信息表中,查询该标识号对应的第二目标插件,并通过第二目标插件的其他插件信息(存储地址、插件所包括的第二目标功能的标识号),进一步确定第二目标插件的存储地址。
步骤206,根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第二目标插件。
其中,当存储地址确定之后,通过客户端的流水线功能接口,从与所述客户端通信连接的插件仓库加载第二目标插件,并创建实例提供给流水线执行线程。
可选地,本发明实施例中,所述将所述第二目标插件存储至所述插件仓库的步骤之后,所述方法还包括:
将所述第二目标插件在所述插件仓库的存储地址增加至所述第二目标插件的插件信息中,并更新所述功能实现表。
其中,完成第二目标插件的存储操作之后,及时将存储地址更新到功能实现表中,便于在后续部署流水线时查找第二目标插件,保持功能实现表的实时性。
可选地,本发明实施例中,所述更新所述功能实现表的步骤之前,所述方法还包括:
将与所述功能接口信息对应的功能标识号,添加至所述功能实现表中。
具体地,在更新功能实现表之前,还需要将所述功能接口信息对应的功能标识号,添加至功能实现表的插件信息中。
作为第一示例,功能信息表可如以下表1所示:
表1:
其中,以M1为例,M1的插件信息中包括:
功能的标识号T1、功能接口信息P1以及存储地址D1。
可选地,本发明实施例中,所述方法还包括:
接收到用户对第三目标插件的删除操作时,从所述插件仓库中将所述第三目标插件删除,并删除所述功能实现表中所述第三目标插件的插件信息。
其中,接收到用户对任一插件(第三目标插件)的删除操作时,从插件仓库中将第三目标插件删除,并将第三目标插件的插件信息从功能信息表中删除。
可选地,本发明实施例中,所述接收用户上传的第二目标插件的步骤之前,所述方法还包括:
接收创建第二目标插件的创建操作时,获取用户所选择的所述第二目标插件所包括的第二目标功能的标识号;
根据所述第二目标功能的标识号,查询与所述第二目标功能对应的实现类;
将每个所述实现类的数据包打包,形成所述第二目标插件。
其中,用户所上传的第二目标插件,可以是由客户端根据用户所需要的新功能生成的。具体地,用户从UI界面选择第二目标插件所包括的第二目标功能的标识号,客户端根据用户所选择的第二目标功能的标识号,查询与所述第二目标功能对应的实现类,并将每个所述实现类的数据包打包,这样就形成了所述第二目标插件。
以拓展源码管理功能为例,假设流水线服务平台本地实现的源码管理功能仅支持了GitLab、GitHub以及SVN这些管理方式,而用户此时需要从一个FTP目录中下载源码。用户则需要自己开发一个从FTP目录中下载源码的插件来拓展功能。在插件中需要引入源码下载功能的接口,并在该接口的实现类中编写从FTP目录中下载源码的业务逻辑,最后打包上传这个插件,用户就可以在流水线的源码管理方式中选择自定义实现的从FTP目录下载的方式了。
本发明上述实施例中,接收用户上传的第二目标插件时,将第二目标插件的插件信息存储至所述功能实现表中,并将所述第二目标插件存储至所述插件仓库;后续接收到用户部署流水线中包括第二目标插件时,获取所部署的流水线中包括的第二目标功能的标识号,根据第二目标功能的标识号,从功能实现表中查询目标功能所属的第二目标插件的存储地址,并根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第二目标插件,并创建实例提供给流水线执行线程。基于功能实现表的实时更新,当有新插件上传时,插件便可即时服务于流水线部署工作,而无需重启客户端或者插件仓库。本发明实现了客户端为用户提供全天候的服务,避免了在新插件安装之后,需要重启整个服务来加载该新插件的弊端。
作为本发明实施例的另一个方面,部署流水线过程中,通常会对流水线有新功能需求,本发明实施例中,还提供了插件的可拓展功能接口。
作为第二示例,参见图3,当用户需要一个新功能时,从UI界面选择新功能包括的功能的标识号,比如用户为功能拓展接口选择了A、B、C三个功能,则客户端从功能实现表中查找与A、B、C分别对应的功能方法实现类(即插件实现类),并将每个所述插件的数据包打包,即形成了新的流水线。将该流水线包括的插件上传至插件仓库,客户端便可为用户提供该流水线的业务逻辑了。
上述动态加载插件是基于Java的反射机制的背景实现的。Java的反射机制是指程序的运行状态中,对于任意一个对象(功能),可获知该对象的所有属性和方法等信息,基于此机制,可以在加载或使用程序编译期间,使用插件信息未知的实现类。也就是说,Java程序可以加载一个在运行过程中才得知名称的实现类,并生产对象实体。用户只需提供所需要的功能的标识号,接收客户端提供的实现类,加载后Java程序运行此实现类;并在运行过程通过Java的反射机制获知该实现类的信息。
进一步地,参见图4,图4中为功能实现表的字段示例;其中,interface-class字段保存功能的接口信息;function-name字段保存该功能用于客户端显示的功能名称;is-local字段用来保存该接口的存储地址;implement-class字段保存了该接口实现类的类名。当用户上传额一个插件实现了n个功能接口时,就会在数据库的功能实现表中新增n条记录。在创建流水线的过程中,会根据功能实现表中实现的功能展示给用户。用户选择需要的功能进行流水线的配置,流水线的记录表中会记录所使用功能的id(标识号)。
作为第三示例,参见图5,图5所示为插件加载方法的应用实例。
图5中,流水线服务平台包括客户端、流水线管理模块、流水线执行线程池、本地实现功能模块;客户端分别与数据库、插件仓库通信连接。
功能实现表存储在数据库中,插件存储在插件仓库中。
流水线功能加载器根据数据库中的实现类配置,加载本地或插件仓库中的实现类,并创建实例提供给流水线执行线程。
客户端主要包括:插件管理模块、流水线功能加载器模块以及流水线功能接口模块。插件管理模块负责实现插件的上传与删除功能,并在数据库中维护插件的记录信息,每个插件仓库中的插件都在数据库中有一条相应的记录。流水线功能接口模块中定义了流水线相关功能的标准接口,本地和插件中的实现类依赖该接口,并实现了接口中定义的方法。
图5主要包括以下过程:
1、用户上传插件。
2、插件管理模块将新增的插件信息存储至数据库的功能实现表中。
3、插件管理模块将新增的插件上传至插件仓库中。
4、用户创建新功能流水线并执行。
上述步骤中,用户先通过插件管理模块上传插件到插件仓库中,插件管理模块会在数据库中新增一条插件信息。然后用户通过流水线管理模块新增一条使用自定义插件实现的新功能流水线,并提交执行。
5、流水线管理模块将新增流水线信息存储至数据库中。
6、流水线执行线程池执行流水线管理模块发送的流水线信息。
7、流水线功能加载器从数据库中查询流水线所需要的实现类(插件)。
8、流水线功能加载器通过与上述插件对应的流水线功能接口,加载插件。
9、流水线功能加载器将插件反馈至流水线执行线程池,使流水线执行线程池执行该流水线的实例。
进一步地,上述步骤6至步骤9,流水线功能加载器会先查询数据库中的实现类信息,然后根据该信息加载插件仓库中的实现类,并将该实现类的实例返回给流水线执行线程池。流水线执行线程池调用流水线功能加载器返回的实例中的方法执行流水线具体业务逻辑。
以上介绍了本发明实施例提供的插件加载方法,下面将结合附图介绍本发明实施例提供的插件加载装置。
参见图6,本发明实施例提供了一种插件加载装置,应用于客户端,所述装置包括:
获取模块601,用于接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号。
其中,本发明实施例中,客户端包括一用户界面(User Interface,UI),即用户的操作界面,包含应用程序,网页,智能穿戴设备等。客户端即为用户部署流水线提供服务的服务平台。
当客户端接收到用户创建新功能并部署流水线的部署操作时,确定所部署的流水线包括的目标功能。为了便于客户端以及与客户端通信连接的其他设备进行功能识别,本发明实施例中,每个功能包括一标识号,因此,需获取所部署的流水线包括的第一目标功能的标识号,并且根据第一目标功能的标识号,反向推出能够实现该目标功能的插件,即第一目标插件。
作为一种实现方式,可在客户端的UI界面提供用户选择的功能,当用户部署流水线时,可在UI界面选择所部署的流水线中包括的功能。
查询模块602,用于根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号。
其中,用于存储插件的插件信息的功能实现表可以设置在客户端本地,或者与客户端通信连接的其他设备中。
插件信息中至少包括每个插件的存储地址、插件所包括的功能的标识号;且功能实现表是实时更新的,当任意一插件的插件信息有所更新,或者新增、删减插件时,功能实现表都会更新,这样,在每次有新插件上传时,通过功能实现表的更新,插件便存储在功能实现表中并服务于流水线部署工作,而无需重启客户端或者插件仓库。
当确定流水线中所包括的第一目标功能的标识号时,从功能信息表中,查询该标识号对应的第一目标插件,并进一步确定第一目标插件的存储地址。
加载模块603,用于根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
其中,当存储地址确定之后,通过客户端的流水线功能接口,从与所述客户端通信连接的插件仓库加载第一目标插件,并创建实例提供给流水线执行线程。
可以理解的是,加载插件即加载插件的实现类。本发明实施例中,上述加载插件的过程为实时加载,在部署流水线的过程中,根据流水线所需的目标插件,实时从插件仓库中加载目标插件。
可选地,本发明实施例中,所述插件信息还包括:插件包括的功能接口信息;
所述查询模块602包括:
第一查询子模块,用于查询实时更新的功能实现表中,与所述第一目标功能的标识号对应的功能接口信息、所述功能接口信息中的目标功能接口以及所述目标功能接口所属的第一目标插件;
第二查询子模块,用于查询所述第一目标插件的插件信息中的存储地址。
可选地,本发明实施例中,所述装置还包括:
上传模块,用于接收用户上传的第二目标插件;
获取所述第二目标插件的插件信息;
将所述第二目标插件的插件信息存储至所述功能实现表中,并将所述第二目标插件存储至所述插件仓库。
可选地,本发明实施例中,所述装置还包括:
更新模块,用于将所述第二目标插件在所述插件仓库的存储地址增加至所述第二目标插件的插件信息中,并更新所述功能实现表。
可选地,本发明实施例中,所述装置还包括:
添加模块,用于将与所述功能接口信息对应的功能标识号,添加至所述功能实现表中。
可选地,本发明实施例中,所述装置还包括:
删除模块,用于接收到用户对第三目标插件的删除操作时,从所述插件仓库中将所述第三目标插件删除,并删除所述功能实现表中所述第三目标插件的插件信息。
可选地,本发明实施例中,所述装置还包括:
插件生成模块,用于接收创建第二目标插件的创建操作时,获取用户所选择的所述第二目标插件所包括的第二目标功能的标识号;
根据所述第二目标功能的标识号,查询与所述第二目标功能对应的实现类;
将每个所述实现类的数据包打包,形成所述第二目标插件。
本发明上述实施例中,接收到用户部署流水线的部署操作时,获取模块601获取所部署的流水线中包括的第一目标功能的标识号,查询模块602根据第一目标功能的标识号,从功能实现表中查询目标功能所属的第一目标插件的存储地址,加载模块603根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件,并创建实例提供给流水线执行线程。基于功能实现表的实时更新,当有新插件上传时,插件便可即时服务于流水线部署工作,而无需重启客户端或者插件仓库。本发明实现了客户端为用户提供全天候的服务,避免了在新插件安装之后,需要重启整个服务来加载该新插件的弊端。
图7示出了本发明又一实施例提供的一种电子设备的结构示意图。
参见图7,本发明实施例提供的电子设备,所述电子设备包括存储器(memory)71、处理器(processor)72、总线73以及存储在存储器71上并可在处理器上运行的计算机程序。其中,所述存储器71、处理器72通过所述总线73完成相互间的通信。
所述处理器72用于调用所述存储器71中的程序指令,以执行所述计算机程序时实现如图1的方法。
在另一种实施方式中,所述处理器执行所述计算机程序时实现如下方法:
接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号;
根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号;
根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
本发明实施例提供的电子设备,可用于执行上述方法实施例的方法对应的程序,本实施不再赘述。
本发明实施例提供的电子设备,通过所述处理器执行所述计算机程序时,实现在接收到用户部署流水线的部署操作时,获取所部署的流水线中包括的第一目标功能的标识号,根据第一目标功能的标识号,从功能实现表中查询目标功能所属的第一目标插件的存储地址,并根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件,并创建实例提供给流水线执行线程。基于功能实现表的实时更新,当有新插件上传时,插件便可即时服务于流水线部署工作,而无需重启客户端或者插件仓库。本发明实现了客户端为用户提供全天候的服务,避免了在新插件安装之后,需要重启整个服务来加载该新插件的弊端。
本发明又一实施例提供的一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如图1的步骤。
在另一种实施方式中,所述计算机程序被处理器执行时实现如下方法:
接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号;
根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号;
根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
本发明实施例提供的非暂态计算机可读存储介质,所述计算机程序被处理器执行时实现上述方法实施例的方法,本实施不再赘述。
本发明实施例提供的非暂态计算机可读存储介质,接收到用户部署流水线的部署操作时,获取所部署的流水线中包括的第一目标功能的标识号,根据第一目标功能的标识号,从功能实现表中查询目标功能所属的第一目标插件的存储地址,并根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件,并创建实例提供给流水线执行线程。基于功能实现表的实时更新,当有新插件上传时,插件便可即时服务于流水线部署工作,而无需重启客户端或者插件仓库。本发明实现了客户端为用户提供全天候的服务,避免了在新插件安装之后,需要重启整个服务来加载该新插件的弊端。
本发明又一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述计算机程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:
接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号;
根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号;
根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种插件加载方法,应用于客户端,其特征在于,所述方法包括:
接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号;
根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号;
根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
2.根据权利要求1所述的方法,其特征在于,所述插件信息还包括:插件包括的功能接口信息;
所述根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址的步骤,包括:
查询实时更新的功能实现表中,与所述第一目标功能的标识号对应的功能接口信息、所述功能接口信息中的目标功能接口以及所述目标功能接口所属的第一目标插件;
查询所述第一目标插件的插件信息中的存储地址。
3.根据权利要求2所述的方法,其特征在于,所述方法包括:
接收用户上传的第二目标插件;
获取所述第二目标插件的插件信息;
将所述第二目标插件的插件信息存储至所述功能实现表中,并将所述第二目标插件存储至所述插件仓库。
4.根据权利要求3所述的方法,其特征在于,所述将所述第二目标插件存储至所述插件仓库的步骤之后,所述方法还包括:
将所述第二目标插件在所述插件仓库的存储地址增加至所述第二目标插件的插件信息中,并更新所述功能实现表。
5.根据权利要求4所述的方法,其特征在于,所述更新所述功能实现表的步骤之前,所述方法还包括:
将与所述功能接口信息对应的功能标识号,添加至所述功能实现表中。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收到用户对第三目标插件的删除操作时,从所述插件仓库中将所述第三目标插件删除,并删除所述功能实现表中所述第三目标插件的插件信息。
7.根据权利要求3所述的方法,其特征在于,所述接收用户上传的第二目标插件的步骤之前,所述方法还包括:
接收创建第二目标插件的创建操作时,获取用户所选择的所述第二目标插件所包括的第二目标功能的标识号;
根据所述第二目标功能的标识号,查询与所述第二目标功能对应的实现类;
将每个所述实现类的数据包打包,形成所述第二目标插件。
8.一种插件加载装置,应用于客户端,其特征在于,所述装置包括:
获取模块,用于接收到用户部署流水线的部署操作时,获取所部署的流水线中待加载的第一目标插件包括的第一目标功能的标识号;
查询模块,用于根据所述第一目标功能的标识号,从实时更新的功能实现表中查询所述第一目标插件的存储地址;其中,所述功能实现表中包括插件的插件信息,所述插件信息至少包括存储地址、插件所包括的功能的标识号;
加载模块,用于根据所述存储地址,从与所述客户端通信连接的插件仓库加载所述第一目标插件。
9.一种电子设备,其特征在于,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的插件加载方法中的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的插件加载方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810749810.5A CN110704122A (zh) | 2018-07-10 | 2018-07-10 | 插件加载方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810749810.5A CN110704122A (zh) | 2018-07-10 | 2018-07-10 | 插件加载方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110704122A true CN110704122A (zh) | 2020-01-17 |
Family
ID=69192444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810749810.5A Pending CN110704122A (zh) | 2018-07-10 | 2018-07-10 | 插件加载方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704122A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559026A (zh) * | 2020-12-23 | 2021-03-26 | 南方电网深圳数字电网研究院有限公司 | 基于api接口的原生能力拓展方法、设备及存储介质 |
CN113190286A (zh) * | 2021-04-27 | 2021-07-30 | 深圳市华磊迅拓科技有限公司 | 动态远程加载功能插件的mes系统、加载方法、终端及介质 |
CN113391852A (zh) * | 2021-06-07 | 2021-09-14 | 广州通达汽车电气股份有限公司 | 一种平台软件扩展方法及装置 |
CN113542796A (zh) * | 2020-04-22 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 视频评测方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895851A (zh) * | 2010-06-30 | 2010-11-24 | 卓望数码技术(深圳)有限公司 | 一种插件式无线增值业务平台及其管理方法 |
CN104049986A (zh) * | 2013-03-14 | 2014-09-17 | 腾讯科技(深圳)有限公司 | 插件加载方法及装置 |
CN104932887A (zh) * | 2015-06-12 | 2015-09-23 | 北京京东尚科信息技术有限公司 | 一种平台系统的插件管理方法和平台系统 |
CN105373396A (zh) * | 2015-08-14 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 插件平台中的插件更新方法和装置 |
-
2018
- 2018-07-10 CN CN201810749810.5A patent/CN110704122A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895851A (zh) * | 2010-06-30 | 2010-11-24 | 卓望数码技术(深圳)有限公司 | 一种插件式无线增值业务平台及其管理方法 |
CN104049986A (zh) * | 2013-03-14 | 2014-09-17 | 腾讯科技(深圳)有限公司 | 插件加载方法及装置 |
CN104932887A (zh) * | 2015-06-12 | 2015-09-23 | 北京京东尚科信息技术有限公司 | 一种平台系统的插件管理方法和平台系统 |
CN105373396A (zh) * | 2015-08-14 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 插件平台中的插件更新方法和装置 |
Non-Patent Citations (1)
Title |
---|
张建武: "《Windows95的安装过程》", 人民邮电出版社, pages: 22 - 23 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113542796A (zh) * | 2020-04-22 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 视频评测方法、装置、计算机设备和存储介质 |
CN113542796B (zh) * | 2020-04-22 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 视频评测方法、装置、计算机设备和存储介质 |
CN112559026A (zh) * | 2020-12-23 | 2021-03-26 | 南方电网深圳数字电网研究院有限公司 | 基于api接口的原生能力拓展方法、设备及存储介质 |
CN112559026B (zh) * | 2020-12-23 | 2024-05-14 | 南方电网数字平台科技(广东)有限公司 | 基于api接口的原生能力拓展方法、设备及存储介质 |
CN113190286A (zh) * | 2021-04-27 | 2021-07-30 | 深圳市华磊迅拓科技有限公司 | 动态远程加载功能插件的mes系统、加载方法、终端及介质 |
CN113391852A (zh) * | 2021-06-07 | 2021-09-14 | 广州通达汽车电气股份有限公司 | 一种平台软件扩展方法及装置 |
CN113391852B (zh) * | 2021-06-07 | 2024-06-04 | 广州通达汽车电气股份有限公司 | 一种平台软件扩展方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704122A (zh) | 插件加载方法及装置 | |
WO2018036342A1 (zh) | 基于csar的模型文件的可视化设计方法及装置 | |
CN107807815B (zh) | 分布式处理任务的方法和装置 | |
US20140026120A1 (en) | Unit testing an enterprise javabeans (ejb) bean class | |
US10140350B2 (en) | Bi-directional synchronization of data between a product lifecycle management (PLM) system and a source code management (SCM) system | |
US10621524B2 (en) | Exporting hierarchical data from a source code management (SCM) system to a product lifecycle management (PLM) system | |
CN111068328A (zh) | 游戏广告配置表格的生成方法、终端设备及介质 | |
CN111104108B (zh) | 一种显示界面wpf的生成方法及装置 | |
CN112256318B (zh) | 一种用于依赖产品的构建方法及设备 | |
CN113821249A (zh) | 项目开发配置的方法、装置、电子设备和可读存储介质 | |
CN114546588A (zh) | 任务的部署方法、装置、存储介质及电子装置 | |
CN112596854A (zh) | 一种持续集成流水线运行的方法和装置 | |
US10693780B2 (en) | Creating endpoints | |
US11720476B2 (en) | Automated end-to-end testing platform with dynamic container configuration | |
CN113495723B (zh) | 一种调用功能组件的方法、装置及存储介质 | |
CN114936152A (zh) | 应用测试方法及设备 | |
CN106990978B (zh) | 从产品生命周期管理(plm)系统向源代码管理(scm)系统导出分层数据 | |
CN115102948A (zh) | 地图瓦片的自动下载方法、装置、设备以及存储介质 | |
CN113377368A (zh) | 项目开发方法、装置、服务器及存储介质 | |
CN113377346A (zh) | 集成环境搭建方法、装置、电子设备及存储介质 | |
CN113011858A (zh) | 审计项目配置、执行方法和装置 | |
CN112783515A (zh) | 插件的控制方法和装置、存储介质 | |
CN113806327A (zh) | 一种数据库设计方法、装置及相关设备 | |
CN104808985B (zh) | 应用程序中对象的管理方法及装置 | |
CN113805878B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200117 |