第1章 审批流与权限模型的关系全景:整体架构、核心概念、落地价值

审批流与权限模型是企业级业务流程系统的两大支柱:审批流负责“事情按什么步骤走”,权限模型负责“谁能做什么”。二者在逻辑上正交,在运行时却深度耦合。本章从架构全景出发,明确边界、分层、组件职责、数据流/控制流/信任链路,并给出选型权衡、风险点、落地步骤与验收标准,为后续29章的案例剖析奠定统一的认知框架。

1.1 整体架构:四层协同模型

审批流与权限模型的集成架构可抽象为四层,从上到下依次为业务应用层、审批流引擎层、权限模型层和数据持久层。上层依赖下层提供的服务,下层通过接口向上层输出能力,层间以标准化契约解耦。

架构要点:审批流引擎与权限模型在逻辑上属于独立域,但在运行时通过“任务-角色-权限”三元组完成信任握手。业务层只关心“谁提交了什么单据”,审批流层聚焦“下一步路由到谁”,权限模型层回答“该用户是否有权执行此操作”。
审批流与权限模型关系全景架构 业务应用层 业务系统 用户请求 审批单据 审批流引擎层 流程定义 节点路由 任务分配 权限模型层 RBAC模型 ABAC模型 权限校验 数据持久层 用户数据 角色数据 资源数据 数据流 控制流 核心关系: 审批流驱动业务流程流转,权限模型控制操作与数据访问,二者通过 “任务 → 角色 → 权限”三元组实现信任握手与协同决策。

1.2 边界定义与分层原则

四层架构的每一层都有清晰的职责边界,层间通过接口契约通信,不允许跨层直接访问内部状态。

层级 职责边界 对外接口 依赖关系
业务应用层 接收用户输入、展示审批状态、触发流程 REST / RPC / 消息 依赖审批流引擎层
审批流引擎层 流程定义解析、节点路由、任务分派、超时与驳回 流程控制 API 依赖权限模型层做决策
权限模型层 身份认证、角色映射、策略评估、鉴权结果返回 鉴权 SDK / 策略查询 依赖数据持久层
数据持久层 用户、角色、资源、策略的存储与缓存 DAO / 数据服务 无上层依赖
设计原则:审批流引擎只关心“谁在什么节点”,不关心“该用户是否有权限操作单据”;权限模型只回答“用户/角色是否具备某权限”,不参与流程路由逻辑。职责分离是架构可演进的基础。

1.3 组件职责细化

每一层由若干核心组件构成,组件间通过内部总线或事件驱动协作。

  • 业务应用层:流程发起组件负责组装审批单据并调用引擎启动流程;任务看板组件聚合待办、已办和抄送。
  • 审批流引擎层:流程定义仓库维护 BPMN/DSL 模型;路由调度器根据条件表达式决定下一步节点;任务分配器调用权限模型获取候选用户/角色。
  • 权限模型层:策略决策点(PDP)解析 RBAC/ABAC 策略;策略执行点(PEP)拦截请求并缓存结果;角色解析器处理用户-角色-权限的多级映射。
  • 数据持久层:用户仓储、角色仓储、资源仓储各自独立 schema,通过外键或聚合根关联。

1.4 数据流、控制流与信任链路

理解三个流向是架构落地的关键。

流向类型 路径描述 传递内容 典型协议
数据流 业务层 → 审批流层 → 权限层 → 数据层 单据数据、流程实例、角色/权限缓存 JSON / Protobuf
控制流 审批流层 ←→ 权限层(双向决策) 任务分配请求、鉴权结果、策略变更事件 gRPC / 事件总线
信任链路 任务 Token → 用户身份 → 角色凭证 → 权限断言 JWT / OAuth2 Token HTTP Header / Token
信任链路风险:如果权限模型的 Token 在审批流节点间透传时未做签名校验,可能被中间人伪造身份。必须保证每个跨层调用都携带经过签名的上下文(如 JWT + 角色声明),并在权限模型层做完整性校验。

1.5 选型权衡

落地时需要在以下维度做出取舍,不同规模与行业侧重点差异明显。

