4. 审批人与职责分配策略

4.1 用户场景与业务问题

在B端系统中,审批流的“人”是核心。不同企业、不同业务场景对审批人的确定方式截然不同。如果系统只支持单一模式,将直接导致流程僵化、管理混乱甚至审批事故。

典型场景一:财务报销——固定审批人冲突

某公司财务部规定,所有金额超过5000元的报销单必须由财务总监张总审批。但当张总休年假时,报销单卡在“财务总监审批”节点3天无人处理。业务员小王因垫付差旅费迟迟未报销,向HR投诉。HR发现系统无法临时更换审批人,只能通过后台手动跳转流程,严重违反财务内控要求。

典型场景二:部门请假——角色审批与动态指派矛盾

某电商公司规定,运营部门员工请假需由“部门经理”审批。但运营部有三位经理:A经理负责内容组、B经理负责活动组、C经理负责数据组。系统如果只按“角色”匹配,会把请假单平均分配给所有经理,导致A经理审批了本不属于自己团队的人的假单,造成管理混乱。业务需求是:根据员工的部门-组别关系,动态指派对应经理。

核心业务问题:审批流系统如何满足“人”的动态变化、组织架构调整、突发缺席等现实情况?固定、角色、动态、代理、转交这五种策略分别解决什么痛点?

4.2 用户访谈与需求拆解

我们对5家企业(制造、零售、IT、金融、医疗)的14位审批相关负责人进行了深度访谈,核心发现如下:

痛点关键词 访谈原话摘录 需求拆解
审批卡死 “每次领导一请假,流程就卡住了,不能因为一个人耽误整个业务。”——某制造企业采购主管 需要支持审批人代理(Deputy)和转交(Transfer)功能,并支持提前设置代理规则。
误批 “我的团队的人事变动,不应该由我来批,我根本不知道他们做了什么。”——某IT公司技术总监 需要按组织维度(部门/组/项目)进行动态指派,而非简单的角色匹配。
权责不清 “财务体系里有‘财务主管’、‘财务经理’、‘财务总监’,谁来审批什么金额,得写死。”——某金融公司财务负责人 针对特定场景(如金额、地区、费用类型)需要固定审批人配置。
公平性问题 “好几个经理轮班,如何确保审批单自动分配给当值的人?”——某零售运营总监 需要支持轮询机制或按负载动态分配。

4.3 方案表达:四策略 + 一补充机制

基于上述调研,我们将审批人分配策略归纳为“四种核心策略 + 代理转交补充机制”,产品方案表达如下:

概念速查:
固定审批人:指定具体用户ID,如 user_001(张总)。
角色审批:指定角色Code,如 role_dept_manager,系统按公共角色匹配所有人。
动态指派:指定规则表达式,如发起人.department.manager,运行时动态解析。
代理与转交:操作层,审批人可临时将任务转给他人。

策略1:固定审批人(Fixed Approver)

  • 适用场景:财务审批(金额超过10万)、CEO特批、特定法律文件签字等权责极度明确的场景。
  • 配置方式:直接在流程节点绑定具体员工ID或员工编码。
  • 避坑:如果该员工离职/调岗,流程Node会彻底失效,必须与HR系统做离职校验。

策略2:角色审批(Role-based Approver)

  • 适用场景:通用流程,如部门经理审批、HR审批、法务审批。
  • 配置方式:绑定角色(如“部门经理”、“法务专员”)。系统在运行时,查询当前角色下所有在职用户。
  • 常见问题:如果角色下有多人(如法务部3人),需配置审批模式:会签(全部同意)、或签(一人同意即可)、顺签(按指定顺序依次审批)。

策略3:动态指派(Dynamic Assignment)

  • 适用场景:基于上下文的多维审批,如“根据发起人的直属上级”、“根据费用归属项目的项目经理”。
  • 配置方式:使用表达式或DSL(领域特定语言)。
// 动态指派表达式示例(伪代码)
// 规则:发起人的部门主管为审批人
assignee_type: "dynamic_expression"
expression: "initiator.department.manager"

