CN115718604A - 一种动态拓展系统及方法 - Google Patents

一种动态拓展系统及方法 Download PDF

Info

Publication number
CN115718604A
CN115718604A CN202211470124.7A CN202211470124A CN115718604A CN 115718604 A CN115718604 A CN 115718604A CN 202211470124 A CN202211470124 A CN 202211470124A CN 115718604 A CN115718604 A CN 115718604A
Authority
CN
China
Prior art keywords
plug
module
unit
management module
dynamic expansion
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
CN202211470124.7A
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.)
Harbin Hailnke Information Technology Co ltd
Original Assignee
Harbin Hailnke 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 Harbin Hailnke Information Technology Co ltd filed Critical Harbin Hailnke Information Technology Co ltd
Priority to CN202211470124.7A priority Critical patent/CN115718604A/zh
Publication of CN115718604A publication Critical patent/CN115718604A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供一种动态拓展系统及方法,涉及计算机技术领域,所述系统包括插件端和平台端,插件端包括打包模块及插件;平台端包括上传模块、管理模块及运维模块;插件用于拓展所述平台端的功能;打包模块用于将插件生成插件安装包;上传模块用于将插件安装包上传至管理模块;管理模块用于加载并安装插件安装包;运维模块用于获取并调用管理模块的已安装插件的数据信息。本发明通过运维模块调用插件,使插件之间的关联性低,通过打包模块、上传模块、管理模块及运维模块的顺次应用,形成插件的加载安装到投入系统使用的完整闭环流程,在系统运行时进行插件安装及使用的操作,且不需要修改系统的核心代码,实现自动更新提高了动态拓展系统的拓展性。

Description

