十年前的那个深夜,我在十八线小城的出租屋里写下第一行流程执行代码时,绝不会想到它会在今天成为一款被数以千计的人点亮 ⭐ 的开源工作流引擎。 —— AntFlow 作者 TylerZhou
这段尘封的往事,直到 1.0.0 发布当天才第一次被公开。
其实 AntFlow 的故事远比 2024 年更早。 早在 2020 年,口罩还没爆发的时候,我和另一位同样痴迷工作流的朋友就曾在深夜的出租屋里,守着两台发烫的笔记本,用 Vue2 + ElementUI 撸出了一个可拖拽的流程设计器雏形。 那时候我们给它起了个土味名字——「EasyFlow」。
- ✔ 能画节点、能连箭头
- ✔ 支持会签/或签、打回修改
- ✔ 甚至在 GitHub 上收获了第一批 20 颗星星
可命运总爱开玩笑:
- 2021 年春节前后,口罩突袭,开始了长达半年的居家办公,一下子突然不适应,工作效率极低,很多工作任务很难及时完成,antflow也基本处于停滞状态。
- 2022年,艰难地度过2021年,一切开始步入正轨,然而三月的某天的早上,同事开始一个个被HRBP叫去谈话,快到中午的时候终于到我了,不出意外,意外还是来了,我所在的项目组就地解散;
- 后面的几个月大家都知道,开始九九八十一天休行。虽然没有作有大量时间来做事,然而此时实在没有心情,整天惶恐、惊悸、走神。。。整天被焦虑包围,加个吃不饱饭,整个人暴瘦了近40斤,根本没法工作
- 仓库停滞,Issue 堆灰,Vue2 版本也就此 “烂尾”。。。
那一整年和后面很长一段时间里,我们各自为生计奔波,偶尔在微信里互相调侃:
EasyFlow 要是真黄了,对得起那 20 个 star 吗?
有一天天午后,我随手点开 GitHub,本想随便看一下,然而却像被钉在座椅上——Issues 里陆续跳出的不是机器人,而是真真切切的用户: 有人贴出报错截图、有人用蹩脚的中文写下“加油”,还有人把 AntFlow 偷偷用在了毕业设计里,只为省下一笔商业授权费。。。
我一条一条往下翻,轻轨的报站声、窗外的蝉鸣全都褪成背景。鼠标滚到最底,光标静止,屏幕映出一张发呆的脸。
记忆突然倒灌—— 2020年,我和朋友挤在 十几 平米的合租房里,对着泛黄的台灯,把“EasyFlow”的节点拖来拽去,敲得键盘噼啪作响; 2021 年初的年夜饭,我们端着饺子隔着视频互相喊话“等年后回上海了就上线!”; 无数个繁星点点的夜晚当很多人已经伴着月亮入睡的时候我们还在对着墙上钉的草图指点江山;
千千万万个早上太阳刚刚穿过黄海开始照亮这座城市的时候,我们早早起来跟着晨练的队伍做半小时的训练,然后开始投入编码,直接八点半出门上班的闹钟响起。
我的偶像科比曾经有这样灵魂的发问,你见过四点半洛杉矶的太阳吗?我可以无愧于心地说,虽然未曾见过洛杉矶四点半的太阳,但我见到过无数上海早晨的第一缕阳光。
如今这些画面像潮水一样撞在胸口,屏幕上的字渐渐模糊。 我不甘心。。。。 不甘心那 呕心沥血的付出最终连简历的一行脚注都上不了 不甘心那些深夜的键盘声最终被城市噪音吞没, 更不甘心让相信过我们的用户,在 Issue 里空等一个“won’t fix”。
我抬手合上电脑,指关节发白。 窗外飞机轰鸣而过,像一声长哨——
有付出,有努力,有欢声,有泪水,这一切不应当成为过眼云烟。我们还很年轻,我们不应当就这样消沉下去!
后面我们开始接触频繁起来。朋友向我介绍,这一年多时间里他一直在想着重启项目,为此花了不少时间学习vue3,其实自己私下已经做出vue3版本的雏形了。并且介绍vue3并不是vue2的简单
框架升级,在动手之前结合之前用户反馈,以及思考vue2版本设计不足之处做了大量重构。。。后面一段时间里开始频繁沟通交流,隔着屏幕展示自己的代码或者演示文稿,这场景是那么的相似。。。
只不过已经由当初面对面交谈变成了屏幕前对话。直到有一天,我们约定在一个周末见一面当面聊一下,挑个黄道吉日重建仓库
这一次,不是重启,是赴约。
直到 2024 年春夏之交的一天,我们约在上海一家咖啡馆见面.老友相逢,虽然有有说不尽的家常要唠,但是我们只是简单的寒暄了几句就开始步入正题,因为我们深知见面的时间非常宝贵,要聊的议题非常多. 两杯拿铁下肚,翻出当年旧代码,屏幕上的 Vue2 设计器早已跑不起来,但逻辑依旧清晰。 朋友拍桌子:“重来!这次用 Vue3,彻底重写!”
当天晚上,我们各自回家,拉群、建仓库、起分支——2024 年 5 月 18 日 0:17,第一条 commit 悄咪咪地躺进了 Gitee。 5 月 18 日,我们把 AntFlow-Vue3 扔到 Gitee,24 小时内冲上了当周热榜; 8 月 18 日,后端跟着开源,Star 数一路从 50 飙到 300、500、直接今天接近一千,加上前段早已超过一千,我们做了一个千星项目!
整整 90 天,白天搬砖、晚上写码,凌晨三点还在调虚拟节点的 JSON 结构。
所以今天你看到的一切——
- 钉钉风的 UI
- 三分钟就能接好的接口
- 会签/或签/加签/减签/退回/灰度/委托/转办/变更处理人的“中国式全家桶”
- 支持TiDb无限水平扩展
- 支持低代码模式和DIY模式
- 支持SaaS化部署
- 支持多模式多租户多数据源
- 支持Java 8-21各种版本
- 支持Spring Boot 1.x -3.x
都是两个被口罩耽误的程序员,在 2024 年亲手补上的 2020 年的遗憾。
如果你也曾因为不可抗力搁置过梦想,希望 AntFlow 的故事能让你相信: 只要人还在,热情还在,重启永远来得及。
🍂 十年前的第一行代码:从自研引擎到“火葬场”,我的心路历程
-
2014 年 · 三个月外包交付为了赶一个 OA 项目,我用一周时间搭了 6 张表、一千行代码,跑通了“请假—审批—抄送”的小闭环。交付那天,客户请我们吃烧烤,大家举起啤酒杯向我致敬:“大佬!”结果三个月后——
- 领导秘书要代批 ✅
- 审计科临时加节点 ✅
- 领导想“看得见但点不动” ✅ 代码越糊越厚,我却在深夜的机房里怀疑人生:原来 “写时一时爽,维护火葬场” 是真的。
-
2016 年 · 第一次逃离 我离职了,带着“再也不碰工作流”的誓言去了大城市。 结果第二家公司:“听说你做过 OA?来,把这块接一下。” 我:……
🌱 归零重来:大厂风暴中的涅槃
-
2021 年(虽然口罩还没过去,但是那真是少有的黄金时光) · 大厂修罗场公司上市、流量暴涨、老系统随时爆炸。新大佬空降,“你感觉现在OA怎么样?”然而我没有被他的气场压住,也没有被他的问题吓懵,我不避讳的谈了当前系统的现状及原因。随后我把早已熬夜整理的 37 页 《为什么我们需要一个新的中国式工作流引擎》 递了上去:
- Activiti/Flowable 太重,画个图都要专业程序员
- 中国式加签、会签、或签、打回修改全是“补丁式开发”
- 流程一旦出问题,日志像天书,排查全靠猜 大佬看完只问了一句:“你有 demo 吗?” 我把在朋友公司落地的 AntFlow-β 打开,三分钟跑完一条“客服离职交接”流程。 大佬拍板:“干!给你三个月,外加一个钉钉出来的产品。研发需要几个人,你来定”
- 两个产品,三个专职前端,三个后端开发,三个外包,风风火火的开始了。空降大佬雷厉风行的做事风格和装B的做人风格实在让人敬佩,不得不由衷地叫一声:大佬!
-
近300 个流程,有的从 0 到 1,有的从1到2 三个月重构上线,半年迁移 30 条老流程,一年新增 200 条。
-
像打开了潘多拉的盒子,压抑的需求井喷式到来,最夸张的一天,业务方排队找:“今天能再帮我上线一条吗?” 我:“三分钟讲完需求,excel表格留下,三十分钟!” 那一年,我第一次觉得 “流程也能像搭积木一样快乐”。
🌟 开源的底气:把“能用”变成“好用”
维度 | 十年前自研 | 传统 Activiti | AntFlow 1.0.0 |
---|---|---|---|
画流程图 | 手改 JSON | Eclipse 插件 | 钉钉式拖拽 |
加签/或签 | 改表 + 发版 | 写监听器 | UI 勾选 |
排查问题 | 翻日志 | 翻更长的日志 | 调试台一键追踪 |
新人上手 | 看祖传代码 | 看 800 页手册 | 10 分钟小抄 |
二次开发 | 重写引擎 | 继承 37 个接口 | 实现 1 个接口 |
“把复杂留给自己,把简单留给用户”——这是 AntFlow 写在 README 里的第一句话,也是我们在 1.0.0 版本里兑现的最后一条承诺。
🚀 1.0.0 正式版亮点速览
- **虚拟节点(VNode)**首创 流程流转业务与引擎 API 100% 解耦,零流程引擎知识也能上手。
- 中国式特色全家桶会签/或签、顺序会签、前后去重、打回修改、加批、委托、灰度发布……一口气说完不带喘。
- 三分钟即可嵌入老系统只需实现一个接口:
MyBusinessAdapter implements FlowBizAdapter
,老系统瞬间拥有钉钉同款流程。 - 全链路可观测流程图 = JSON,审批路径 = JSON,调试台 = JSON,出了问题直接“所见即所得”。
- 生产级高可用
- 已在 3 万客服、日均百万流程量 的环境稳定运行 3 年,MySQL 5.7/8.0、Java 8-17 全版本通过。
- 已经在有20余万员工的快速公司中生产投产使用,贯穿spring boot 1.3x -spring boot 3.x(目前主流支持springboot 2.x,3.x. 1.x需要改造才能运行)
- 已经有20多家企业登记使用,其中不缺乏中海油天津,中国工商银行浙江分行等知名公司
🎉 致谢:每一颗 ⭐ 都是继续前行的光
- 给第一个 Star 的陌生人那天凌晨两点,我看到邮箱提示 “someone starred your repo”,激动得把熟睡的老婆摇醒:“有人给我点星了!”
- 给提第一个 Issue 的同学你的一句“节点支持多条件吗?”让我们连夜加了 200 行代码,第二天就发版。
- 给默默登记企业案例的你们 1.0.0发版之前我们已经上线了捐赠感谢名单,最近捐赠用户越来越多,非常感谢大家对开源的支持。那密密麻麻的名单,让“小蚂蚁”第一次有了“蚂蚁森林”的感觉。今天是梭梭树,名天也许就是胡杨林。。。
🔮 下一站: 2.0已在路上
- 引入amis引擎,让低代码表单发挥到极致。
- 流程 AI 智能助手(自然语言生成流程图)
- 完善SaaS 多租户版本体验
- 对接更多干预能力,诸如变更处理人,变更未来节点处理人,当前/未来节点加减签
- ……
关于名字,我们特别想多说一句
AntFlow 的 “Ant” 与 Ant Design 的 “Ant” 只是字母上的巧合,两者没有任何血缘关系,也不存在蹭流量的意图。
- Ant Design = 前端 UI 设计语言
- AntFlow = 工作流引擎 & 审批平台
我们之所以坚持叫 AntFlow,灵感来自两个极小的瞬间:
- 在vue2版本研发期间,一次我们忙到了深夜,朋友把第一张流程图跑通后,指着屏幕说:“你看,这些节点像不像蚂蚁搬家?一小步一小步就把业务搬完了,干脆项目就叫AntFlow吧",我们一拍即合,就这样愉快的决定了,没想到后来成了不少疑问的根源...
- 我们希望这款引擎像蚂蚁一样——小、轻、却能搬动比自己重几十倍的业务需求。
因此,
- 没有“Ant Design 的表弟”;
- 没有“阿里系”背景;
- 更没有在 npm 包、域名、logo 上做任何容易混淆的设计。
如果未来有人因为名字产生误会,我们会第一时间解释并尊重 Ant Design 的品牌权益。 也欢迎社区随时监督——清者自清,代码会说话。
一个默默无闻的开发者的结语
“开源不是终点,而是新的起点。” 如果你也曾被工作流折磨到凌晨三点,欢迎来 GitHub/Gitee 给我们一颗 ⭐, 让我们一起把“中国式审批”的快乐,带给更多还在加班的程序员。
AntFlow 1.0.0 现已发布Gitee 仓库 | GitHub 仓库 | 官方文档
“愿你我用代码改变世界,而不是被流程淹没。” —— TylerZhou 于 2025.08.04
还没有评论,来说两句吧...