维度 方案 A 方案 B 推荐场景
权限模型 RBAC(角色驱动) ABAC(属性驱动) RBAC 适合组织架构稳定、角色清晰的企业;ABAC 适合多维度动态授权的 SaaS / 金融场景
审批流引擎 BPMN 标准引擎(如 Flowable) 轻量 DSL 引擎(自研) BPMN 适合复杂流程、合规审计要求高的行业;轻量 DSL 适合互联网高频、快速迭代的业务
集成方式 引擎内嵌权限 SDK 权限独立服务 + 网络调用 内嵌方式延迟低,适合高吞吐场景;独立服务适合多系统复用权限模型
数据一致性 强事务(XA / TCC) 最终一致性(事件驱动) 强事务适合财务、合同等严谨流程;最终一致性适合审批链路长、吞吐量大的业务
选型建议:对于首次落地,建议从 RBAC + 轻量 BPMN 子集 + 内嵌 SDK 开始,降低复杂度;后续根据业务增长逐步演进到 ABAC 和独立权限服务。

1.6 风险点与应对策略

  1. 权限扩散风险:审批流中临时授权(如转办、加签)若未回收,会导致权限边界模糊。
    应对:设置临时授权有效期,超时自动回收;记录授权审计日志。
  2. 跨层循环依赖:审批流引擎调用权限模型,权限模型又反向查询审批流状态,形成循环调用。
    应对:权限模型只依赖数据层,不反向查询流程状态;需要流程信息时由上层传入上下文。
  3. 策略与流程版本不一致:流程定义升级后,旧版本仍在运行的实例权限策略与新版本冲突。
    应对:权限策略绑定流程版本号,每个实例运行时锁定对应的策略版本。
  4. 缓存穿透与授权延迟:高频审批场景下,权限缓存过期可能导致大量请求穿透到数据库。
    应对:采用本地缓存 + 分布式缓存两级架构,缓存预热,并设置合理的 TTL + 异步刷新。

1.7 落地步骤

从零到一搭建审批流与权限模型的集成体系,建议按以下五个步骤推进。

  1. 业务建模与边界对齐:梳理业务流程中的审批节点、角色定义、资源类型,产出四层架构映射矩阵。
  2. 接口契约定义:明确审批流引擎与权限模型之间的 API 合约(任务分配接口、鉴权接口、角色查询接口),使用 protobuf / OpenAPI 描述。
  3. 核心链路预演:选取一条典型审批链路(如“采购申请 → 部门审批 → 财务审批”),走通“业务层 → 引擎层 → 权限层 → 数据层”的全流程。
  4. 兜底与降级策略:当权限服务不可用时,审批流引擎应支持本地策略缓存 + 降级到默认角色,避免流程阻塞。
  5. 灰度上线与观察:选取 10%~20% 的业务流量验证集成正确性,监控任务分配时延、鉴权通过率、缓存命中率等指标。
落地检查点:每完成一步都要做集成测试,确保层间接口的请求/响应结构、错误码、超时阈值与设计一致。

1.8 验收标准

架构交付需通过以下验收条目,方可视为达到生产就绪状态。

  • 功能验收:典型审批路径(含同意、驳回、转办、加签)的每一步均能正确触发权限校验,非法操作被明确拒绝并返回规范错误码。
  • 性能验收:在 200 QPS 的负载下,审批流引擎调用权限模型的 P99 延迟低于 50ms,缓存命中率 ≥ 95%。
  • 安全验收:信任链路中所有 Token 均经过签名与时间戳校验,日志中可完整追溯“用户 → 角色 → 权限 → 操作”的审计链。
  • 可运维验收:权限策略支持热更新,无需重启审批流引擎;单层故障(如权限服务宕机)有明确的降级文案和恢复步骤。
  • 文档验收:产出四层架构设计文档、接口契约说明书、故障恢复手册,并由至少两个团队成员完成交叉复核。
验收节奏:建议分三阶段——第1周完成功能验收,第2周完成性能与安全验收,第3周完成可运维与文档验收,确保架构质量经得起生产环境考验。