使用多租户或自定义解决方案

问题描述

这不是问题,而是关于考虑到 abp 概念的更好方法的问题或建议。就我而言,有不同类型的角色与一些核心实体交互。说吧。

实体:

医疗索赔:FullAuditedEntity

药房索赔:FullAuditedEntity

票证:FullAuditedEntity

角色:

管理员

经理

审核员

保险公司

专业记账员

药房账单

医院账单

医师(用户

与定义实体的真正交互是角色到角色,例如。 MedicalClaim 由 ProfessionalBiller 或医师向保险公司收费。用户属于公司或个人医生。经理、管理员和审核员是上一级用户

MULTITENANCY = TRUE 如果使用多租户方法,我如何区分 ABP 中不同类型的租户,因为每个租户都不是同一种客户,我需要租户之间的交互。在这种情况下,Admin、Manager 和 Auditor 将是 HOST 用户,因此他们可以管理租户和与租户相关的实体(医疗索赔和票证)。如何设置自动过滤以便每个租户都可以看到“自己的”实体,如果 PharmacyBiller 向保险公司收费,则应在两种情况下进行过滤,首先是在 PharmacyBiller (FROM) 用户进入系统时,以及在保险公司 (TO) 进入系统时。使用多租户我们可以获得所有好处(功能、版本),因此例如不需要为每个角色复制权限。前任。 PharmacyBiller (CAN_CREATE_CLaim) 和 ProfessionalBiller (CAN_CREATE_CLaim) 并通过特征 ("PHARMACY_CLaim") 和 ("PROFESSIONAL_CLaim") 区分什么样的角色

多重=假 如果我们不使用多租户,我们将失去与多租户相关的所有概念,并且会出现大量重复代码,但也许我们可以通过自定义开发获得更大的灵活性。此处的替代方法是使用 OrganizationUnit、OrganizationUnitRole 和权限,并将每个角色视为一个 OrganizationUnit 以进行过滤。在这里,每次我们在内部创建 Role 的任何实例时,我们都需要创建一个 OrganizationUnit,以便 EntityId 的来源可以是唯一的,以避免每个角色的大量 null 污染 User 实体。

我认为这是在 aspnetboilerplate/zero 上提到的一个非常常见的场景,欢迎社区或支持团队提供一些提示(即使有道理也知道某些解决方案的缺点)

解决方法

aspnet 样板默认具有多租户过滤,如果您想禁用它,您可以使用 https://aspnetboilerplate.com/Pages/Documents/Data-Filters,或查看有关框架的更多详细信息 https://aspnetboilerplate.com/Pages/Documents/Multi-Tenancy?searchKey=multi-tenancy%20asp.net%20boilerplate

 var people1 = _personRepository.GetAllList ();
 using (_unitOfWorkManager.Current.DisableFilter (AbpDataFilters.FILTER_NAME_HERE))
 {
     var people2 = _personRepository.GetAllList ();
 }
 var people3 = _personRepository.GetAllList ();

我建议使用多租户

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...