功能
单据权限
业务背景
假设系统中存在一张订单表,订单表中有来源公司,创建人,业务类型,订单金额等字段,此时有需求说需要让不同的角色或者用户能够查看的订单按照多种维度动态控制,比如管理员可以查看所有订单,某个销售员仅能查看部分负责公司的订单,客户业务人员仅能查看自己创建的订单,采购员仅能查看某些类型的订单。 也就是需要针对不同的人或者角色对某一业务功能坐不同维度的动态权限控制。单据权限就是为此类需求提供一个解决方案。
在上述的示例中,“订单”将作为“单据”,“来源公司”,“创建人”,“业务类型”作为“单据维度”,通过给不同的角色或者用户分配不同的维度,并且在维度下分配数据来实现一个精确的访问控制。
概念说明
- 单据(单据类型):业务功能的抽象,通常是一张表或者某个查询的结果集,例如上述的订单表,或者一个订单查询SQL
- 单据维度:单据权限控制的维度,例如上述订单中的来源公司、创建人、业务类型
- 单据维度数据来源:单据维度下的可选值来源,例如来源公司维度的数据来源就是公司列表,这可以是自定义开发的页面,也可以是一个值集
- 单据权限范围:单据权限范围生效的范围(同数据权限的权限范围),范围可以通过租户、服务、某个SQL ID来确定。
注意
- 单据权限在平台级定义规则,租户级维护数据,也就是限制租户级数据的访问权限。
- 单据权限是对数据权限的封装,也就是如果不启用数据权限功能,单据权限功能同样无法使用。