目录
✨一、它到底是什么?
🤖二、它用了哪些技术?
三、它能解决什么问题?
代码示例
快速上手
🌞写在最后
大家好,我是阿木。
做过系统的兄弟应该都懂,工作流这玩意儿是出了名的难搞:概念一堆、学习曲线陡、流程图还得专业程序员来画,改个审批节点要翻半天引擎文档,排查问题更是头疼。很多项目一到要加审批流程,工期就得往后延。
最近挖到一个开源项目AntFlow.NET,路子很广 —— 它直接把工作流开发的门槛拉到了跟写普通CRUD 一样低,零流程引擎经验也能上手。今天带大家看看。
✨一、它到底是什么?
一句话:一款仿钉钉设计的开源低代码工作流引擎,纯血 .NET 技术栈编写。
它最核心的卖点就一个:让工作流开发像普通 CRUD 一样简单,即便没有流程开发经验的程序员也能快速上手。
具体来说,它干了这么几件事:
全网首个纯 .NET 语言实现的仿钉钉工作流,配置简单、上手简单
高内聚、低耦合:把流程流转业务和引擎执行 API 高度分离,你几乎不用关注流程流转 API,只需要关注业务处理
流程业务和表单业务分离:表单业务处理内聚在一个类里,对开发模式几乎没影响
功能对标钉钉、企业微信、飞书的审批流程,可用于多种业务场景,简单易用、可扩展、可定制、可 SAAS 化
说白了,以前集成工作流是 "你得先学会引擎怎么玩",现在是 "引擎帮你把脏活累活干了,你只管写业务"。
🤖二、它用了哪些技术?
说几个我觉得比较实在的点:
1. 纯血 .NET 技术栈,依赖极少
整个引擎只依赖了几个高质量开源组件:
ASP.NET Core 9.0:现代化 Web 框架
FreeSql:高性能、强类型 ORM
Natasha:动态编译与运行支持
没有乱七八糟的依赖,兼容性强,易于集成,部署也清爽。
2. 丰富的中国式办公场景支持
这一点特别接地气。会签、顺序会签、或签、加批、转办、委托、变更处理人、打回至任意节点、重新提交…… 这些国内企业审批里常见的操作,它全给你备齐了,不用自己造轮子。
3. 多种接入模式,灵活度高
可以独立部署成流程中台,其他业务方通过 API 接入
也可以作为一个独立模块加载到你自己的项目里
看你项目架构怎么舒服怎么来。
4. 多种开发模式,可扩展
低代码模式:适合简单的小型流程,零代码就能开发一个流程
DIY 模式:适合复杂的表单数据交互和流转控制,只需要实现一个接口就能快速开发一个全新流程
5. 支持数十种数据库,开箱即用
MSSQL 脚本已经开源了(毕竟 .NET 生态下 SQL Server 采用率高),Oracle、PostgreSQL 脚本获取。ABP 官方集成版也有,在项目的 antflow.abp 目录下。
三、它能解决什么问题?
企业审批流程
请假、报销、采购、合同审批这些常见场景,对标钉钉 / 飞书的审批体验,拖拽配置就行。
OA / 业务系统集成
已有 .NET 项目要加工作流能力,不用换架构,作为模块加载进去就行,或者独立部署成中台通过 API 调用。
复杂表单 + 流转控制
DIY 模式实现一个接口就能搞定,表单业务内聚在一个类里,不用跟流程引擎代码搅在一起。
SAAS 化多租户场景
可定制、可 SAAS 化,适合做平台型产品。
代码示例
"实现一个接口就能开发一个新流程",下面给个示意代码感受一下(具体接口名以项目操作手册为准,手册在 antflownet/docs 文件夹下):
// DIY 模式:实现一个业务处理接口(示意) public class LeaveApprovalForm : IAntFlowForm { // 表单提交时的业务处理 public async Task OnSubmitAsync(FlowContext context) { var form = context.GetFormData(); // 你的业务逻辑:保存请假单、扣年假、发通知…… await _leaveService.CreateAsync(form); await _notifyService.SendToApproverAsync(context.NextApproverId); } // 流程结束时的回调 public async Task OnCompletedAsync(FlowContext context) { var form = context.GetFormData(); if (context.IsApproved) await _leaveService.ApproveAsync(form.Id); else await _leaveService.RejectAsync(form.Id); } }低代码模式就更简单了,在设计器里拖节点、配条件、绑表单字段,零代码生成一个审批流程,跟在钉钉后台配审批差不多。
快速上手
想跑起来的话,有几个坑提前给你踩了:
# 克隆 .NET 后端源码 git clone https://gitee.com/antswarm/antflowcore.git前端注意:.NET 版和 Java 版共用一套前端,前端在 Java 仓库的 antflow-vue 文件夹里(注意不是 antflow-web,那个是 Java 版的出口模块):
# 克隆 Java 仓库,只取里面的 antflow-vue git clone https://gitee.com/tylerzhou/Antflow.git # 取出 antflow-vue 文件夹运行,其他的删掉就行数据库注意:不要用 Java 仓库的数据库脚本来初始化AntFlow.NET的数据库,用.NET 项目自己的脚本。MSSQL 本已开源,Oracle/PostgreSQL
操作手册在项目 antflownet/docs 文件夹下,mysql 以外的数据库怎么初始化表、怎么把 demo 的用户表角色表替换成自己系统的表,文档里都写了。
🌞写在最后
工作流这块,传统引擎的学习曲线确实劝退了不少人。AntFlow.NET把门槛拉到 CRUD 级别,纯 .NET 技术栈、依赖少、审批特性全、还能低代码零代码开发,用下来最大的感受就是:真的省事。
项目地址我放这了:
Gitee:https://gitee.com/antswarm/antflowcore
独立设计器:https://gitee.com/ldhnet/AntFlow-Designer
https://github.com/mrtylerzhou/AntFlow.net
引入地址