一种动态拓展系统及方法
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种动态拓展系统及方法。
背景技术
软件系统开发就是根据企业的具体情况、具体要求来进行设计软件系统,提供相应的个性化开发服务,随着科技的发展及中坚企业的崛起,企业的信息化水平不断提高,已经有很多企业意识到了使用专用软件系统可以大大提高资金使用率、员工的工作效率,还可以降低成本、同现有业务接轨。
但是,现有的软件系统已经满足不了社会的业务需求。现有技术在开发软件系统时,因为考虑系统的稳定等问题,默认设置需要重启软件系统才可以重新加载读取软件系统内存中的配置文件,所以,软件系统为了更新业务功能,在安装插件时,插件仅仅是安装在了硬盘里,软件系统不能直接将插件加载到系统内存中,也就是不能直接使用插件的功能,需要人为手动重启软件系统才能完成插件的使用,不能自动更新升级,导致软件系统的拓展能力差。
发明内容
本发明解决的问题是需要人为手动重启软件系统才能完成插件的使用,不能自动更新升级,导致软件系统的拓展能力差。
为解决上述问题,本发明提供一种动态拓展系统及方法。
第一方面,本发明提供了一种动态拓展系统,包括:插件端和平台端,插件端和平台端通讯连接,插件端包括打包模块及插件,打包模块与插件通讯连接;平台端包括上传模块、管理模块及运维模块,上传模块、管理模块与运维模块依次通讯连接;
插件用于拓展平台端的功能;
打包模块用于将插件生成插件安装包;
上传模块用于将插件安装包上传至管理模块;
管理模块用于加载并安装插件安装包;
运维模块用于获取并调用管理模块的已安装插件的数据信息。
可选地,管理模块包括预加载单元,预加载单元用于预加载插件安装包,并根据预设信息,选择插件安装包的安装方式。
可选地,管理模块还包括插件管理单元,插件管理单元用于对已安装插件进行卸载、启动与停止操作。
可选地,运维模块包括虚拟机单元和插件运维单元,虚拟机单元和插件运维单元通讯连接,虚拟机单元集成类加载器,类加载器用于获取已安装插件的数据信息,并将数据信息上传至插件运维单元,插件运维单元用于调用数据信息;类加载器还用于实现自定义功能。
可选地,插件包括Flyway组件,Flyway组件用于独立加载插件的初始化数据。
可选地,平台端还包括插件生态圈模块,插件生态圈模块与管理模块通讯连接,生态圈模块包括获取单元、解析单元、兼容单元及输出单元;
获取单元用于获取生态圈业务需求数据和至少一个生态圈插件;
解析单元用于解析生态圈插件,得到至少一个生态圈插件对应的依赖及依赖信息,依赖信息包括依赖数据及依赖版本;
兼容单元用于遍历依赖信息,当依赖数据唯一时,保留依赖数据唯一的依赖;当至少两个依赖数据相同时,保留依赖版本高的依赖;
输出单元用于将依赖数据唯一的依赖和依赖版本高的依赖输出为一个生态圈部署包,并上传至管理模块。
可选地,平台端还包括插件监听模块,插件监听模块分别与管理模块和运维模块通讯连接,插件监听模块集成PluginListener接口,用于监听插件及已安装插件的状态。
可选地,平台端还包括多个插件接口,插件接口与管理模块通讯连接,插件接口包括定义单元和调用单元,定义单元用于根据指定插件的功能定义插件接口,调用单元用于调用指定插件。
可选地,平台端还包括集成字典模块,集成字典模块与管理模块通讯连接,集成字典模块用于集成平台端基本运行的底层组件。
本发明通过打包模块,将拓展平台端功能的插件打包成平台端管理模块可识别的插件安装包,并通过平台端的上传模块上传至管理模块;通过管理模块,进行插件的加载安装,再通过运维模块随时调用安装好的插件的功能,使插件之间的独立性增强、关联性降低;通过打包模块、上传模块、管理模块及运维模块的顺次应用,形成插件的加载安装到投入系统使用的完整闭环流程,此过程在平台端运行时执行,不需要重启平台端也不需要更改系统的核心代码,即可使平台端集成插件的功能,提高了动态拓展系统的拓展性。
第二方面,本发明提供了一种动态拓展方法,基于上述的动态拓展系统实现,包括如下步骤:
获取插件端内的插件,插件用于拓展平台端的功能;
通过插件端内的打包模块,将插件打包成插件安装包;
通过平台端内的上传模块将插件安装包上传至平台端内的管理模块;
通过管理模块加载并安装插件安装包;
通过平台端内的运维模块获取并调用管理模块的已安装插件的数据信息。本发明一个实施例提供的动态拓展方法,通过获取并安装插件端内的插件,可以使平台端的功能得到拓展,通过使用插件端的打包模块及平台端的上传模块,为插件安装做好了前期准备,为实现插件自动安装奠定了基础,在通过平台端的管理模块及运维模块,可实现在不重启动态拓展系统的情况下进行插件的安装,通过插件端的打包模块及上传模块、平台端的管理模块及运维模块的依次运行,可实现插件的自动安装,使平台端功能可以自动拓展,且在平台端运行时进行安装及调用插件功能,不需要重新启动动态拓展系统,优化了用户的使用体验,提升了动态拓展系统的拓展能力。
附图说明
图1为本发明实施例中动态拓展系统的结构图;
图2为本发明实施例中动态拓展方法的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”;术语“可选地”表示“可选地实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
如图1所示,本发明实施例提供一种动态拓展系统,包括:插件端和平台端,所述插件端和所述平台端通讯连接,所述插件端包括打包模块及插件,所述打包模块与所述插件通讯连接;所述平台端包括上传模块、管理模块及运维模块,所述上传模块、所述管理模块与所述运维模块依次通讯连接;
具体地,平台端是动态拓展系统的主体,插件端设于平台端主体上,在开发人员根据业务需求开发好对应的插件后,开发人员将插件保存在插件端,后续根据业务需求安装在平台端上。
在一个实施例中,动态拓展系统的平台端和插件端采用JAVA语言编写,平台端采用开源框架Springboot或Springmvc其中的一种进行开发,在开源框架下,平台端和插件端由多个不同依赖构建,依赖即组件,不同依赖拥有不同功能,在动态拓展系统的平台端和插件端构建完成后,根据业务需求,可对平台端的功能进行拓展。
所述插件用于拓展所述平台端的功能;
具体地,为了使动态拓展系统完成相应的业务功能,开发人员开发与业务功能对应的插件,并将插件设置在插件端,供动态拓展系统完成业务更新或升级,例如,平台端需要构建日志模块,具有日志功能,用来记录使用动态拓展系统的用户请求的操作、参数、响应时长、响应结果等,开发人员根据日志功能需求集成相应的依赖,例如mysql5.0、flyway等依赖,集成依赖后形成一个功能完整的日志插件,保存到插件端,便于后续安装使用。
所述打包模块用于将所述插件生成插件安装包;
在一个实施例中,具体地,打包模块在动态拓展系统中起着连接平台端和插件端的作用,开发人员开发插件后,打包模块将插件做成平台端管理模块可以识别安装的插件安装包,打包模块作为插件的安装到投入系统应用的完整闭环流程的开端步骤,实现了系统的动态开发功能,提高了系统的拓展能力,此外,本发明的打包模块可以采用maven打包、gradle或者idea环境手动管理lib三个打包方式中的任意一种完成打包功能。
上传模块用于将所述插件安装包上传至所述管理模块;
具体地,在动态拓展系统运行时,平台端的上传模块提供将插件安装包上传导入到管理模块的功能,上传模块与插件端的打包模块相对接,作为平台端与插件端连接的端口,实现插件打包到安装的闭环流程功能。
所述管理模块用于加载并安装所述插件安装包;
具体地,管理模块通过虚拟机和开源框架实现插件安装包的加载及自动安装。
在一个实施例中,所述管理模块包括加载单元和安装单元,所述加载单元用于加载所述插件安装包;所述安装单元用于根据配置文件列表,进行所述插件安装包的安装。
具体地,加载单元将插件安装包加载到安装单元上,供安装单元安装插件,安装单元遍历配置文件列表,确定每个插件的信息,若插件安装包对应配置文件列表所需的插件,则进行插件安装包的安装,若插件安装包不对应配置文件列表,则不自动安装并生成安装失败提示。
在一些实施例中,安装单元还可以在所述动态拓展系统运行时,进行所述插件的安装,例如,现有软件的服务器若想升级维护,只能暂停软件的使用来进行升级维护,且升级维护后,还需要重启主程序来加载升级维护的插件,这影响用户的使用和体验感,本发明的安装单元通过类加载器classLoader加载维护升级插件中后缀为.class的文件,将其上传到JVM虚拟机中,然后开源框架在将JVM虚拟机中的class文件,注册到开源框架下IOC容器的beans中进行管理,安装单元采用Spring开源框架,可以在动态拓展系统运行时进行上述维护升级的步骤,解决了现有技术中只能停止系统运行、停止服务来进行更新代码的问题,本发明的安装单元不需要重启动态拓展系统来加载维护升级插件,做到了用户在不知不觉间,动态拓展系统就已经完成维护升级,增添了用户的体验感。
在另一个实施例中,所述管理模块包括预加载单元,所述预加载单元用于预加载所述插件安装包,并根据预设信息,选择所述插件安装包的安装方式。
具体地,在打包模块对插件打包后,预加载单元对来自打包模块的插件安装包进行预加载,预加载后根据预设信息,即根据具体业务需求预先设置的信息,选择安装方式安装来自所述打包模块的插件安装包,安装方式包括定时自动安装及手动安装。预加载单元预先获取插件安装包的数据信息,判断插件安装包是否有效,是否为系统需要的插件,确定插件安装包有效且为系统需要的插件后,根据预设信息确定安装的方式,若业务需求系统自动安装,则根据业务需求的时间自动安装;若没有自动安装的需求,则生成插件安装提醒,提醒相关人员及时手动安装插件。
在一些实施例中,所述管理模块还包括插件管理单元,所述插件管理单元用于对所述已安装插件进行卸载、启动与停止操作。
具体地,管理模块通过插件管理单元的虚拟机和开源框架实现已安装在平台端插件的加载、卸载、启动、停止以及预加载等功能,通过虚拟机和开源框架可以更稳定的处理已安装的插件,每个插件单独安装及加载,并通过开源框架的IOC容器进行管理,使系统各个插件的耦合性和关联性降低,兼容性升高;
所述运维模块用于获取并调用已安装插件的数据信息;
具体地,运维模块在管理模块加载并安装插件后,获取插件的数据信息,数据信息包括算法、函数、变量、数据库等,即获取插件的功能,根据系统及业务的需要实时调用插件的功能,若不需要使用插件的功能,则关闭对该插件的调用,使系统实现自动清理缓存的功能,可以优化系统运行、提升系统的运行效率、延长系统的使用周期。
在一个实施例中,所述运维模块包括虚拟机单元和插件运维单元,所述虚拟机单元和所述插件运维单元通讯连接,所述虚拟机单元集成类加载器,所述类加载器用于获取所述已安装插件的数据信息,并将所述数据信息上传至所述插件运维单元,所述插件运维单元用于调用所述数据信息;所述类加载器还用于实现自定义功能。
作为优选,运维模块采用JVM虚拟机,类加载器选择classLoader,插件运维单元采用SpringUtil.getBean函数,在管理模块将插件安装到平台端后,通过JVM虚拟机中的classLoader类加载器,将插件中的数据信息,即算法、依赖、函数、变量、数据库等,自动加载到开源框架中的IOC容器,由IOC容器进行管理,在动态拓展系统需要各个插件的功能时,可通过SpringUtil.getBean函数调用插件的功能,即将插件中的算法、依赖、函数、变量、数据库等调入系统中进行运行工作,这样可以做到单独调用插件功能,在调用插件中版本不同的同类依赖时,不会产生调用冲突,使动态拓展系统承载多版本的同类依赖,依赖之间的耦合性降低,动态拓展系统的兼容性更强。例如,在系统进行业务运行时,系统需要调用不同模块的不同数据库,即用户业务的mysql5.7版数据库和角色管理业务的mysql8.0版数据库,在想要单独调用这两个版本的数据库时,只需要通过JVM虚拟机中的classLoader类加载器,将用户业务的mysql5.7版数据库及角色管理业务的mysql8.0版数据库中的数据信息,即算法、依赖、函数、变量、数据库等,自动加载到开源框架中的IOC容器,由IOC容器进行管理,在动态拓展系统需要各个插件的功能时,可通过SpringUtil.getBean函数获取数据信息并调用即可,本发明的运维模块,实现了动态拓展系统引入的依赖多版本的有益效果,系统的兼容性更好,解决了现有技术中系统引入的依赖版本固定的问题;类加载器还可以实现自定义功能,开发人员可以根据实际业务需求,自定义类加载器,例如,根据实际业务需求,平台端安装插件时需要将安装的插件进行数据统计,开发人员即增加类加载器的自定义功能addCount,即数量相加,在输入数值1和2时,平台端可返回数值3。应该理解的是,类加载器的自定义功能不限于addCount,本发明仅举一个例子说明类加载器的自定义功能。
本发明通过平台端的管理模块,可以对插件进行加载及自动安装,还可以实现对插件进行卸载、启动与停止的功能,提高系统安装插件及加载插件功能的效率;通过运维模块的类加载器和SpringUtil.getBean函数,可以获取加载到平台端的插件的功能,使各个插件的功能集成到动态拓展系统上,且各个插件的功能互相独立,降低了系统中各个插件的耦合度,提高了系统的拓展性;通过平台端和插件端各个模块的相互调用及联合应用,形成插件的安装到投入系统应用的完整闭环,实现系统的动态开发,提高了系统的拓展能力。
在另一个实施例中,所述插件包括Flyway组件,所述Flyway组件用于独立加载所述插件的初始化数据。
具体地,在现有技术中,每个系统或者模块,在加载初始化数据时,需要统一对所有初始化数据进行加载,这造成了不必要的数据冗余,根据本发明提供的包括Flyway组件的插件,可以避开对有所有模块的初始化数据加载,仅对需要的模块进行初始化数据加载,优化系统的流程,节省系统的内存空间。在新插件开发完成后,每个插件均集成Flyway组件,在平台端对插件进行加载初始化数据时,对应插件的Flyway组件会生成初始化数据记录,并保存在插件的文件目录中,动态拓展系统对其他插件进行加载初始化数据时,已经生成初始化数据记录的Flyway组件,会阻止系统对已经加载过初始化数据的插件进行加载,这样就解决了在传统系统中,需要集中统一加载所有初始化数据的问题和加载后产生大量无用数据造成数据冗余的问题,能够根据各模块所需进行独立加载初始化数据,优化系统的运行。
为了更清楚的解释Flyway组件的运行原理,本发明的一个实施例提供Flyway组件的运行过程,包括:
将Flyway组件集成至插件中;
在插件中,配置Flyway组件存储数据的目录文件夹,目录文件夹名称定义为db;
配置目标插件的数据库地址;
将初始化数据编写成sql脚本;
将编写后的初始化数据生成以v1_addUser.sql为名称的文件;
将v1_addUser.sql文件存储到db文件;
在平台端安装插件时,Flyway组件和db文件安装在平台端;
当动态拓展系统执行加载初始化数据命令时,v1_addUser.sql文件运行,sql脚本运行,将初始化数据导入配置的数据库地址,完成对应的初始化数据命令;
同时,Flyway组件会生成历史记录,即生成flyway_schema_history文件,且flyway_schema_history文件存储已经执行过初始化命令的v1_addUser.sql文件;
其中,flyway_schema_history文件存储着v1_addUser.sql文件的name、version及install_time。
在下次运行初始化数据命令时,动态拓展系统会检测历史记录,遍历flyway_schema_history文件中v1_addUser.sql文件的name、version及install_time,若插件的v1_addUser.sql文件与历史记录对应,则跳过v1_addUser.sql文件对应插件的初始化数据命令,执行其他插件的初始化数据命令。
在一个实施例中,所述平台端还包括插件生态圈模块,所述插件生态圈模块与所述管理模块通讯连接,所述生态圈模块包括获取单元、解析单元、兼容单元及输出单元;
所述获取单元用于获取生态圈业务需求数据和至少一个生态圈插件;
所述解析单元用于解析所述生态圈插件,得到至少一个所述生态圈插件对应的依赖及依赖信息,所述依赖信息包括依赖数据及依赖版本;
所述兼容单元用于遍历所述依赖信息,当所述依赖数据唯一时,保留所述依赖数据唯一的依赖;当至少两个所述依赖数据相同时,保留所述依赖版本高的依赖;
所述输出单元用于将所述依赖数据唯一的依赖和所述依赖版本高的依赖输出为一个生态圈部署包,并上传至所述管理模块。
具体地,在开发功能时,业务需求大多情况下不会是简单的一个需求,而是多个需求组合形成一个完整的生态圈业务需求,这时根据生态圈业务需求进行开发功能,就不是仅仅开发一个插件就可以解决的,基于此,本发明提供插件生态圈模块,通过获取单元获取获取生态圈业务需求数据和至少一个生态圈插件,生态圈业务数据包括业务需求的功能、插件的选型等等,生态圈插件就是已经开发好的插件,即已经安装在平台端的插件和部署在插件端的插件,通过解析单元、兼容单元和输出单元可以将开发好的插件进行解析、兼容,最终生成一个生态圈部署包;
在一个实施例中,采用JAVA语言实现生态圈模块,通过解析单元解析每个插件JAR包中的class类,通过输出单元将所有class类汇聚到一个生态圈部署包,即ZIP包,在汇聚过程中,兼容单元会遍历各个插件的依赖信息,并对比各个依赖信息,对其进行校验,若一个插件的依赖信息唯一时,就保留这个插件的依赖,若插件的依赖信息不唯一,也就是插件依赖的版本信息不同时,兼容单元会对比这些依赖的版本,仅保留依赖版本最高的依赖,若有两个依赖的版本信息相同,则随机保留其中的一个依赖,最终做到向下兼容依赖,保证生态圈部署包的完整功能。在生态圈模块完成最后生态圈部署包的输出后,管理模块通过JVM虚拟机中的类加载器classLoader自动安装加载生态圈部署包,并提前加载生态圈业务需求数据来确定安装方式,安装方式包括定时自动安装或手动安装;
应该理解的是,本发明由各个模块生成的插件安装包及生态圈部署包等,在管理模块安装后,可根据预先设置的管理条例,判断是否需要删除,以达到减少缓存或多次利用的目的。
在一个实施例中,所述平台端还包括插件监听模块,所述插件监听模块分别与所述管理模块和所述运维模块通讯连接,所述插件监听模块集成PluginListener接口,用于监听所述插件的状态。
具体地,插件监听模块可以监听插件的状态信息,状态信息包括但不限于:初始化之前的状态、初始化时的状态、初始化后的状态;加载中的状态、加载后成功或者失败的状态,卸载成功或失败的状态,运行时的稳定情况、是否工作等等,插件监听模块可以获取插件所有的状态信息,基于此,可以推导出动态拓展系统的状态,并清晰地展示出来,方便开发人员或使用人员进行工作;
在一个实施例中,所述平台端还包括多个插件接口,所述插件接口与所述管理模块通讯连接,所述插件接口包括定义单元和调用单元,所述定义单元用于根据指定插件的功能定义所述插件接口,所述调用单元用于调用所述指定插件。
具体地,动态拓展系统可安装指定插件在插件接口上,指定插件指的是功能特定且变动较大的插件,安装指定插件时,定义单元根据指定插件的功能定义插件接口,而后插件接口调用指定插件,完成指定插件的安装,例如,在平台端想要拥有指定画板的功能,在开发好画板的指定插件后,将插件接口定义为画板插件接口,并调用画板的指定插件,此时平台端就拥有了画板的功能,若后续需求需要将画板功能升级或换另一种与之不同的画板,此时只要根据需求开发新画板的指定插件,由画板插件接口直接调用新画板的指定插件即可。本发明的插件接口能够快速替换插件,规范动态拓展系统的结构、实现动态拓展系统的低耦合动态拓展。
在一个实施例中,定义单元通过创建class类并选择interface类别实现定义插件接口功能,指定插件功能为删除数据,则定义插件接口的名称为delData,在调用单元调用指定插件的删除数据功能后,插件接口即可实现删除数据的功能。
在一个实施例中,所述平台端还包括集成字典模块,所述集成字典模块与所述管理模块通讯连接,所述集成字典模块用于集成所述平台端基本运行的底层组件。
具体地,平台端运行的底层组件包括Mybatis-plus、Logback和swagger,平台端作为动态拓展系统的核心基底,承担着整个系统的运行功能,为了使平台端拥有增删改查的功能,本发明通过集成字典模块来集成平台端运行增删改查功能的具体依赖,且在后续使用时,根据业务需求的增加,可随时通过集成字典模块增加平台端运行的依赖。
应该理解的是,平台端的功能并不限于增删改查的功能,根据业务需求的增加,可随时通过集成字典模块增加平台端运行的依赖。
示例性地,本发明的动态拓展系统还可实现快速开发插件,例如,在物联网平台开发时,根据业务需求,物联网平台需要连接多个硬件设备,则需要开发多个与物联网平台连接设备的驱动插件,在传统系统中,需要单独开发每个驱动插件,这样开发的效率低,时间成本长,通过本发明的动态拓展系统,可以在物联网平台与硬件设备的交互内容中提取出公共的软件开发包,即SDK,后续以软件开发包为基础进行开发硬件设备的驱动插件,这样就可以快速的进行插件开发,节省人力物力和时间成本。
在一些实施例中,为了更清楚地解释管理模块的运行机制,本发明提供另一种管理模块安装插件的具体实现步骤,安装步骤包括:
管理模块获取插件安装包;
通过管理模块中的虚拟机加载插件安装包中的所有class类;
管理模块遍历所有class类的名称,通过开源框架下beanFactory将所有class类上传至beans进行管理;
上传插件安装包的名称和版本号,并于所有class类绑定;
保存绑定后的class类、名称和版本号。
综上,便可实现动态拓展系统中管理模块安装插件的功能。
在一些实施例中,为了更清楚地解释管理模块的运行机制,本发明提供一种管理模块卸载插件的具体实现步骤,卸载步骤包括:
管理模块根据名称和版本号,查询与其绑定的所有class类;
通过beanFactory中的removeBeanDefinition的移除功能,进行所有class类的移除;
移除与所有class类绑定的名称和版本号。
综上,便可实现动态拓展系统中管理模块卸载插件的功能。
如图2所示,为了实现本发明实施例提供的动态拓展系统,本发明另一实施例提供一种动态拓展方法,包括:
步骤210,获取插件端内的插件,插件用于拓展平台端的功能;
具体地,为了使动态拓展系统完成业务需求,插件端上部署多个插件,插件来自开发人员根据实际业务需求开发,也可直接调用之前已开发好的插件部署在插件端,每个插件的功能、数据信息等均不同,用来完成动态拓展系统的业务需求。
步骤220,通过插件端内的打包模块,将插件打包成插件安装包;
具体地,插件端的插件需要打包模块,将其打包为动态拓展系统可识别的插件安装包,为后续管理模块安装插件做准备。
步骤230,通过平台端内的上传模块将插件安装包上传至平台端内的管理模块;
具体地,通过平台端的上传模块将插件安装包导入至平台端的管理模块,供管理单元安装。
步骤240,通过管理模块加载并安装插件安装包;
具体地,管理单元加载插件安装包后,遍历配置文件列表,确定要安装的插件信息,若插件安装包对应配置文件列表的插件信息,则进行插件安装包的安装,反之,不安装并生成安装失败提示;管理模块在动态拓展系统运行时安装插件,且动态拓展系统不需停止业务服务,也不要重启加载插件。
步骤250,通过平台端内的运维模块获取并调用所述管理模块的已安装插件的数据信息;
具体地,通过运维单元可以获取已安装插件的数据信息,数据信息包括算法、函数、变量、数据库等,即获取插件的功能,并根据动态拓展系统的业务需求,实时调用插件的功能。
本发明一个实施例提供的动态拓展方法,通过获取并安装插件端内的插件,可以使平台端的功能得到拓展,通过使用插件端的打包模块及平台端的上传模块,为插件安装做好了前期准备,为实现插件自动安装奠定了基础,在通过平台端的管理模块及运维模块,可实现在不重启动态拓展系统的情况下进行插件的安装,通过插件端的打包模块及上传模块、平台端的管理模块及运维模块的依次运行,可实现插件的自动安装,使平台端功能可以自动拓展,且在平台端运行时进行安装及调用插件功能,不需要重新启动动态拓展系统,优化了用户的使用体验,提升了动态拓展系统的拓展能力。
虽然本发明公开披露如上,但本发明公开的保护范围并非仅限于此。本领域技术人员在不脱离本发明公开的精神和范围的前提下,可进行各种变更与修改,这些变更与修改均将落入本发明的保护范围。

