如何让权限随数据状态变化?以合同审批为例

引言

数据权限通常与业务实时联动,以 CRM 场景为例:

  • 商机流转:公海池全员可见,转入个人归属后自动转为仅个人可见;
  • 合同审批:审批通过后锁定编辑权限,驳回后仅发起人可修改。

这种动态的权限控制机制,是构建安全、灵活业务系统的核心要素。本文将通过“合同审批”为例,解析动态权限的配置逻辑。

如果您对权限的基础功能还不熟悉,可以先阅读:帮助中心 - 玩转表格 / 设置权限

场景简介

现有一张合同表,用于记录合同信息及审批结果,需要根据审批状态自动控制合同数据的权限:

  • 功能 1 - 创建合同:普通用户可新建并填写合同;
  • 功能 2 - 锁定合同:审批中/通过后自动锁定,禁止修改;
  • 功能 3 - 驳回修正:仅流程发起人可编辑指定字段。

效果如图:

img

实现如图效果的核心思路:通过将一个角色组同时放在多个权限组,最终取权限的并集这一特性来实现。在此场景中,我们需要两个权限组搭配实现:

  • 【权限组 1 】:允许普通用户创建数据但不允许修改数据 —— 实现功能 1 & 2
  • 【权限组 2 】:驳回时允许发起人修改指定字段 —— 实现功能 3

配置步骤

步骤 1 :实现创建合同、锁定合同 - 允许普通用户创建数据但不允许修改数据

img

①创建权限组名称:待审批、已通过、已撤销权限;
②设置权限:自定义权限;
③可对数据做哪些操作:设置只能对数据做”查看“、”创建“操作;
④需要限制的字段:取消合同流程状态的创建权限(避免因用户误操作,导致流程状态不准确);
⑤可查看到哪些数据:包含当前用户的创建人。

步骤 2 :实现驳回修正 - 驳回时允许发起人修改指定字段

img

①创建权限组名称:已驳回权限;
②设置权限:每人只能管理自己的数据;
③可对数据做哪些操作:设置只能对数据做”查看“、”修改“、”单字段修改”、“批量编辑”操作;
④需要限制的字段:取消合同流程状态、合同名称的修改权限;
⑤可查看到哪些数据:设置合同流程状态已驳回状态时,是可查看的数据。

步骤3:完善权限配置 - 设置默认权限组,添加角色组

img

①设置两个权限组都为默认权限组,新加入的角色才会自动加入多个权限组,才能实现动态权限;
②创建普通成员角色组,将成员添加至角色组中。

参考模版:动态权限-以合同审批为例

注意:

  1. 本文阐述的是表格的动态权限配置逻辑,流程的权限可参考 帮助中心 - 业务流程/设置人工任务,如何通过触发器在表单中更新流程状态,可以参考模版中触发器或流程专题课程的第 05 课“在流程中调用工作流”。
  2. 应尽量规避不同权限组出现相同的配置,防止因权限叠加导致的冲突覆盖等潜在问题。
2025-02-25 更新
346 次查看
0