// 规则:费用归属项目的项目经理为审批人
expression: "expense.project.manager"

// 规则:根据金额区分(超20万找财务总监,否则找会计)
if(amount > 200000) { return "user_finance_director" }
else { return "user_accountant" }

策略4:代理与转交(Deputy & Transfer)

  • 适用场景:紧急代替、权力下放、节假日轮值。
  • 代理(Deputy):系统或管理员提前设置好代理关系。当原审批人无法处理时(如请假、离职状态),系统自动将任务推送给代理人。
  • 转交(Transfer):原审批人主动操作,将当前待办任务转给另一个用户处理。
  • 业务规则:
    代理通常用于“角色”的长期托管;
    转交用于“单次任务”的临时变更,且需要记录转交链路。
避坑提示:
1. 不可循环代理:A代理B,B代理A,必须检测并阻断。
2. 转交权限控制:转交不应改变最终审批权责,转交人仍需为结果负责。可将“转交”视为“发起协同”或“会签”的一种特殊形式。
3. 日志强记录:每一次代理/转交操作都必须记录在案,以支持后续审计。

4.4 审批人分配策略结构图

审批人分配策略图谱 审批人分配策略 固定审批人 指定具体用户ID 角色审批 按角色匹配用户 动态指派 运行时表达式解析 代理/转交 任务移交 适用于:财务/法务等 一人一权,不可动摇 适用于:通用审批节点 需处理多角色竞争 适用于:按组织/项目分配 高度依赖数据质量 核心原则:固定保稳定,角色保通用,动态保灵活,代理兜底应急。 实际场景中常混合使用。

4.5 方案验证与验收标准

指标验证(可量化)

指标 验证方法 目标值
审批超时率(因人员不可用导致) 统计30天内,因原审批人休假/离职导致流程卡死超过24小时的工单数 / 总工单数 ≤ 0.5%
审批指派错误率 抽样100个动态指派工单,手动核验指派逻辑是否符合规则 0%
代理成功率 创建代理关系后,提交10个工单,验证是否正确到达代理人 100%

验收标准(功能用例)

  1. 固定审批人测试:配置“固定审批人 = user_zhang”。提交工单,审批人应为 user_zhang。将user_zhang账号禁用,提交工单,系统应报错提示“审批人不可用”并进入异常处理(通知/暂停)。
  2. 角色审批测试:配置“角色 = 部门经理”。部门有2位经理,提交工单,系统应提示选择审批模式(会签/或签),并正确展示待办。
  3. 动态指派测试:配置“表达式 = initiator.department.manager”。提交一个来自“技术部-后端组”员工的工单,验证审批人是否为技术部部门经理。
  4. 代理转交测试:A设置代理人为B。A请假后,新工单应自动分配给B。A收到一个工单后,点击“转交”,输入用户C,工单应进入C的待办,并在流程日志中记录转交链路: A -> C。

4.6 交付物模板

审批人配置规则模板

# 规则模板示例
流程节点: "财务审批-高级金额(>20万)"
审批人策略: "固定审批人"
审批人ID列表: ["user_finance_director"]

流程节点: "财务审批-普通金额(<=20万)"
审批人策略: "角色审批"
角色Code: "role_accountant"
审批模式: "或签"  // 任意一人同意即可

流程节点: "部门经理审批"
审批人策略: "动态指派"
规则表达式: "initiator.department.manager"
后备策略: "如果未找到经理,转交至HRBP"

代理/转交配置表

原审批人 代理人 代理范围 生效时间 失效时间 创建人
张总(user_zhang) 王总监(user_wang) 全部审批流程 2025-07-01 00:00 2025-07-15 23:59 Admin
产品经理自查清单:
□ 是否已区分固定/角色/动态三种策略?
□ 是否为每种策略配置了后备方案(找不到人时如何处理)?
□ 代理转交功能是否有审计日志?
□ 是否支持批量配置代理规则(如按部门/岗位)?
□ 审批节点是否支持“催办”能力,用于提醒当前审批人?