Claims (10)

1.一种动态拓展系统,其特征在于,包括:插件端和平台端,所述插件端和所述平台端通讯连接,所述插件端包括打包模块及插件,所述打包模块与所述插件通讯连接;所述平台端包括上传模块、管理模块及运维模块,所述上传模块、所述管理模块与所述运维模块依次通讯连接;
所述插件用于拓展所述平台端的功能;
所述打包模块用于将所述插件生成插件安装包;
所述上传模块用于将所述插件安装包上传至所述管理模块;
所述管理模块用于加载并安装所述插件安装包;
所述运维模块用于获取并调用所述管理模块的已安装插件的数据信息。
2.根据权利要求1所述的动态拓展系统,其特征在于,所述管理模块包括预加载单元,所述预加载单元用于预加载所述插件安装包,并根据预设信息,选择所述插件安装包的安装方式。
3.根据权利要求2所述的动态拓展系统,其特征在于,所述管理模块还包括插件管理单元,所述插件管理单元用于对所述已安装插件进行卸载、启动与停止操作。
4.根据权利要求1所述的动态拓展系统,其特征在于,所述运维模块包括虚拟机单元和插件运维单元,所述虚拟机单元和所述插件运维单元通讯连接,所述虚拟机单元集成类加载器,所述类加载器用于获取所述已安装插件的数据信息,并将所述数据信息上传至所述插件运维单元,所述插件运维单元用于调用所述数据信息;所述类加载器还用于实现自定义功能。
5.根据权利要求1所述的动态拓展系统,其特征在于,所述插件包括Flyway组件,所述Flyway组件用于独立加载所述插件的初始化数据。
6.根据权利要求1所述的动态拓展系统,其特征在于,所述平台端还包括插件生态圈模块,所述插件生态圈模块与所述管理模块通讯连接,所述生态圈模块包括获取单元、解析单元、兼容单元及输出单元;
所述获取单元用于获取生态圈业务需求数据和至少一个生态圈插件;
所述解析单元用于解析所述生态圈插件,得到至少一个所述生态圈插件对应的依赖及依赖信息,所述依赖信息包括依赖数据及依赖版本;
所述兼容单元用于遍历所述依赖信息,当所述依赖数据唯一时,保留所述依赖数据唯一的依赖;当至少两个所述依赖数据相同时,保留所述依赖版本高的依赖;
所述输出单元用于将所述依赖数据唯一的依赖和所述依赖版本高的依赖输出为一个生态圈部署包,并上传至所述管理模块。
7.根据权利要求1所述的动态拓展系统,其特征在于,所述平台端还包括插件监听模块,所述插件监听模块分别与所述管理模块和所述运维模块通讯连接,所述插件监听模块集成PluginListener接口,用于监听所述插件及所述已安装插件的状态。
8.根据权利要求1所述的动态拓展系统,其特征在于,所述平台端还包括多个插件接口,所述插件接口与所述管理模块通讯连接,所述插件接口包括定义单元和调用单元,所述定义单元用于根据指定插件的功能定义所述插件接口,所述调用单元用于调用所述指定插件。
9.根据权利要求1所述的动态拓展系统,其特征在于,所述平台端还包括集成字典模块,所述集成字典模块与所述管理模块通讯连接,所述集成字典模块用于集成所述平台端基本运行的底层组件。
10.一种动态拓展方法,基于权利要求1-9任一项所述的动态拓展系统实现,其特征在于,包括:
获取插件端内的插件,所述插件用于拓展平台端的功能;
通过所述插件端内的打包模块,将所述插件打包成插件安装包;
通过平台端内的上传模块将所述插件安装包上传至所述平台端内的管理模块;
通过所述管理模块加载并安装所述插件安装包;
通过所述平台端内的运维模块获取并调用所述管理模块的已安装插件的数据信息。
CN202211470124.7A 2022-11-23 2022-11-23 一种动态拓展系统及方法 Pending CN115718604A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211470124.7A CN115718604A (zh) 2022-11-23 2022-11-23 一种动态拓展系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211470124.7A CN115718604A (zh) 2022-11-23 2022-11-23 一种动态拓展系统及方法

