CN115269040A - 一种租户业务应用的拓展方法、装置及系统 - Google Patents
一种租户业务应用的拓展方法、装置及系统 Download PDFInfo
- Publication number
- CN115269040A CN115269040A CN202210866214.1A CN202210866214A CN115269040A CN 115269040 A CN115269040 A CN 115269040A CN 202210866214 A CN202210866214 A CN 202210866214A CN 115269040 A CN115269040 A CN 115269040A
- Authority
- CN
- China
- Prior art keywords
- plug
- data
- tenant
- service
- 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.)
- Granted
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种租户业务应用的拓展方法、装置及系统,所述方法包括:在获取租户终端的拓展请求时,从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,所述预设资源数据库存有多个的插件数据,每个插件数据对应一种业务服务;确定所述插件数据的加载类别,根据所述加载类别将所述插件数据添加至租户终端,以供租户终端进行应用拓展。本发明的拓展更新操作仅需传输插件的数据,传输的数据量小,传输效率高,而且拓展更新无需用户重新编写插件数据,可以大大缩小拓展更新的工作量,进一步提高拓展更新的操作效率。
Description
技术领域
本发明涉及业务应用的拓展更新技术领域,尤其涉及一种租户业务应用的拓展方法、装置及系统。
背景技术
多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,多租户技术可以实现多个租户之间共享系统实例,同时又可以实现租户的系统实例的个性化定制。通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。
多租户环境中使用一个运行时环境来为多个租户提供服务,不同租户之间存在多种多样的功能差异需要进行控制,同时也存在某些通用的功能。这些通用功能的开通、停用、配置等都要在环境中独立管理,并且互相隔离。为了满足用户的应用需求,当需要进行定制的个性化应用或拓展个人应用时,目前常用的方法是通过二次开发方式实现扩展业务应用,具体是利用二次开发的接口让租户终端能与第三方建立连接,并通过第三方服务机构为其提供拓展服务。
但目前常用的方法有如下技术问题:每次拓展个人应用时均需要重新编写接口,并将编写后的接口与租户终端原有的业务内容打包在一起,然后再发送给租户终端进行更新,供其进行拓展操作,整个拓展更新的操作步骤繁琐,且编写内容多,进而拓展更新的效率低;而且随着更新拓展的次数增加,每次拓展更新的传输数据量则逐渐增加,进而增加了数据传输的时间,进一步降低了更新的效率。
发明内容
本发明提出一种租户业务应用的拓展方法、装置及系统,所述方法可以在获取待拓展租户的拓展请求后,在包含了多个插件的资源数据库中,提取与拓展请求对应业务服务的插件,根据插件的加载类别进行拓展装载,进而减少更新传输的数据量,缩短更新拓展的耗时,以提高拓展更新的效率。
本发明实施例的第一方面提供了一种租户业务应用的拓展方法,所述方法包括:
在获取租户终端的拓展请求时,从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,所述预设资源数据库存有多个的插件数据,每个插件数据对应一种业务服务;
确定所述插件数据的加载类别,根据所述加载类别将所述插件数据添加至租户终端,以供租户终端进行应用拓展。
在第一方面的一种可能的实现方式中,所述从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,包括:
从所述拓展请求中获取租户终端的插件标识,基于所述插件标识加载租户终端对应的预设资源数据库,所述预设资源数据库划分多个不同优先级的插件类别,每个所述插件类别包含多个插件数据;
按照所述插件类别的优先级,从所述预设资源数据库查找所述插件标识对应的插件数据。
在第一方面的一种可能的实现方式中,所述从所述拓展请求中获取租户终端的插件标识,包括:
解析所述拓展请求得到请求路径;
拆分所述请求路径得到插件标识。
在第一方面的一种可能的实现方式中,所述确定所述插件数据的加载类别,包括:
将所述插件数据存储缓存中,并确定缓存是否存有所述插件标识;
若缓存中存有插件标识,则获取所述插件数据的优先级,得到加载类别;
若缓存中没有存有插件标识,则获取租户终端的编码,采用所述编码生成插件标识并存储在缓存中。
在第一方面的一种可能的实现方式中,所述采用所述编码生成插件标识并存储在缓存中,包括:
通过所述编码从预设的读取数据库中,获取到租户终端的类型资源数据;
按照所述插件类别的优先级,扫描所述类型资源数据,得到多个种类数据,每个所述种类数据对应一种插件数据;
从所述多个种类数据中筛选包含预设注解的目标种类数据;
对所述目标种类数据进行初始化得到插件标识,并将所述插件标识存储在缓存中。
在第一方面的一种可能的实现方式中,所述方法还包括:
获取租户终端的个性化请求,并确定所述个性化请求对应的个性化插件的加载类别;
基于所述个性化插件的加载类别编辑生成拓展数据包,并将所述拓展数据包发送至租户终端,以供租户终端将所述拓展数据包添加至插件项目中。
本发明实施例的第二方面提供了一种租户业务应用的拓展装置,所述装置包括:
提取模块,用于在获取租户终端的拓展请求时,从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,所述预设资源数据库存有多个的插件数据,每个插件数据对应一种业务服务;
拓展更新模块,用于确定所述插件数据的加载类别,根据所述加载类别将所述插件数据添加至租户终端,以供租户终端进行应用拓展。
本发明实施例的第三方面提供了一种租户业务应用的拓展系统,所述系统适用于如上所述的租户业务应用的拓展方法,所述系统包括:业务模块插件管理单元,业务接口配置单元,业务引擎服务单元;
业务模块插件管理单元,用于定义业务接口、定义业务接口的元数据、插件数据的传输、租户终端插件的装载与卸载、以及编辑插件数据的标识;
业务接口配置单元,用于定义租户终端的接口以及配置租户终端的接口信息;
业务引擎服务单元,用于调用接口完成插件拓展。
相比于现有技术,本发明实施例提供的一种租户业务应用的拓展方法、装置及系统,其有益效果在于:本发明可以在获取待拓展租户的拓展请求后,在包含了多个插件的资源数据库中,提取与拓展请求对应业务服务的插件,根据插件的加载类别编辑成对应的更新数据包并发送给租户终端,使得租户终端可以根据数据包内插件数据的优先级,将插件数据直接覆盖在其对应的层级中,以完成拓展更新。整个过程仅需传输插件的数据,传输的数据量小,传输效率高,而且拓展更新无需用户重新编写插件数据,可以大大缩小拓展更新的工作量,进一步提高拓展更新的操作效率。
附图说明
图1是本发明一实施例提供的一种租户业务应用的拓展方法的流程示意图;
图2是本发明一实施例提供的生成插件标识的流程示意图;
图3是本发明一实施例提供的一种租户业务应用的拓展装置的结构示意图;
图4是本发明一实施例提供的一种租户业务应用的拓展系统的结构示意图;
图5是本发明一实施例提供的业务模块插件管理单元的结构示意图;
图6是本发明一实施例提供的业务模块插件管理单元的数据关系图;
图7是本发明一实施例提供的业务模块SPI管理模块的数据示意图;
图8是本发明一实施例提供的业务模块插件管理单元的数据示意图;
图9是本发明一实施例提供的租户装载业务模块管理模块的装载关系示意图;
图10是本发明一实施例提供的租户业务模块配置项管理模块的数据示意图;
图11是本发明一实施例提供的业务引擎服务单元的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,多租户技术可以实现多个租户之间共享系统实例,同时又可以实现租户的系统实例的个性化定制。通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。
多租户环境中使用一个运行时环境来为多个租户提供服务,不同租户之间存在多种多样的功能差异需要进行控制,同时也存在某些通用的功能。这些通用功能的开通、停用、配置等都要在环境中独立管理,并且互相隔离。为了满足用户的应用需求,当需要进行定制的个性化应用或拓展个人应用时,目前常用的方法是通过二次开发方式实现扩展业务应用,具体是利用二次开发的接口让租户终端能与第三方建立连接,并通过第三方服务机构为其提供拓展服务。
但目前常用的方法有如下技术问题:每次拓展个人应用时均需要重新编写接口,并将编写后的接口与租户终端原有的业务内容打包在一起,然后再发送给租户终端进行更新,供其进行拓展操作,整个拓展更新的操作步骤繁琐,且编写内容多,进而拓展更新的效率低;而且随着更新拓展的次数增加,每次拓展更新的传输数据量则逐渐增加,进而增加了数据传输的时间,进一步降低了更新的效率。
为了解决上述问题,下面将通过以下具体的实施例对本申请实施例提供的一种租户业务应用的拓展方法进行详细介绍和说明。
参照图1,示出了本发明一实施例提供的一种租户业务应用的拓展方法的流程示意图。
所述方法适用于租户业务应用的拓展系统,该系统可以是后台服务器,可以与多个不同的租户终端通信连接,并用于管理各种插件。后台的技术人员可以通过该系统对各个租户终端的插件进行编辑,或者在编写新的终端应用功能时,通过系统将更新的内容转发至租户终端中,供其进行更新操作。
其中,作为示例的,所述租户业务应用的拓展方法,可以包括:
S11、在获取租户终端的拓展请求时,从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,所述预设资源数据库存有多个的插件数据,每个插件数据对应一种业务服务。
在一实施例中,当用户需要拓展其租户终端的应用功能时,可以触发租户终端生成拓展请求,系统在接收拓展请求后,可以从预设的资源数据库中提取对应的插件数据,该插件数据可以处理用户想要拓展的应用功能。
其中,预设的资源数据库中可以存有多个插件数据,每个插件数据可以对应一个业务服务的应用功能。
需要说明的是,技术人员可以在系统中预设给每个租户终端设定一个资源数据库,该资源数据库内可以存有多个默认的插件;由或者设定一个大的资源数据库,资源数据库内存有各个租户终端的插件数据。
通过整合多个插件数据,可以方便调用,无需重新编写新的插件,减少更新的工作量,提高更新拓展的效率。
在一实施例中,各个插件数据之间可能存在层级关系(例如父子层级),而用户所要拓展的功能可能仅需要某一层级的插件即可,为了能快速匹配相应层级的插件,其中,作为示例的,步骤S11可以包括以下子步骤:
S111、从所述拓展请求中获取租户终端的插件标识,基于所述插件标识加载租户终端对应的预设资源数据库,所述预设资源数据库划分多个不同优先级的插件类别,每个所述插件类别包含多个插件数据。
在一实施例中,插件标识可以是key,不同租户的插件数据可以放置在不同的Map中存储,其中key的定义为:SPIKEY+_+tenantcode,其值为PluginClassLoader类,通过Plug-Data(SPI插件资源数据父子关系及分配授权关系)可以获取得到。
在获取插件标识后,可以基于插件标识确定租户所对应的资源数据库,进而能从该数据库中获取所需的插件数据。
在一实施例中,资源数据库可以划分为不同类别,每个类别对应一个优先级,使得各个插件相互之间可以形成父子关系。
例如,设定的层级关系为part->default->spi,其优先级也是从part->default->spi。
在一实施例中,步骤S111可以包括以下子步骤:
S1111、解析所述拓展请求得到请求路径。
S1112、拆分所述请求路径得到插件标识。
具体地,可以解析拓展请求,从拓展请求中提取对应的请求路径,得到url路径,然后对url路径进行拆分,得到的业务脚本行为数据,以该数据为插件标识。
例如,url路径为:/biz/logicocde=xxxxx,xxxxx,拆分该路径获取的标识。
S112、按照所述插件类别的优先级,从所述预设资源数据库查找所述插件标识对应的插件数据。
结合上述例子,设定的层级关系为part->default->spi,其中,spi:是接口定义jar包;default:是对spi的固定默认实现,一般由产品(官方)按照标准业务实现jar包;thirt:根据spi的定义,实现一套业务实现,非默认,由第三方使用不同的技术或业务定义实现的jar包;part:是在deault或thirt基础上,只对某部分业务,进行扩展点覆盖实现的jar包。
在查找时,可以优先从子包(part类型)插件中查找,在子包中获取不到时,再到其父包(其parent包,可能是default或thirt类型)插件中加载查找,并不一定都是接口类,也有可能是一些实体类的定义,在父包(default或thirt类型)获取不到的情况下,再往SPI包中获取,直到找到租户所需的插件数据。
可选地,若所有包中均没有租户所需的插件数据,可以返回出错提示给租户终端。
S12、确定所述插件数据的加载类别,根据所述加载类别将所述插件数据添加至租户终端,以供租户终端进行应用拓展。
其中,加载类别可以是插件数据的优先级类别。
在一实施例中,在获取插件数据后,可以确定该插件数据的优先级类别然后编辑生成该插件数据的更新数据包,将该更新数据包发送给租户终端,使得租户终端可以根据数据包内插件数据的优先级,将插件数据直接覆盖在其对应的层级中,以完成拓展更新。
整个过程仅需传输插件的数据,传输的数据量小,传输效率高,而且拓展更新无需用户重新编写插件数据,也可以大大缩小拓展更新的工作量,进一步提高拓展更新的操作效率。
在一实施例中,为了方便租户终端提取数据包,可以将数据包存储在缓存中,在一可选的实施例中,步骤S12可以包括以下子步骤:
S121、将所述插件数据存储缓存中,并确定缓存是否存有所述插件标识。
在一实施例中,可以将插件数据存储在系统的内置缓存中,供租户终端调用。
在调用时,租户终端可能在先已获取相关或相同功能的插件数据,可能已存有该插件数据的插件标识。
具体地,插件标识可以是key。
S122、若缓存中存有插件标识,则获取所述插件数据的优先级,得到加载类别。
S123、若缓存中没有存有插件标识,则获取租户终端的编码,采用所述编码生成插件标识并存储在缓存中。
具体地,依据Key从PluginClassLoader-pool中查找其key:tenantcode和spi,value是PluginClassLoader对象。如果存在,则直接返回PluginClassLoader,得到加载类别;如果不存在,则说明租户第一次调用这个拓展的插件数据,可以编辑其对应的插件标识,以供租户终端下次直接通过插件标识从缓存中调用插件数据进行拓展更新或相关操作。
在一实施例中,步骤S123可以包括以下子步骤:
S1231、通过所述编码从预设的读取数据库中,获取到租户终端的类型资源数据。
S1232、按照所述插件类别的优先级,扫描所述类型资源数据,得到多个种类数据,每个所述种类数据对应一种插件数据。
S1233、从所述多个种类数据中筛选包含预设注解的目标种类数据。
S1234、对所述目标种类数据进行初始化得到插件标识,并将所述插件标识存储在缓存中。
参照图2,示出了本发明一实施例提供的生成插件标识的流程示意图。
图中,PluginContainer是:插件资源管理容器,用来存储各租户业务模块的类加载器的容器。
PluginClassLoader是:业务模块资源的类加载器。其有两个主要的类定义HashMap,即single-class plugin-service-pool和prototype-class plugin-service-define-pool。
Plugin-Data是:业务模块插件系统的数据库。
tenant-plugin-data是:租户业务模块插件数据的读取模块。
single-class plugin-service-pool是:存放单例的插件资源服务类池(hashmap)。
prototype-class plugin-service-define-pool是:存放原型的插件资源服务类定义池(hashmap)。
PluginExport是:一个注解类,代表该类为该业务模块导出类,供业务引擎模块使用,定义了value和mode(),value是类的名字,mode:是表明导出类,是单例类,还是原型类。
如果不存在,则通过租户编码tenantcode和spikey从Plugin-Data数据中,获取到该租户装载的类型资源数据,该类型资源数据可以是包含有spi、default、part类型资源的数据。
接着,根据租户装载的类型资源数据,优先从part->default->spi的顺序加载资源数据中的jar包,找出所有class,并对class中,有@PluginExport注解的且单例的进行初始化后得到插件标识,可以将插件标识放至single-class plugin-service-pool,将@PluginExport注解的且原型的class,存放至prototype-class plugin-service-define-pool。
然后根据拿到PluginClassLoader,去加载服务类。即通过PluginClassLoder根据传入的服务类名称,如"AccountService",如果是单例,从single-class plugin-service-pool中获取,返回。
具体地,假设租户C,对帐号服务,进行个性化业务扩展。
帐号服务中,其中有一些额外的扩展点接口,是提供给租户去实现的。例如license配额检查。产品默认实现,是不做检查,或只是针对总配额进行总数检查,而并非按应用appcode来做检查。
假设租户C,在帐号注册的时候,提出个性化的需求,需要根据不同的应用appcode,处理licens的配额的检查,是否允许注册帐号。
租户C,可以重载其中应用帐号注册的checklicens的接口,做出扩展性的检查代码实现,并把这部分扩展的实现,生成jar包,上传,并装载给租户C,即可完成扩展业务逻辑的处理。
在实际操作时,租户可能想根据个人应用需求,增加相应的应用服务的插件,为了满足用户的需求,其中,作为示例的,所述方法还可以包括:
S13、获取租户终端的个性化请求,并确定所述个性化请求对应的个性化插件的加载类别。
其中,个性化请求为租户增加个人个性化的需求插件的请求,个性化插件的加载类别也可以是插件的优先级。
S14、基于所述个性化插件的加载类别编辑生成拓展数据包,并将所述拓展数据包发送至租户终端,以供租户终端将所述拓展数据包添加至插件项目中。
具体地,项目开发人员可以根据租户的个性化需求,扩展调整的接口,并根据接口进行单独开发实现,生成jar包。然后项目开发人员通过系统去定义插件资源记录并上传jar包,通过系统将此插件资源包传输给租户,最后租户终端可以验证接口,在验证后完成租户个性化的业务扩展。
在本实施例中,本发明实施例提供了一种租户业务应用的拓展方法,其有益效果在于:本发明可以在获取待拓展租户的拓展请求后,在包含了多个插件的资源数据库中,提取与拓展请求对应业务服务的插件,根据插件的加载类别编辑成对应的更新数据包并发送给租户终端,使得租户终端可以根据数据包内插件数据的优先级,将插件数据直接覆盖在其对应的层级中,以完成拓展更新。整个过程仅需传输插件的数据,传输的数据量小,传输效率高,而且拓展更新无需用户重新编写插件数据,可以大大缩小拓展更新的工作量,进一步提高拓展更新的操作效率。
本发明实施例还提供了一种租户业务应用的拓展装置,参见图3,示出了本发明一实施例提供的一种租户业务应用的拓展装置的结构示意图。
其中,作为示例的,所述租户业务应用的拓展装置可以包括:
提取模块301,用于在获取租户终端的拓展请求时,从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,所述预设资源数据库存有多个的插件数据,每个插件数据对应一种业务服务;
拓展更新模块302,用于确定所述插件数据的加载类别,根据所述加载类别将所述插件数据添加至租户终端,以供租户终端进行应用拓展。
可选地,所述提取模块,还用于:
从所述拓展请求中获取租户终端的插件标识,基于所述插件标识加载租户终端对应的预设资源数据库,所述预设资源数据库划分多个不同优先级的插件类别,每个所述插件类别包含多个插件数据;
按照所述插件类别的优先级,从所述预设资源数据库查找所述插件标识对应的插件数据。
可选地,所述提取模块,还用于:
解析所述拓展请求得到请求路径;
拆分所述请求路径得到插件标识。
可选地,所述拓展更新模块,还用于:
将所述插件数据存储缓存中,并确定缓存是否存有所述插件标识;
若缓存中存有插件标识,则获取所述插件数据的优先级,得到加载类别;
若缓存中没有存有插件标识,则获取租户终端的编码,采用所述编码生成插件标识并存储在缓存中。
可选地,所述拓展更新模块,还用于:
通过所述编码从预设的读取数据库中,获取到租户终端的类型资源数据;
按照所述插件类别的优先级,扫描所述类型资源数据,得到多个种类数据,每个所述种类数据对应一种插件数据;
从所述多个种类数据中筛选包含预设注解的目标种类数据;
对所述目标种类数据进行初始化得到插件标识,并将所述插件标识存储在缓存中。
可选地,所述装置还包括:
获取模块,用于获取租户终端的个性化请求,并确定所述个性化请求对应的个性化插件的加载类别;
编辑模块,用于基于所述个性化插件的加载类别编辑生成拓展数据包,并将所述拓展数据包发送至租户终端,以供租户终端将所述拓展数据包添加至插件项目中。
本发明实施例还提供了一种租户业务应用的拓展系统,参见图4,示出了本发明一实施例提供的一种租户业务应用的拓展系统的结构示意图。
所述系统适用于如上述实施例所述的租户业务应用的拓展方法,其中,作为示例的,所述租户业务应用的拓展系统可以包括:业务模块插件管理单元,业务接口配置单元,业务引擎服务单元;
业务模块插件管理单元,用于定义业务接口、定义业务接口的元数据、插件数据的传输、租户终端插件的装载与卸载、以及编辑插件数据的标识;
业务接口配置单元,用于定义租户终端的接口以及配置租户终端的接口信息;
业务引擎服务单元,用于调用接口完成插件拓展。
在一实施例中,业务模块插件管理单元可以包括:业务模块SPI管理模块、业务模块插件资源管理模块、租户装载业务模块管理模块、租户业务模块配置项管理模块。
其中,业务模块SPI管理模块,用于定义业务模块接口,定义业务模块接口元数据,SPI包上传。
业务模块插件资源管理模块,用于业务模块插件定义,插件资源上传。
租户装载业务模块管理模块,用于租户插件装载和用于租户插件卸载。
租户业务模块配置项管理模块,用于租户在业务模块上对某些配置项,进行设置其对应的数据值,也是业务模块扩展出来,让租户定制配置项使用,在运行时,注入配置值,完成不同租户的配置值的不同处理变量值或方式。
参照图5,示出了本发明一实施例提供的业务模块插件管理单元的结构示意图。
在一实施例中,BizModule-SPI(spi):业务模块接口业务接口定义jar包。
default:是对BizModule-SPI的固定默认实现,一般由产品(官方)按照标准业务实现jar包。
thirt:根据BizModule-SPI的定义,实现一套业务实现,非默认,由第三方使用不同的技术或业务定义实现的jar包。
part:是在deault或thirt基础上,只对某部分业务,进行扩展点覆盖实现的jar包。
参照图6,示出了本发明一实施例提供的业务模块插件管理单元的数据关系图。
1.spi业务模块定义:是产品定义业务模块。
2.SPI-plugin插件资源:是产品实现业务模块的插件包数据,进行上传,作为默认实现。
3.Teant租户:可以理解为使用该系统的企业项目。
4.tenant-plugin:是租户用了业务模块,进行挂接关系。
5.tenant-spi-config:是租户给业务设置一些租户上的配置项。
6.如果租户存在着非默认实现的个性化需求时,会上传个性化实现插件包,SPI-plugin插件资源。
7.tenant-plugin上记录租户与个性化SPI-plugin的使用关系。
8.租户还有该业务模块个性化的需求,重复6和7数据处理(6、7是子包的定义及租户关联)。
参照图7-10,分别示出了本发明一实施例提供的业务模块SPI管理模块的数据示意图、本发明一实施例提供的业务模块插件管理单元的数据示意图、本发明一实施例提供的租户装载业务模块管理模块的装载关系示意图和本发明一实施例提供的租户业务模块配置项管理模块的数据示意图。
图7-10的表格数据,就是图6的示例数据。
其中,图9的A租户:用了产品(官方)默认实现的业务逻辑,B租户:用了第三方(非官方)实现的业务逻辑,C租户:用了产品(官方)默认实现,并使用了两个重写部分实现的业务模块逻辑插件资源。
图10的C租户在业务模块(SPI-account)上针对某些配置项(是帐号服务提供给外部配置的配置项,可以让租户根据不同的需求,设置不同的值,这也是扩展点的一种方式),进行设置其租户需要的对应数据值,存放在confjson上,以json的方式存放,在业务逻辑执行时,注入使用。
参照图11,示出了本发明一实施例提供的业务引擎服务单元的结构示意图。
在一实施例中,业务引擎服务单元主要是业务运行时脚本执行引擎容器,用于解释业务脚本,执行业务数据,完成业务操作。
其主要包括三部分:
1.业务服务接口发布
接收请求,按照请求参数,获取到业务接口定义数据,用脚本引擎和插件引擎解释,执行业务逻辑,返回数据。
2.业务脚本执行引擎模块
Java脚本引擎,javascript能在java中运行解释。
实现了java程序和脚本之间的交互,是一类接口,是的java和js等脚本的交互。
3.业务模块插件执行模块
扩展了java脚本引擎,包装了成一个工具类,实现了一套业务模块插件类加载工具类。
主要包括
var service_loader=PLUGIN.load("server-name");//加载服务模块。
var service=service_loader.get("service_name");//从服务模块中获取服务类。
在具体实现时,其实施步骤可以包括:
1.产品人员,按照业务需求,按标准实现,定义开发一套业务模块接口,生成jar包,可以理解为一个二方库的生成。
2.通过业务模块插件系统,定义业务模块信息及jar包的上传,以及通过jar包,生成一些关于业务模块接口的元信息(包括接口定义、可配置项的定义等)。
3.产品开发人员,按照业务模块的接口标准,提供一份默认的实现。
4.通过业务模块插件系统,把产品的默认实现,在系统中,登记并上传jar包。
5.产品开发人员,通过业务接口配置系统,去定义业务接口,写对应接口的业务脚本。并发布接口。
6.给租户授予业务接口,并给租户装载业务模块。
7.租户,就可以通过业务引擎服务,调用接口,完成业务操作,业务操作中,调用业务引擎模块和插件引擎模块。
8.如果租户,存在个性化的需求,需要调整业务模块中的接口的实现。
9.租户的项目开发人员,根据个性化的需求,对业务模块中可扩展调整的接口,进行单独开发实现,生成jar包。
10.项目开发人员,通过业务模块插件系统,去定义插件资源记录,上传jar包。并把此插件资源授予租户。
11.验证接口,调用业务引擎服务,验证并完成租户个性化的业务扩展。
业务引擎服务单元的处理流程步骤可以:
1.用户端发起业务请求。
2.业务引擎服务接收请求,进行相对应行为的解释。
3.业务引擎服务,解释对应请求的行为接口。
4.业务脚本中,存在业务插件的加载。
5.通过业务插件的加载的名称,其中,加载的名称是业务模块的名称,如脚本中的“account-server”,获取租户的装载业务模块数据,如果不存在业务模块数据,即说明该租户,没有授权。
6.如果有装载业务模块数据,按照业务模块的加载机制加载服务,获取业务服务类。
7.按照脚本,执行服务类的方法,完成业务逻辑处理。
在本实施例中,本发明实施例提供了一种租户业务应用的拓展系统,其有益效果包括以下几点:
第一、根据租户装载业务服务插件,通过父子插件机制类加载机制,实现租户业务扩展个性化实现。
第二、根据租户装载服务插件,各租户业务在同一个应用服务环境上,业务按租户隔离执行方法。
第三、无需升级业务引擎服务,只需要通过业务模块插件管理,对租户进行装载、卸载或重载插件,便可变更租户的业务实现。
第四、应用服务可以通过业务接口配置系统,以脚本引擎的方式进行组装各业务服务模块的API,可以更好动态组装业务逻辑,完成不同的业务场景逻辑处理。
所属技术领域的技术人员可以清楚地了解到,为方便的描述和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
进一步的,本申请实施例还提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的租户业务应用的拓展方法。
进一步的,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上述实施例所述的租户业务应用的拓展方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种租户业务应用的拓展方法,其特征在于,所述方法包括:
在获取租户终端的拓展请求时,从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,所述预设资源数据库存有多个的插件数据,每个插件数据对应一种业务服务;
确定所述插件数据的加载类别,根据所述加载类别将所述插件数据添加至租户终端,以供租户终端进行应用拓展。
2.根据权利要求1所述的租户业务应用的拓展方法,其特征在于,所述从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,包括:
从所述拓展请求中获取租户终端的插件标识,基于所述插件标识加载租户终端对应的预设资源数据库,所述预设资源数据库划分多个不同优先级的插件类别,每个所述插件类别包含多个插件数据;
按照所述插件类别的优先级,从所述预设资源数据库查找所述插件标识对应的插件数据。
3.根据权利要求2所述的租户业务应用的拓展方法,其特征在于,所述从所述拓展请求中获取租户终端的插件标识,包括:
解析所述拓展请求得到请求路径;
拆分所述请求路径得到插件标识。
4.根据权利要求2所述的租户业务应用的拓展方法,其特征在于,所述确定所述插件数据的加载类别,包括:
将所述插件数据存储缓存中,并确定缓存是否存有所述插件标识;
若缓存中存有插件标识,则获取所述插件数据的优先级,得到加载类别;
若缓存中没有存有插件标识,则获取租户终端的编码,采用所述编码生成插件标识并存储在缓存中。
5.根据权利要求4所述的租户业务应用的拓展方法,其特征在于,所述采用所述编码生成插件标识并存储在缓存中,包括:
通过所述编码从预设的读取数据库中,获取到租户终端的类型资源数据;
按照所述插件类别的优先级,扫描所述类型资源数据,得到多个种类数据,每个所述种类数据对应一种插件数据;
从所述多个种类数据中筛选包含预设注解的目标种类数据;
对所述目标种类数据进行初始化得到插件标识,并将所述插件标识存储在缓存中。
6.根据权利要求1-5任意一项所述的租户业务应用的拓展方法,其特征在于,所述方法还包括:
获取租户终端的个性化请求,并确定所述个性化请求对应的个性化插件的加载类别;
基于所述个性化插件的加载类别编辑生成拓展数据包,并将所述拓展数据包发送至租户终端,以供租户终端将所述拓展数据包添加至插件项目中。
7.一种租户业务应用的拓展装置,其特征在于,所述装置包括:
提取模块,用于在获取租户终端的拓展请求时,从预设资源数据库中提取所述拓展请求对应的业务服务的插件数据,所述预设资源数据库存有多个的插件数据,每个插件数据对应一种业务服务;
拓展更新模块,用于确定所述插件数据的加载类别,根据所述加载类别将所述插件数据添加至租户终端,以供租户终端进行应用拓展。
8.一种租户业务应用的拓展系统,其特征在于,所述系统适用于如权利要求1-6任意一项所述的租户业务应用的拓展方法,所述系统包括:业务模块插件管理单元,业务接口配置单元,业务引擎服务单元;
业务模块插件管理单元,用于定义业务接口、定义业务接口的元数据、插件数据的传输、租户终端插件的装载与卸载、以及编辑插件数据的标识;
业务接口配置单元,用于定义租户终端的接口以及配置租户终端的接口信息;
业务引擎服务单元,用于调用接口完成插件拓展。
9.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6任意一项所述的租户业务应用的拓展方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-6任意一项所述的租户业务应用的拓展方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210866214.1A CN115269040B (zh) | 2022-07-22 | 2022-07-22 | 一种租户业务应用的拓展方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210866214.1A CN115269040B (zh) | 2022-07-22 | 2022-07-22 | 一种租户业务应用的拓展方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115269040A true CN115269040A (zh) | 2022-11-01 |
CN115269040B CN115269040B (zh) | 2023-04-14 |
Family
ID=83768142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210866214.1A Active CN115269040B (zh) | 2022-07-22 | 2022-07-22 | 一种租户业务应用的拓展方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115269040B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301831A (zh) * | 2023-03-20 | 2023-06-23 | 中国华能集团有限公司北京招标分公司 | 一种dp插件及其使用方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109670913A (zh) * | 2018-12-14 | 2019-04-23 | 泰康保险集团股份有限公司 | 为平台的租户提供服务的方法、装置、介质及电子设备 |
CN112118565A (zh) * | 2020-08-14 | 2020-12-22 | 金蝶医疗软件科技有限公司 | 多租户服务灰度发布方法、装置、计算机设备和存储介质 |
CN114328509A (zh) * | 2021-11-25 | 2022-04-12 | 泰康保险集团股份有限公司 | 一种业务处理方法和装置 |
CN114356400A (zh) * | 2022-01-10 | 2022-04-15 | 瀚云科技有限公司 | 云组态应用开发方法、装置及电子设备 |
-
2022
- 2022-07-22 CN CN202210866214.1A patent/CN115269040B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109670913A (zh) * | 2018-12-14 | 2019-04-23 | 泰康保险集团股份有限公司 | 为平台的租户提供服务的方法、装置、介质及电子设备 |
CN112118565A (zh) * | 2020-08-14 | 2020-12-22 | 金蝶医疗软件科技有限公司 | 多租户服务灰度发布方法、装置、计算机设备和存储介质 |
CN114328509A (zh) * | 2021-11-25 | 2022-04-12 | 泰康保险集团股份有限公司 | 一种业务处理方法和装置 |
CN114356400A (zh) * | 2022-01-10 | 2022-04-15 | 瀚云科技有限公司 | 云组态应用开发方法、装置及电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301831A (zh) * | 2023-03-20 | 2023-06-23 | 中国华能集团有限公司北京招标分公司 | 一种dp插件及其使用方法 |
CN116301831B (zh) * | 2023-03-20 | 2024-02-27 | 中国华能集团有限公司北京招标分公司 | 一种dp插件及其使用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115269040B (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9778967B2 (en) | Sophisticated run-time system for graph processing | |
US8978023B2 (en) | Canonical mechanism for securely assembling features into a mobile application | |
CN110389829B (zh) | 多租户环境中扩展对象的分类与分发 | |
US10908926B2 (en) | Plug-in management wrappers | |
US8407461B2 (en) | Plug-in system for software applications | |
US9400700B2 (en) | Optimized system for analytics (graphs and sparse matrices) operations | |
CN109814854B (zh) | 项目框架生成方法、装置、计算机设备和存储介质 | |
US20240054366A1 (en) | AI Application Deployment Method and Related Platform, Cluster, Medium, and Program Product | |
CN115269040B (zh) | 一种租户业务应用的拓展方法、装置及系统 | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN114531477A (zh) | 功能组件的配置方法、装置、计算机设备和存储介质 | |
CN115328569A (zh) | 处理数据冲突的方法、系统、电子设备及计算机可读存储介质 | |
CN113434582B (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN114546563A (zh) | 一种多租户页面访问控制方法和系统 | |
CN111324395B (zh) | 调用方法、装置和计算机可读存储介质 | |
CN108595160B (zh) | Js调用原生对象的方法、存储介质 | |
CN113568603B (zh) | 组件对象创建及接口方法调用方法、终端及存储装置 | |
CN112181407B (zh) | 业务实现处理方法及装置、系统、电子设备和存储介质 | |
CN110968566A (zh) | 基于迁移工具的国产化应用系统迁移方法 | |
CN116301758B (zh) | 基于事件时机点的规则编辑方法、装置、设备及介质 | |
US20240143487A1 (en) | Secure testing of attachment functionality of objects | |
US20240192936A1 (en) | Systems and methods for creating an extended smart card application file from multiple smart card application files | |
CN114064045A (zh) | 组件生成方法、装置、计算机设备和计算机可读存储介质 | |
CN115061835A (zh) | 方法调用关系的确定方法及装置 | |
CN116737591A (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 |