返回文章列表
1 分钟

自研审批流引擎:从需求到实现

在OA系统中设计灵活可配置的审批流引擎,支持费用报销、出差、转正等多种流程类型。

Java审批流实战

审批流引擎设计

OA 系统中的审批流程是最核心的业务模块之一,支持费用报销、出差申请、转正申请、离职申请等多种流程。

数据模型

process_instance  # 流程实例
├── id, type, title, status
├── proposer_id, create_time
└── process_records  # 审批记录
    ├── node_name, approver_id
    ├── opinion, status
    └── create_time

核心实现

  • 多类型支持:通过 type 字段区分不同流程类型,各类型有独立表单页面
  • 审批流转:提交 → 待审批 → (通过/驳回) → 结束
  • 状态管理:待审批、审批中、已通过、已驳回、已撤销

前端实现

每个流程类型对应一个 Vue 页面(expense.vue、trip.vue、regular.vue 等),通过统一的 Pending 组件处理待办列表,Detail 组件展示审批详情。

学到的东西

审批流看起来简单,但要做到灵活可配置、支持多种类型并不容易。数据模型设计是关键——把变化的部分(表单内容)和不变的部分(审批链路)分离。