Publications (1)

Publication Number Publication Date
CN115718604A true CN115718604A (zh) 2023-02-28

Family

ID=85256190

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211470124.7A Pending CN115718604A (zh) 2022-11-23 2022-11-23 一种动态拓展系统及方法

Country Status (1)

Country Link
CN (1) CN115718604A (zh)

Similar Documents

Publication Publication Date Title
US8365164B1 (en) Portable software applications
US11113303B2 (en) Ownership transfer of database artifacts between files
US6698018B1 (en) System and method of multiple-stage installation of a suite of applications
RU2429529C2 (ru) Динамическое конфигурирование, выделение и развертывание вычислительных систем
US8296758B2 (en) Deployment and versioning of applications
US8010578B2 (en) Method of refactoring a running database system
US9218179B2 (en) Software automated data and data model upgrade system
US20100325624A1 (en) Method and System for Application Portability
US20180046675A1 (en) Automatic adjustment of an execution plan for a query
CN104793946A (zh) 基于云计算平台的应用部署方法和系统
US20080010639A1 (en) System and method for remotely re-imaging a computer system
US11307960B2 (en) Parameter-based deployment control for deployment of database artifacts
CN113434158B (zh) 一种大数据组件的自定义管理方法、装置、设备及介质
US9542173B2 (en) Dependency handling for software extensions
US7818557B2 (en) Method for re-imaging a computer system
CN116049207A (zh) 应用程序sql脚本处理方法、装置、处理器及电子设备
CN111324365A (zh) 一种超融合系统升级的方法和设备
CN112565416A (zh) 基于云原生的大规模边缘安卓设备纳管系统及其纳管方法
CN115718604A (zh) 一种动态拓展系统及方法
CN113031964B (zh) 一种大数据应用的管理方法、装置、设备及存储介质
CN110795113B (zh) 一种Redis集群服务的安装方法、服务器和介质
CN113220592A (zh) 自动化测试资源的处理方法、装置、服务器及存储介质
CN113064698A (zh) 提供产品环境的方法及相应的装置、系统、设备和介质
CN111158709A (zh) 一种集群部署方法、装置、设备及计算机可读存储介质
CN114995962B (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