业务系统接审批流别再到处写 if else:用开源 BPM 引擎跑通表单、待办和申请记录
业务系统里最容易变复杂的模块之一就是审批。最开始可能只是一个请假审批员工提交 - 主管审批 - 结束后来加了采购审批申请人提交 - 部门负责人审批 - 财务审批 - 总经理审批再后来又有合同审批、报销审批、工单流转、用章审批、付款审批。每个流程都有不同的表单、审批人、按钮、退回逻辑、状态展示和消息提醒。如果每个业务模块都自己写一套审批逻辑代码很快会变成这样if 金额小于 5000主管审批 if 金额大于 5000经理审批 if 是合同走法务 if 是采购走采购负责人 if 是报销走财务短期能上线长期很难维护。流程一改业务代码就要改审批人一变系统就要发版按钮权限一调整前后端都要跟着动。这也是为什么很多业务系统需要把审批能力抽成流程引擎。1. 审批流不应该绑死在业务模块里比较理想的拆分是层职责业务表单保存请假单、采购单、合同单等业务数据BPM 流程引擎负责流程定义、节点流转、待办任务、流程状态业务回调在流程前后校验和同步业务状态前端运行入口提供发起流程、我的待办、我的申请等统一入口这样做以后业务模块不需要自己造一套待办中心流程引擎也不需要理解每张业务表的所有字段。Open BPM Flow Engine 这次整理开源时重点就是把这条链路补齐。项目地址https://gitee.com/luotianding/open-project2. 一个业务审批的最小闭环业务系统接审批流至少需要下面 6 步步骤动作1配置流程图2配置流程关联业务表单3用户填写业务单据4调用流程发起接口5审批人进入我的待办办理6流程回调业务服务同步业务状态Open BPM Flow Engine 里提供的请假 Demo就是为了演示这个闭环。正文配图建议3. 业务表单怎么和流程关联流程引擎不应该写死“请假表单”“采购表单”“合同表单”。更好的方式是通过配置把流程和表单关联。示例配置配置项示例流程 Keydemo_leave_process流程名称演示请假审批流程发起表单地址/demo/leave-form回调类cn.icepanda.bpm.demo.service.DemoLeaveFlowService这样发起页只需要读取已发布流程再根据流程读取对应表单地址。前端逻辑可以理解为用户打开发起流程页 - 查询可发起流程 - 读取流程关联表单 - 跳转到业务表单如果业务系统要二次开发接入可以照着这个清单走开发对象采购审批示例说明业务表purchase_apply保存采购金额、供应商、原因、业务状态、流程实例 ID后端实体PurchaseApply映射采购业务表后端接口PurchaseApplyController提供草稿、发起前保存、详情、待办上下文、列表业务服务PurchaseApplyServiceImpl保存业务单、查业务单、同步流程状态流程回调PurchaseFlowServicebefore 校验金额after 同步审批状态前端表单PurchaseForm.vue支持发起、办理、查看三种模式前端路由/demo/purchase-form要和流程关联业务里的表单地址一致流程配置purchase_approval配流程图、节点处理人、按钮和回调类普通开发者可以先不管复杂组织架构先按“固定审批人或固定流程角色”跑通。等流程闭环跑通后再逐步接部门负责人、岗位、角色、金额条件和消息通知。4. 业务状态怎么同步流程状态和业务状态不是一回事。流程状态关注的是当前节点是谁 任务有没有办 流程有没有结束 流程有没有退回业务状态关注的是请假单是草稿还是审批中 合同是待审还是已通过 采购单是否允许下单 报销单是否允许付款所以项目里用业务回调类做状态同步。请假 Demo 的回调类Service public class DemoLeaveFlowService implements BpmBizInvokeDemoLeaveApply { public BpmResult before(FlowContext context, DemoLeaveApply apply) { if (apply null) { return BpmResult.failure(请假申请数据不能为空); } if (apply.getDays() null || apply.getDays() 0) { return BpmResult.failure(请假天数必须大于 0); } return BpmResult.success(); } public BpmResult after(FlowContext context, DemoLeaveApply apply) { return BpmResult.success(leaveApplyService.syncByFlowCallback(context, apply)); } }业务系统只关心自己的业务校验和状态同步流程推进由 BPM 引擎完成。5. 我的待办和我的申请为什么重要很多业务系统刚开始只做“提交审批”但没有统一待办。审批人只能从消息里找链接或者回到业务列表里筛选待处理数据。这会带来几个问题1. 审批人不知道自己还有多少任务没处理。2. 发起人不知道流程走到哪一步。3. 管理员不知道流程卡在哪个节点。4. 多个业务模块各自实现待办体验不统一。所以开源版提供/#/runtime/myTask 我的待办 /#/runtime/myApply 我的申请 /#/runtime/taskPool 任务池 /#/runtime/myDeliver 我的抄送正文配图建议6. 适合接哪些业务这类流程引擎适合业务示例流程请假审批员工 - 主管采购审批申请人 - 部门 - 财务 - 总经理合同审批业务 - 法务 - 财务 - 负责人报销审批员工 - 主管 - 财务工单流转客服 - 技术 - 复核用章审批申请人 - 部门 - 行政如果你的业务有“多人协作、状态流转、审批留痕、节点权限”都可以考虑抽成流程。7. 开源项目能提供什么Open BPM Flow Engine 当前提供1. 流程设计器。2. 流程定义管理。3. 流程属性配置。4. 发起流程入口。5. 我的待办。6. 我的申请。7. 任务池。8. 我的抄送。9. 流程实例和任务监控。10. 请假申请 Demo。11. MySQL 初始化脚本。12. 图文说明文档。它适合作为学习、二次开发和项目选型参考不建议不改造就直接用于复杂生产场景。二次开发时建议按这个顺序落地先接一个最简单的业务单 - 再加一个审批节点 - 再加一个条件网关 - 再加角色和人员规则 - 再加审批意见和流程轨迹 - 最后接消息通知和组织架构不要一上来就把所有复杂规则都放进去。流程系统最怕“第一版就想做成万能平台”这样很容易把业务表、流程表、权限表和消息表缠在一起。完整二次开发指南bpm-project/docs/secondary-development-guide.md接口清单和关键代码索引bpm-project/docs/api-and-code-map.md如果企业准备基于这套开源项目做二次开发可以按 4 个阶段落地阶段目标验收方式第一阶段本地启动后端、前端和数据库能访问流程设计器、发起流程、我的待办第二阶段跑通请假 Demo能完成“发起 - 待办 - 办理 - 我的申请”第三阶段新增一个真实业务例如采购审批有采购表、采购表单、采购接口、采购回调第四阶段接组织、角色、消息和流程监控审批人规则、提醒、追踪、异常处理符合企业规则这个路线的好处是每一步都能验证不会陷入“先搭一个大平台最后发现闭环没跑通”的问题。8. 总结审批流的本质不是“某个页面上多一个同意按钮”而是把业务状态和流程状态连接起来。如果业务系统里审批越来越多不要继续在各个模块里复制 if else。更合理的方式是抽出统一流程引擎让业务模块只关心业务数据让 BPM 引擎处理流程流转。项目地址https://gitee.com/luotianding/open-project关键词BPM流程引擎、工作流引擎、Flowable、Spring Boot工作流、业务审批、OA审批、表单流转。

