一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于多租户架构服务的租户需求处理方法和装置及电子设备与流程

2022-11-28 11:52:21 来源:中国专利 TAG:


1.本技术涉及多租户架构服务技术领域,具体而言,涉及一种用于多租户架构服务的租户需求处理方法和装置,还涉及相关电子设备。


背景技术:

2.软件即服务(software as a service,saas)是一种软件交付模式。在这种交付模式中,云端集中式托管软件及其相关的数据,用户仅需通过互联网,而不须通过安装即可使用软件。
3.saas通常有两种技术实现方式:“单租户saas”和“多租户saas”。
4.当前,多租户saas获得了更广泛使用。在多租户环境中,应用都是运行在同一个或者一组服务器上,被称为“单实例”架构。由此,多租户架构服务(saas)既通过一定的策略保证不同租户能共享同一个应用的运行实例,又能为用户提供独立的应用体验和数据空间。虽然租户和租户之间大功能可能是一致的,但是可能有一些定制化的功能。
5.为了实现租户的定制化需求,往往需要对所有租户共用的单实例的代码整体进行改写,而且改写的代码结构冗余。而且,该单实例针对不同租户的不同定制需求的代码混杂,各租户区分不清晰。导致租户定制化需求的增加、修改、删除等实现手段较为复杂,且呈现逻辑混乱,为代码查看带来困难,并可能导致定制化功能不可用。
6.背景技术描述的内容仅为了便于了解本领域的相关技术,不视作对现有技术的承认。


技术实现要素:

7.本技术的目的在于提供一种用于多租户架构服务的租户需求处理方法及相关装置和电子设备,其能够以结构清晰、易于理解的方式实现多租户架构服务下的不同租户的定制化需求,且希能够简化租户定制化需求的配置管理。
8.为了实现上述目的,本技术实施例采用的技术方案如下:第一方面,本技术实施例提供了一种用于多租户架构服务的租户需求处理方法,其可包括:定义用于租户前端调用的产品接口,在所述产品接口中具有具体类分区类型的判断逻辑;定义关联所述产品接口的抽象类分区;定义关联所述抽象类分区的多个具体类分区,每个所述具体类分区对应一个租户;根据多租户中的第一租户专有的第一定制化需求,在所述抽象类分区中配置对应所述第一定制化需求的第一抽象方法;根据所述第一租户专用的第一定制化需求,在对应所述第一租户的第一具体类分区中配置第一定制化需求的实现逻辑。
9.可选地,所述方法还可包括:根据多租户中的第二租户专有的第二定制化需求,在所述抽象类分区中配置对应所述第二定制化需求的第二抽象方法;根据所述第二租户专有的第二定制化需求,在对应所述第二租户的第二具体类分区中配置所述第二定制化需求的实现逻辑。
10.可选地,其中所述第一抽象方法还对应多租户中的第二租户专有的第二定制化需求。所述方法还可包括:根据所述第二租户专有的第二定制化需求,在对应所述第二租户的第二具体类分区中配置所述第二定制化需求的实现逻辑;其中,第一定制化需求的实现逻辑不同于第二定制化需求的实现逻辑,且在所述第一具体类分区中不配置所述第二定制化需求的实现逻辑,在所述第二具体类分区中不配置所述第一定制化需求的实现逻辑。
11.可选地,所述方法还可包括:定义关联所述抽象类分区的通用类分区,其中,所述通用类分区配置为被调用时返回空值并且由所述多租户共享。
12.可选地,所述方法还可包括:根据所述多租户的公用需求,在所述抽象类分区中配置对应所述公用需求的第三方法及其对应所述公用需求的实现逻辑。
13.可选地,所述方法还可包括:根据所述多租户的公用需求,在所述抽象类分区中配置对应所述通用需求的第三抽象方法;根据所述多租户的公用需求,在每个所述具体类分区中均配置对应所述公用需求的实现逻辑。
14.可选地,所述方法还可包括:响应所述第一租户执行第一定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取具体类分区类型;基于所述产品接口的调用,调用并执行所述抽象类分区中的代码方法,所述代码方法包括第一抽象方法;基于获取的具体类分区类型,确定所述第一租户对应的第一具体类分区,并基于所述抽象类分区中的代码方法的执行,调用并执行所述第一具体类分区中的第一定制化需求的实现逻辑,以向第一租户实现所述第一定制化需求。
15.可选地,所述方法还可包括:响应所述第一租户执行第一定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取第一租户的具体类分区类型;基于第一租户对所述产品接口的调用,调用并执行所述抽象类分区中的代码方法,所述代码方法包括第一抽象方法和第二抽象方法;基于获取的具体类分区类型,确定所述第一租户对应的第一具体类分区,并基于所述抽象类分区中的第一抽象方法的执行,调用并执行所述第一具体类分区中的第一定制化需求的实现逻辑,以向第一租户实现所述第一定制化需求;响应所述第二租户执行第二定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取第二租户的具体类分区类型;
基于第二租户对所述产品接口的调用,调用并执行所述抽象类分区中的所述代码方法;基于获取的具体类分区类型,确定所述第二租户对应的第二具体类分区,并基于所述抽象类分区中的第二抽象方法的执行,调用并执行所述第二具体类分区中的第二定制化需求的实现逻辑,以向第二租户实现所述第二定制化需求。
16.可选地,所述方法还可包括:响应所述第一租户执行第一定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取第一租户的具体类分区类型;基于第一租户对所述产品接口的调用,调用并执行所述抽象类分区中的代码方法,所述代码方法包括第一抽象方法;基于获取的第一租户的具体类分区类型,确定所述第一租户对应的第一具体类分区,并基于所述抽象类分区中的第一抽象方法的执行,调用并执行所述第一具体类分区中的第一定制化需求的实现逻辑,以向第一租户实现所述第一定制化需求;响应所述第二租户执行第二定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取第二租户的具体类分区类型;基于第二租户对所述产品接口的调用,调用并执行所述抽象类分区中的所述代码方法;基于获取的第二租户的具体类分区类型,确定所述第二租户对应的第二具体类分区,并基于所述抽象类分区中的第一抽象方法的执行,调用并执行所述第二具体类分区中的第二定制化需求的实现逻辑,以向第二租户实现所述第二定制化需求。
17.可选地,所述方法还可包括:响应所述租户执行公用需求的前端请求,调用所述产品接口,执行所述产品接口中的所述判断逻辑以返回空值;基于租户对所述产品接口的调用,调用并执行所述抽象类分区中的代码方法,所述代码方法包括第三方法及其对应所述公用需求的实现逻辑。
18.可选地,所述方法还可包括:定义关联所述抽象类分区的通用类分区,其中,所述通用类分区配置为被调用时返回空值并且由所述多租户共享;当未获取到具体类分区类型时,调用并执行所述通用类分区中的代码方法,从而不执行租户的定制化需求。
19.第二方面,本技术实施例还提供了一种用于多租户架构服务的租户需求处理装置,其可包括:第一定义单元,用于定义用于租户前端调用的产品接口,在所述产品接口中具有具体类分区类型的判断逻辑;第二定义单元,用于定义关联所述产品接口的抽象类分区;第三定义单元,用于定义关联所述抽象类分区的多个具体类分区,每个所述具体类分区对应一个租户;第一配置单元,用于根据多租户中的第一租户专有的第一定制化需求,在所述抽象类分区中配置对应所述第一定制化需求的第一抽象方法;
第二配置单元,用于根据所述第一租户专用的第一定制化需求,在对应所述第一租户的第一具体类分区中配置第一定制化需求的实现逻辑。
20.第三方面,本技术实施例还提供了一种电子设备,可包括:存储器,用于存储一个或多个程序;处理器;当所述一个或多个程序被所述处理器执行时,实现上述的方法。
21.第三方面,本技术实施例还提供了一种存储介质,存储介质存储有计算机程序,所述计算机程序配置成被运行时实现上述的方法。
22.相对于现有技术,本技术具有以下有益效果:本技术提供了一种用于多租户架构服务的租户需求处理方法及相关装置,其定义用于租户前端调用的产品接口,在所述产品接口中具有具体类分区类型的判断逻辑;定义关联所述产品接口的抽象类分区;定义关联所述抽象类分区的多个具体类分区;根据多租户中的第一租户专有的第一定制化需求,在所述抽象类分区中配置对应所述第一定制化需求的第一抽象方法;根据所述第一租户专用的第一定制化需求,在对应所述第一租户的第一具体类分区中配置第一定制化需求的实现逻辑。由于本技术的技术方案中通过定义不同的具体类分区并在每个具体类分区可以配置租户的定制化需求逻辑,而且通过接口的类型判断和抽象类的方法实现,实现了不同租户/商户间的定制化功能代码分离,清晰易懂;而且实现了定制化需求的配置式、插拔式的管理;另外,各租户/商户之间定制化功能互不影响。
23.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
24.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
25.图1为示例性多租户架构服务的架构示意图。
26.图2为现有技术中代码的一种架构示意图。
27.图3为本技术实施例提供的服务器的一种示意性结构框图。
28.图4为本技术实施例提供的用于多租户架构服务的租户需求处理方法的示例性流程图。
29.图5为本技术实施例提供的用于多租户架构服务的租户需求处理方法的另一种示例性流程图。
30.图6为本技术实施例提供的用于多租户架构服务的租户需求处理方法的另一种示例性流程图。
31.图7为本技术实施例提供的用于多租户架构服务的租户需求处理方法的另一种示例性流程图。
32.图8为本技术实施例提供的用于多租户架构服务的租户需求处理方法的另一种示
例性流程图。
33.图9为本技术实施例提供的用于多租户架构服务的租户需求处理方法的另一种示例性流程图。
34.图10为本技术实施例提供的用于多租户架构服务的租户需求处理方法的一种应用实例类图。
35.图11为本技术实施例提供的用于多租户架构服务的租户需求处理方法的应用实例的实现的流程图。
36.图12为本技术实施例提供的用于多租户架构服务的租户需求处理装置的结构示意图。
具体实施方式
37.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
38.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
39.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。需要说明的是,在本文中,术语“第一”、“第二”等也不要求或者暗示这些实体或操作之间存在任何关系或者顺序。
40.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
41.saas是software-as-a-service的缩写名称,意思为软件即服务,即通过网络提供软件服务。saas平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得saas平台供应商提供的服务。
42.saas通常有两种技术实现方式:“单租户saas”和“多租户saas”。在本文中,租户(tenant)指saas平台的用户,并且也可称为商户(merchant),一个租户通常对应一个组织。
43.本技术实施例的方案是应用于多租户(multi-tenant)架构服务的。
44.如图1所示,示出了示例性多租户架构的服务(saas服务)的架构示意图,图中示例性示出了租户a与租户b,当然地,还可能存在更多的租户,在此不做限定。
45.如图1所示,多个租户、如租户a与租户b的应用运行在同一个或同一组服务器上,即以单实例方式运行;而这些多个租户的数据、如数据a和b可以以区隔开的方式保存在数据库中。尽管图1示出了多个租户的数据保存在相同数据库中,但是也可以分布式保存。
46.在此基础上,服务端、即服务提供方可以采用一套基础代码的应用实例支持所有
租户,由此可以针对公用需求向租户a与租户b提供相同的服务。但对于租户a与租户b而言,基于个性化的考量,租户a与租户b可能会定制化不同的需求。在本文中,不同的定制化需求包括不同类别的定制化需求,也包括同类的定制化需求具有不同的细节或子功能。例如,租户a需要有定制化的智能客服,而租户b需要有定制化的智能决策。或者,租户a和租户b均需要有定制化的智能客服,但是具体细节或流程不相同。如图2示例性地示出了,租户a具有两个定制化需求a、c和公用需求b;而租户b具有两个定制化需求d、f和公用需求b。
47.然而,对于服务端、即服务提供方而言,为实现该多租户架构服务的不同租户的不同定制化需求,在进行上述的基础代码管理时,由于所有租户的代码融合,不同租户的不同定制化需求需要在基础代码中基于判断逻辑结构分别实现,由此实现的代码冗余,且存在大量逻辑判断,而且各租户、各租户的各定制需求的区分不清晰,极易出错,导致定制化功能不可用。而代码的类图架构展示极为混乱,不够优雅。这样的构造也不利于租户定制化需求的快速配置和插拔式使用。
48.有鉴于此,为了解决上述问题,本技术实施例提供了一种用于多租户架构服务的租户需求处理方法和装置以及相关的电子设备及存储介质。
49.需要说明的是,本技术提供的方法和装置可应用于如图1所示的多租户架构服务(saas服务)中,尤其是可应用于基于多租户架构服务的电子设备、如计算机中,该计算机可以是一个或多个服务器,可以是集中式的,也可以是分布式的。
50.图3示出本技术实施例提供的电子设备、如计算机300的一种示意性结构框图,的电子设备300包括存储器302、处理器301和通信接口303,该存储器302、处理器301和通信接口303相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
51.存储器302可用于存储软件程序及模块,如本技术实施例提供的用于多租户架构服务的租户需求处理装置对应的程序指令或模块,处理器301通过执行存储在存储器302内的软件程序及模块,从而执行各种功能应用以及数据处理,进而执行本技术实施例提供的用于多租户架构服务的租户需求处理方法的步骤。该通信接口303可用于与其他节点设备进行信令或数据的通信。
52.其中,存储器302可以包括,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除可编程只读存储器(electric erasable programmable read-only memory,eeprom)等。
53.处理器301可以是一种集成电路芯片,具有信号处理能力。该处理器101可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
54.可以理解,图3所示的结构仅为示意,电子设备300还可以包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或
其组合实现。
55.下面以服务器作为示意性执行主体,对本技术实施例提供的用于多租户架构服务的租户需求处理方法进行示例性说明。
56.作为一种可选的实现方式,请参阅图4,该用于多租户架构服务的租户需求处理方法可包括:s402:定义用于租户前端调用的产品接口。
57.s404:定义关联所述产品接口的抽象类分区。
58.s406:定义关联所述抽象类分区的多个具体类分区,每个所述具体类分区对应一个租户。
59.s408:根据多租户中的第一租户专有的第一定制化需求,在所述抽象类分区中配置第一抽象方法。
60.s410:根据所述第一租户专用的第一定制化需求,在对应所述第一租户的第一具体类分区中配置第一定制化需求的实现逻辑。
61.在步骤s402中,该方法还包括:在所述产品接口中具有具体类分区类型的判断逻辑。在一些实施例中,在所述产品接口中具有具体类分区类型的判断逻辑可以包括在产品接口中定义或配置相应的经改造的模式,例如工厂模式,这将在下文进一步说明。
62.在本技术实施例中,所述抽象方法可以包括空方法。
63.在图4所示的实施例中,第一抽象方法对应于第一定制化需求。例如,对于图1所示的租户a,第一抽象方法、如call()可以对应于租户a的第一定制化需求a、如智能客服。
64.在进一步的实施例中,还可以针对第二租户配置并实现其定制化需求。
65.如图5所示,在图4所示实施例的基础上,该租户需求处理方法还可包括:s412:根据多租户中的第二租户专有的第二定制化需求,在所述抽象类分区中配置第二抽象方法;s414:根据所述第二租户专有的第二定制化需求,在对应所述第二租户的第二具体类分区中配置所述第二定制化需求的实现逻辑。
66.在图5所示的实施例中,第二抽象方法对应于第二定制化需求。由此,结合图4和图5,针对不同租户/商户的不同的定制化需求,可以在抽象类分区中分别定义各自的抽象方法。例如,对于图1所示的租户a,第一抽象方法、如call()可以对应于租户a的第一定制化需求a、如智能客服;对于图1所示的租户b,第二抽象方法、如consult()可以对应于租户a的第二定制化需求d、如智能决策。
67.在该实施例中,针对不同的定制化需求定义不同的抽象方法,可以应用于不同类别的定制化需求,也可应用于同类的定制化需求具有不同的细节或子功能。
68.基于在抽象类中定义不同的抽象方法,且在各自的具体类中配置不同需求的实现逻辑,在图5的实施例中可以实现各租户定制需求的可配置、可插拔的效果。
69.在针对第二租户配置并实现其定制化需求的替代实施例中,如图6所示,可以针对不同定制化需求在抽象类分区中定义相同的抽象方法,但是在各租户的各自的具体类分区中定义不同的实现逻辑。
70.如图6所示,在图4所示实施例的基础上,该租户需求处理方法还可包括:s414’:根据所述第二租户专有的第二定制化需求,在对应所述第二租户的第二具
体类分区中配置所述第二定制化需求的实现逻辑。
71.在图6所示的实施例中,第一抽象方法还对应第二租户专有的第二定制化需求。
72.而且,在图6所示的实施例中,第一定制化需求的实现逻辑不同于第二定制化需求的实现逻辑,且在所述第一具体类分区中不配置所述第二定制化需求的实现逻辑,在所述第二具体类分区中不配置所述第一定制化需求的实现逻辑。
73.由此,结合图4和图6,针对不同租户/商户的不同的定制化需求,尤其是针对不同租户/商户的同类的定制化需求具有不同的细节或子功能的情形,可以在抽象类分区中分别定义相同的抽象方法,但是在各自的具体类中配置不同的实现逻辑。例如,对于图1所示的租户a,第一抽象方法、如loan()可以对应于租户a的第一定制化需求c、如租户a的智能批贷;对于图1所示的租户b,抽象类中的相同的第一抽象方法、如loan ()可以对应于租户b的第二定制化需求f、如租户b的智能批贷,其中租户a的第一定制化需求c、如智能批贷虽然与租户b的第二定制化需求f、如智能批贷类型相同,但是实现或流程等细节可以不相同,即仍然是不同的定制化需求。
74.基于在抽象类中定义相同的抽象方法,但是在各自的具体类中配置不同需求的实现逻辑,而且在各自的具体类中不配置其他租户的定制需求的实现逻辑,在图6的实施例中仍可以实现各租户定制需求的可配置、可插拔的效果。
75.在进一步的实施例中,该方法还可以提供定制化需求的中断机制。例如,该方法还可包括:a1定义关联所述抽象类分区的通用类分区,其中,所述通用类分区配置为被调用时返回空值并且由所述多租户共享。
76.在进一步的实施例中,该方法还针对各租户公用的需求提供简单、易于获取的配置方案。
77.例如,在其中的一种方案中,该方法还可包括:b1根据所述多租户的公用需求,在所述抽象类分区中配置对应所述公用需求的第三方法及其对应所述公用需求的实现逻辑。
78.而作为上述方案的替代方案,该方法可包括:c1根据所述多租户的公用需求,在所述抽象类分区中配置对应所述通用需求的第三抽象方法;c2根据所述多租户的公用需求,在每个所述具体类分区中均配置对应所述公用需求的实现逻辑。
79.在第一种方案中,公用需求的实现逻辑均在抽象类分区中配置。而在第二种方案中,公用需求的实现逻辑在具体类分区中配置,这可能会提高一定的配置复杂度,但是有利于实现公用需求的定制化。
80.基于本技术的上述实施例,当租户发起执行其所需需求的前端请求时,可以通过多种不同的实施例来获得需求的执行。
81.如图7所示的实施例中,针对第一租户(租户a)的第一定制化需求(如智能客服或智能批贷),该方法还可以包括如下步骤:s702:响应所述第一租户执行第一定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取具体类分区类型;s704:基于所述产品接口的调用,调用并执行所述抽象类分区中的代码方法,所述代码方法包括第一抽象方法;s706:基于获取的具体类分区类型,确定所述第一租户对应的第一具体类分区,并基于所述抽象类分区中的代码方法的执行,调用并执行所述第一具体类分区中的第一定制
化需求的实现逻辑,以向第一租户实现所述第一定制化需求。
82.如图7所示的实施例,尤其是可以在图4至图6所示的实施例基础上实现。
83.相应地,在图5所示的实施例的基础上,在如图8所示的实施例中,针对第一和第二租户的各自不同的定制化需求,该方法可以包括:s802:响应所述第一租户执行第一定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取第一租户的具体类分区类型;s804:基于第一租户对所述产品接口的调用,调用并执行所述抽象类分区中的代码方法,所述代码方法包括第一抽象方法和第二抽象方法;s806:基于获取的具体类分区类型,确定所述第一租户对应的第一具体类分区,并基于所述抽象类分区中的第一抽象方法的执行,调用并执行所述第一具体类分区中的第一定制化需求的实现逻辑,以向第一租户实现所述第一定制化需求;s808:响应所述第二租户执行第二定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取第二租户的具体类分区类型;s810:基于第二租户对所述产品接口的调用,调用并执行所述抽象类分区中的所述代码方法;s812:基于获取的具体类分区类型,确定所述第二租户对应的第二具体类分区,并基于所述抽象类分区中的第二抽象方法的执行,调用并执行所述第二具体类分区中的第二定制化需求的实现逻辑,以向第一租户实现所述第一定制化需求。
84.作为替代的实施例,在图6所示的实施例的基础上,在如图9所示的实施例中,针对第一和第二租户的各自不同的定制化需求,该方法可以包括:s902:响应所述第一租户执行第一定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取第一租户的具体类分区类型;s904:基于第一租户对所述产品接口的调用,调用并执行所述抽象类分区中的代码方法,所述代码方法包括第一抽象方法;s906:基于获取的第一租户的具体类分区类型,确定所述第一租户对应的第一具体类分区,并基于所述抽象类分区中的第一抽象方法的执行,调用并执行所述第一具体类分区中的第一定制化需求的实现逻辑,以向第一租户实现所述第一定制化需求;s908:响应所述第二租户执行第二定制化需求的前端请求,调用所述产品接口,执行所述产品接口中的判断逻辑以获取第二租户的具体类分区类型;s910:基于第二租户对所述产品接口的调用,调用并执行所述抽象类分区中的所述代码方法;s912:基于获取的第二租户的具体类分区类型,确定所述第二租户对应的第二具体类分区,并基于所述抽象类分区中的第一抽象方法的执行,调用并执行所述第二具体类分区中的第二定制化需求的实现逻辑,以向第二租户实现所述第二定制化需求。
85.作为图7至图9所示的实施例的进一步可能性,该方法还可以提供定制化需求的中断机制的执行。例如,该方法还可包括:d1当未获取到具体类分区类型时,调用并执行所述通用类分区中的代码方法,从而不执行租户的定制化需求。
86.作为图7至图9所示的实施例的进一步可能性或替代方案,针对包括第一和第二租户在内的多租户的公用需求的执行,该方法可包括:e1响应所述租户执行公用需求的前端
请求,调用所述产品接口,执行所述产品接口中的所述判断逻辑以返回空值;e2基于租户对所述产品接口的调用,调用并执行所述抽象类分区中的代码方法,所述代码方法包括第三方法及其对应所述公用需求的实现逻辑。
87.作为一种实现方式,本技术提供的用于多租户架构服务的租户需求处理方法可以基于java语言实现,下文将结合图10和图11描述基于java语言的一种示例性实现方式。但是,可以想到根据本技术的其他实施例可以基于其他语言实现,下文中以java语言为例子的实现可以采用其他语言实现,这落入本技术的范围图。
88.如图10所示,可以首先定义产品接口,其用于租户前端调用的产品接口,如图示的merchant接口。
89.继续如图10所示,还可以定义抽象类分区、如图10所示的抽象类分区abstractmerchant以实现产品接口、merchant接口。为实现产品接口,抽象类分区abstractmerchant与产品接口、merchant接口关联。
90.尽管图10未具体示出,在抽象类分区中可以多种代码方法,这些代码方法可以包括对应各租户(所有租户)的各定制需求(所有定制需求)的抽象方法。这些抽象方法的配置可以如图6所示实施例那样一对一配置,也可以如图7所示实施例那样一对多配置,或者两者的结合。
91.继续如图10所示,还可以多个具体类分区、如amerchant和bmerchant以实现抽象类分区,每个具体类分区均可对应一个租户。例如图10示出了对应第一租户(租户a)的具体类分区amerchant和对应第二租户(租户b)的具体类分区bmerchant。为实现抽象类分区,各个具体类可以与抽象类相关联。例如,每个具体类分区均为抽象类分区的子类,二者可以为继承关系。
92.尽管图10未具体示出,在各具体类分区中,可以根据相应的租户专有的定制化需求配置实现这些需求的实现逻辑。本领域技术人员将明白,各租户专有的定制化需求的实现逻辑仅在相应的具体类分区中配置,而不在其他具体类分区中配置。
93.具体地,可以在抽象类中定义实现所有定制化需求的空方法,并在在具体类中定义实现定制需求的语言逻辑。
94.由于每个具体类分区用于实现一个租户的定制化需求逻辑,且每一个具体类分区中的定制化需求并行展示,因此代码编译者可以直观的看到对应具体类分区的所有定制化需求,代码的展示更加方便,同时便于各租户的定制化需求的可配置、可插拔的管理。
95.如图10中进一步示出,还可以定义通用类分区generalmerchant,其可以与抽象类分区相关联,并且同样可以是抽象类分区的子类,为继承关系。
96.在该通用类分区中,可以不配置任何实现逻辑并且可以为所有租户公用。由此,该通用类分区被调用时可以返回空值。
97.尽管图10未具体示出,在一个实施例中,还可以在抽象类中配置对应公用需求的第三方法及其对应所述公用需求的实现逻辑。即,抽象类分区的代码方法可以包括第三方法,该第三方法不是抽象方法或空方法,其具有用于实现公共需求的实现逻辑。
98.需要说明的是,java中包括多种模式,例如工厂模式,适配器模式以及决策模式等,在定义产品接口、抽象类分区以及具体类分区时,可以采用适配器模式或者工厂模式,在此不做限定。
99.在一个具体实施例中,结合图10和图11所示,可以借助于工厂模式在产品接口中配置具体类分区类型的判断逻辑,如图10所示的getmerchanttype()。相应地,也可以在各个具体类中配置具体类分区类型的判断逻辑作为调用具体类的调用条件,如图10所示的getmerchanttype()。
100.并且,在定义各个具体类分区情况下,可以对子抽象了进行初始化。如图10和图11所示的实施例中,在工厂模式下可以通过定义merchantfactory来初始化具体的具体类分区来实现上述判断逻辑,由此根据租户的配置,调用具体的具体类分区并执行,其中,每个具体类分区均包括该租户的定制化需求的实现逻辑。
101.在一个示例性实施例中,定义merchantfactory的伪代码如下所示:public class merchantfactory {
ꢀꢀꢀꢀ
private static map《integer, merchant》 merchanttypemap = new hashmap《》();
ꢀꢀꢀꢀ
@autowired
ꢀꢀꢀꢀ
private map《string, merchant》 merchantmap;
ꢀꢀꢀꢀ
public static merchant get(merchanttypeenum merchanttype) {
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(merchanttype == null){
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
log.info("merchantfactory
ꢀ‑
》 get
ꢀ‑
》 merchanttype is null, set merchanttypeenum.general !");
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
return merchanttypemap.get(merchanttypeenum.general.getcode());
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
return merchanttypemap.get(merchanttype.getcode());
ꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
@postconstruct
ꢀꢀꢀꢀ
public void init() {
ꢀꢀꢀꢀꢀꢀꢀꢀ
for (map.entry《string, merchant》 en : merchantmap.entryset()) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
merchanttypemap.put(en.getvalue().getmerchanttype().getcode(), en.getvalue());
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}}如前所述,产品接口、抽象类分区以及具体类分区之间依次关联,它们尤其是继承关系。
102.如图11结合图10所示,当租户请求执行定制化需求时,可以在产品接口merchant获取该租户配置的租户类型merchanttype(如租户a),并且可以基于该确定的租户类型merchanttype通过merchantfactory来获取具体类分区、即具体租户merchant分区。与此同时,尽管图11未示出,基于上述的关联关系,同时将执行产品接口的其他代码方法,并进而执行抽象类分区中的代码方法,包括对应于不同租户的不同定制化需求的抽象方法或空方
法、如租户a的需求a、需求c和租户b的需求d以及需求e。并且,执行抽象类分区中的代码方法可选地还包括执行公用需求、如租户a和租户b的需求b的第三方法及其实现逻辑。
103.如图11结合图10所示,若merchanttype获取成功,则调用相应的具体类分区,并基于该类分区与抽象类分区的关联执行该具体分区中的定制需求的实现逻辑。若merchanttype未能获取成功,则调用通用类分区,而不执行租户的定制化需求的处理。
104.需要说明的是,不同具体类分区种的定制化需求逻辑相互独立,互不影响。
105.如前所述地,所有定制化需求的空方法都在公用的抽象类中定义,并在具体类中定义各自定制需求的逻辑,不同具体类分区中定制化需求逻辑不同,进而在具体实现中,可以执行对应的定制化需求。
106.例如,对于第一租户而言,其只有第一定制化需求,而没有第二定制化需求,在此基础上,程序在执行时,抽象类分区中的第一定制化需求与第二定制化需求的空方法均被调用执行,但由于第一具体类分区中仅定义了第一定制化需求逻辑,因此其只会执行第一定制化需求,而不执行第二定制化需求。
107.此外,对与任一租户而言,当响应该租户的第一定制化需求请求指令时,依据所述请求指令调用所述产品接口,并调用所述抽象类分区实现所述第一抽象方法,然后判断调用是否成功,如果调用成功,则执行所述第一定制化需求逻辑,且不执行其它定制化需求逻辑与所述通用需求逻辑。如果调用失败,则调用所述抽象类分区实现所述第三抽象方法,以执行所述通用需求逻辑。
108.需要说明的是,在具体实现过程中,租户的配置可以通过可配置页面实现,例如由管理账户的配置页面实现由此,可根据预设的配置信息,实现对具体类分区的配置与展示。
109.作为优选的例子,根据本发明实施例的方案还能提供高度可分离且高度可定制化的实现效果。例如,当具体类分区包括具体类分区a、具体类分区b以及具体类分区c时,平台的管理账户能够展示并操作具体类分区a、具体类分区b以及具体类分区c,而可以向租户a开放具体类分区a,向租户b开放具体类分区b,以便以可分离的方式运行租户定制各自的定制化需求。在一些可选的示例中,平台提供方可以针对需求提供常规的实现逻辑,如在各个具体类分区中均提供智能客服call()的实现逻辑,租户可以在其各自分区中更改智能客服的实现逻辑或者删除该实现逻辑,由此实现可配置、可插拔管理,又不影响其他租户。
110.通过本技术提供的用于多租户架构服务的租户需求处理方法,一方面,可以在存在定制化需求时,按照定制化需求界面进行展示;而当并未配置定制化需求时,返回通用界面进行展示,实现了插拔式的管理,使得管理更加方便。另一方面,各租户之间的定制化需求对应一个独立的具体类分区,因此各租户之间的定制化功能互不影响,同时,各租户之间的定制化需求代码分离,代码更加简洁,便于查看。
111.基于上述实现方式,请参阅图12,本技术还提供了一种用于多租户架构服务的租户需求处理装置1200,该用于多租户架构服务的租户需求处理装置1200包括:第一定义单元1210,用于定义用于租户前端调用的产品接口,在所述产品接口中具有具体类分区类型的判断逻辑。
112.第二定义单元1220,用于定义关联所述产品接口的抽象类分区。
113.第三定义单元1230,用于定义关联所述抽象类分区的多个具体类分区,每个所述具体类分区对应一个租户。
114.第一配置单元1240,用于根据多租户中的第一租户专有的第一定制化需求,在所述抽象类分区中配置对应所述第一定制化需求的第一抽象方法。
115.第二配置单元1250,用于根据所述第一租户专用的第一定制化需求,在对应所述第一租户的第一具体类分区中配置第一定制化需求的实现逻辑。
116.综上所述,本技术提供了一种用于多租户架构服务的租户需求处理方法及相关装置,其定义用于租户前端调用的产品接口,在所述产品接口中具有具体类分区类型的判断逻辑;定义关联所述产品接口的抽象类分区;定义关联所述抽象类分区的多个具体类分区;根据多租户中的第一租户专有的第一定制化需求,在所述抽象类分区中配置对应所述第一定制化需求的第一抽象方法;根据所述第一租户专用的第一定制化需求,在对应所述第一租户的第一具体类分区中配置第一定制化需求的实现逻辑。由于本技术的技术方案中能够定义不同的具体类分区,且每个具体类分区可以定义一个租户的定制化需求,因此,当在查看租户的定制化需求时,可以直接通过具体类分区进行查看,无需逐个展示,因此代码更加简单,且用户查看代码更加方便。
117.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。
118.也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
119.也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
120.另外,在本技术实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
121.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
122.虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献