---
name: workflow-engine
when: '审批流, 工作流, 审批, 流程引擎, 审批规则, 审批节点, 会签, 或签, 转办, 驳回, 撤回'
scope:
  - backend
products:
  - '*'
id: ka-domain_knowledge-workflow-engine
asset_kind: domain_knowledge
lifecycle_status: active
authority: supporting
routes:
  - '*'
primary_triggers:
  - 审批流
  - 工作流
  - 审批
  - 流程引擎
  - 审批规则
  - 审批节点
  - 会签
  - 或签
  - 转办
  - 驳回
  - 撤回
priority: P2
specificity: 3
version: 1.0.0
last_reviewed: '2026-05-22'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: domain
status: active
---

## 业务规则
- 每个审批节点必须定义：审批人/角色、超时时间、超时自动动作（自动通过/自动驳回/升级）
- 审批状态流转必须完整：待提交→审批中→通过/驳回/撤回/终止，禁止出现不可解释的中间状态
- 并行审批（会签）必须定义：全部通过/一票通过/一票否决/比例通过策略
- 驳回必须明确回到哪个节点：发起人/上一节点/指定节点
- 审批记录必须完整保留：谁在什么时间审批了什么结果、意见是什么
- 审批权限必须校验：只有指定的审批人可以审批，禁止越权操作
- 工作流定义必须支持版本管理，修改后不影响已发起的流程实例
- 流程节点必须支持超时处理（自动流转/催办/升级），防止流程卡住
- 流程回退必须回到指定节点而非直接退回起始节点

## 约束条件
- 审批流定义与业务逻辑解耦，禁止在业务代码中硬编码审批步骤
- 审批超时提醒必须有通知机制（站内信/邮件/钉钉）
- 审批历史数据禁止物理删除，只能归档
- 审批中的业务数据禁止修改（如需修改须先撤回再提交）
- 流程变量大小必须限制（如单个变量 ≤ 4KB），防止流程引擎性能问题
- 流程发起人必须有权限校验，不是所有用户都能发起所有流程

## 例外情况
- 紧急审批可设置简化流程（减少审批节点），但必须有事后补审机制
- 系统管理员可查看所有审批记录，但不可代为审批
- 紧急流程可以跳过非必要审批节点（需配置紧急通道权限）

## 关联模式
- [[state-transition]] 状态机流转
- [[auth-permission]] 审批权限控制
- state-flow
- auth-permission