相关新闻

未来式智能联合研发成果荣获2026数字中国创新大赛全国一等奖

未来式智能联合研发成果荣获2026数字中国创新大赛全国一等奖

近日,2026数字中国创新大赛人工智能赛道圆满落幕。未来式智能携手国网信息通信产业集团、信产埃森哲、华东师范大学、福州外语外贸学院组建联合研发团队,凭借参赛作品《羲和・飞廉——基于物理感知与双流PatchTST的新能源功率预测框架》,在“…

2026/8/4 18:08:13 阅读更多 →
Unity编辑器视口预览工具开发:从原理到高效工作流实战

Unity编辑器视口预览工具开发:从原理到高效工作流实战

1. 项目概述:为什么视口预览值得你投入精力 在Unity项目开发中,尤其是涉及复杂场景、多摄像机切换或者需要精确构图时,我们常常会陷入一种困境:你需要在Game视图和Scene视图之间来回切换,反复调整摄像机参数&#xff0…

2026/8/4 18:07:13 阅读更多 →
SpringBoot岗位推荐系统设计与实现

SpringBoot岗位推荐系统设计与实现

1. 项目概述这个基于SpringBoot的岗位推荐系统是我去年指导的一个计算机专业毕业设计项目,当时学生用了3个月时间从零开始完成了整套系统的开发。现在回想起来,这个项目确实很适合作为毕业设计选题——它既包含了企业级开发的主流技术栈,又能…

2026/8/4 18:07:13 阅读更多 →

最新新闻

终极跨平台Unity资源编辑器:UABEAvalonia深度解析与实战指南

终极跨平台Unity资源编辑器:UABEAvalonia深度解析与实战指南

终极跨平台Unity资源编辑器:UABEAvalonia深度解析与实战指南 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 你是否曾面对Unity游戏资源束手无策?UABEAvalonia作为新一代跨平台…

2026/8/4 21:31:37 阅读更多 →
全平台资源下载终极指南:3步轻松获取微信视频号、抖音、小红书等热门内容

全平台资源下载终极指南:3步轻松获取微信视频号、抖音、小红书等热门内容

全平台资源下载终极指南:3步轻松获取微信视频号、抖音、小红书等热门内容 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-download…

2026/8/4 21:31:36 阅读更多 →
Bedrock Linux Userland:打造终极Linux发行版融合平台的完整指南

Bedrock Linux Userland:打造终极Linux发行版融合平台的完整指南

Bedrock Linux Userland:打造终极Linux发行版融合平台的完整指南 【免费下载链接】bedrocklinux-userland This tracks development for the things such as scripts and (defaults for) config files for Bedrock Linux 项目地址: https://gitcode.com/gh_mirror…

2026/8/4 21:31:36 阅读更多 →
Retro ESP32高级技巧:3种画面缩放模式与游戏收藏功能

Retro ESP32高级技巧:3种画面缩放模式与游戏收藏功能

Retro ESP32高级技巧:3种画面缩放模式与游戏收藏功能 【免费下载链接】RetroESP32 Retro ESP32 is a turbo charged Odroid Go Launcher, Emulator and ROM Manager 项目地址: https://gitcode.com/gh_mirrors/re/RetroESP32 Retro ESP32是一款功能强大的Odr…

2026/8/4 21:31:36 阅读更多 →
手把手写一个企业订阅包选型计算器

手把手写一个企业订阅包选型计算器

前言采购企业订阅包(资源包)时,销售给的通常是一句"单价打七折"。但折扣不等于省钱——包有有效期,用不完的额度就是沉没成本。真正该问的是:必须用掉几成才不亏?本文带你写一个命令行计算器&…

2026/8/4 21:31:36 阅读更多 →
3大核心功能+5步实战:Diva Mod Manager初音未来模组管理终极指南

3大核心功能+5步实战:Diva Mod Manager初音未来模组管理终极指南

3大核心功能5步实战:Diva Mod Manager初音未来模组管理终极指南 【免费下载链接】DivaModManager 项目地址: https://gitcode.com/gh_mirrors/di/DivaModManager Diva Mod Manager是专为《初音未来:歌姬计划 Mega Mix》打造的图形化模组管理工具…

2026/8/4 21:30:36 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →