1. 数据可配置性
定制字段:根据客户的需求在数据表上增加相应的定制字段来保存扩展数据。例如,根据客户33的需求,在客户表中增加来源Source和Introducer两个字段 。跟客户40的需求在客户表中增加salary和work两个字段。这种方式的缺点就是随着客户的增多,客户表的字段数据将会变的非常多,一个客户定制的字段对于另外一个客户来说是毫无意义的,严重破坏了数据表的结构。但是其不需要处理复杂的数据延伸的追踪。
预定义字段:在用户可能有扩展需求的表中预设一定数量的字段。当用户提出扩展需求时,使用其中的一个或者多个字段来保存扩展数据。其缺点是无法事先确定预定义字段的数量。
名称值对:将扩展数据的保存和原数据表分离,另外用一个统一的扩展数据表来保存。扩展数据表将数据表的横向扩展列转换为纵向的数据集,将每一条原始数据记录的一个扩展字段,都保存成一条扩展数据行。将数据表中的数据记录与配置元数据表中的配置记录关联,构成扩展数据记录。可以提供无限数量的自定义扩展字段。 但是其增加数据操作的复杂性,查询时也要多次访问数据库才能得到完整的业务数据。
2.功能可配置性
原子功能划分
功能分解遵循的原则:
每个功能都是有价值的
每个功能都是不可再细分的
功能间不可重叠
功能间不可依赖循环
整个系统功能是完整的
并不是所有的原子功能都可以单独使用的。有些功能是需要依赖其他功能才能使用,功能之间是存在一定依赖关系的。例如,用户没有购买“产品管理”模块,那么他就不能在“客户管理”模块使用“相关产品”这一功能。
功能包设计
当系统功能被划分为许多原子功能后,直接配置原子功能给每个租户是比较复杂的。需要根据用户类型和使用的场景,对原子功能进行打包,然后为每个用户配置其合适的功能包。功能包的设计要遵循高内聚、低耦合的原则,尽量将相关的和相互依赖的原子功能设计在一个功能包中。同时应该减少功能包和功能包之间的依赖,使得各个功能包尽可能独立的进行操作使用。
销售包的设计
通过功能包的设计,虽然可以将系统功能组合成几个相对比较独立的部分,但是这些功能包仍然不可以完全独立使用,也就不能够单独销售。为了让用户购买了系统以后可以充分使用其同能,需要按照不同的商业意图构造合适用户的销售包。例如,按照客户使用功能的多少,可以把系统划分为最小版、标准版、完整版。按照客户所属的行业类型,可以划分为服务行业版和制造行业版。
3.界面可配置性
系统菜单可配置性
同样的菜单对不同的租户来说,可能有不完全一样的名字。例如,CRM中的客户管理,在医院使用时,就得改成病人管理,客户服务人员就 得改成医生,客户服务记录就是就诊记录等。另外菜单的层次结构和分布,不同的租户可能也会有不同的要求。在设计上需要考虑以下几个问题:
一个用户一套菜单
一个菜单可以关联一个子功能
组织成树型结构,构成上下级菜单结构
同级菜单之间还存在显示顺序的问题
界面元素可配置性
各功能界面上的内容也是供用户和系统交互的界面元素。不同的租户可能有各种不同的需求,无论对页面元素的个数、位置、顺序,还是元素的含义,租户都会有一些个性化的需求。 对于在设计时设定的界面元素,一般情况下是不允许删除的,但有时候还是允许租户将一些无关紧要的字段隐藏。另外,同一个界面上同一个字段代表的含义可能是不一样的。例如,“客户新建”界面上有一个字段叫“客户姓名”,可有的租户就喜欢把它叫做“顾客姓名”或者“代理商姓名”。
4.流程可配置性
5.配置元数据管理
6.可配置系统运行
分享到:
相关推荐
本章将深入探讨如何在应用中实现Multi-Tenant的可配置性,确保每个租户可以根据自身需求定制功能。 一、Multi-Tenant架构的核心概念 1. 数据隔离:在Multi-Tenant架构中,租户的数据必须彼此隔离,确保数据安全。...
【标题】"leslie8195-ruo-yi-vue-multi-tenant-master_java_在线教育软件"指的是一个基于Java技术开发的在线教育平台项目,名为“若依多租户系统”,它采用Vue.js前端框架,具备多租户功能,能够支持多个独立的教育...
在多租户架构中,数据和配置可以根据租户进行隔离,确保每个租户的数据安全性和独立性。这种架构的优点包括资源共享、降低运营成本、简化维护和更新流程。 在Laravel框架中实现多租户,通常涉及以下几个关键步骤: ...
在IT行业中,构建Multi-Tenant应用是一个重要的设计模式,它允许单个软件实例服务于多个独立的客户群体,每个客户群体称为一个租户。这种模式在云计算、SaaS(Software as a Service)应用中非常常见,因为它能有效...
这个“mybatis-plus-multi-tenancy_springboot多租户实现例子.zip”压缩包提供了一个使用SpringBoot和MyBatis Plus实现多租户系统的示例。以下是对这个项目的关键知识点的详细解释: 1. **多租户架构**:多租户是指...
多租户节点-RED管理应用程序 一个小型Web应用程序,用于使用Docker站起新的Node-RED实例。 这纯粹是为了实现PoC,真正的生产部署将需要更多功能。 下载 $ git clone --recurse-submodules ...
总结来说,"laravel-pgsql-multi-tenant-migrate"项目是一个专为Laravel与PostgreSQL设计的多租户数据库迁移解决方案,它通过自定义的Artisan命令简化了多租户环境下的数据库操作,提高了开发和部署的效率。...
本指南演示了如何使用Windows Azure从头开始创建一个多租户的软件即服务(SaaS)应用程序,以便在云中运行。
在IT行业中,多租户(Multi-Tenant)架构是一种广泛应用于云计算、SaaS(Software as a Service)等领域的设计模式。这种模式允许单个应用程序实例为多个客户提供服务,每个客户(或租户)都有自己的独立数据和配置...
gem 'activerecord-multi-tenant' 支持的Rails版本 支持从4.2或更高版本(最高6.0)开始的所有Ruby on Rails版本。 该gem仅支持ActiveRecord(Rails的默认ORM),而不支持诸如Sequel之类的替代ORM。 用法 要求
这样做, prisma-multi-tenant可以使这些过程自动化,并帮助您制作多租户应用程序。 为什么我需要prisma-multi-tenant ? 因为prisma-multi-tenant不仅允许您仅使用服务器中的几行代码即可无缝访问多个数据库,而且...
submodules https://github.com/hardillb/multi-tenant-node-red-k8s.git先决条件创建机密并设置域在项目根目录中运行./setup.sh将生成一个deployment/secret.yml文件,其中包含用于连接到Kubernetes API的详细信息...
总之,"fusionpbx-4.2.zip_freeswitch_full_fusionpbx 4.2_multi-tenant_pbx"提供了完整的FusionPBX 4.2部署包,集成了强大的FreeSwitch平台,为企业和服务提供商提供了功能强大、易于管理的多租户PBX解决方案。...
Kubernetes的多租户节点-RED管理应用程序 一个小型Web应用程序,用于使用Kubernetes站起新的Node-RED实例。 这纯粹是为了实现PoC,真正的生产部署将需要更多功能。 下装 $ git clone --recurse-submodules ...
藏经阁-In-Flux Limiting for a Multi-Tenant Logging Service 本文档主要介绍 Symantec 的内部云团队在构建多租户日志记录服务时遇到的挑战和解决方案。该服务使用 InfluxDB 作为时间序数据存储,旨在处理大量的...
基于RuoYi-Vue扩展的多租户框架(SpringBoot,Spring Security,JWT,Vue&Element的前所有权分离权限管理系统) 环境准备 1.clone项目到本地 2.找到项目目录下脚本文件/ruo-yi-vue-multi-tenant/ruoyi/multi_tenant...
mongoose-oauth-store-multi-tenant 猫鼬休息帮手 猫鼬用户存储多租户 贡献 请检查最新的母版,以确保尚未实现该功能或尚未修复该错误 检查问题跟踪器,确保没有人请求和/或提供它 分叉项目 启动功能/错误修正...
角度全栈多租户 对 yeoman 的 angular-fullstack 生成文件进行了一些修改,以允许多租户。 允许子域特定数据库和套接字连接的 SaaS 架构。 签出项目。 在您的终端/cmd 中,从项目的根目录运行以下命令。 安装 ...
ASP .NET Core API多租户示例项目说明这是在ASP .NET Core API项目中使用多个租户的示例实现。 使用: EF核心识别租户的中间件一个全局数据库(MT_Global) 每个租户一个数据库(在此示例中:MT_TenantOne和MT_...
多租户架构允许单一的应用程序实例为多个独立的客户或组织提供服务,每个客户或组织的数据和配置都是隔离的。 在Laravel的多租户实现中,核心概念包括以下几个方面: 1. **数据隔离**:每个租户的数据必须独立存储...