
目录✨一、它到底是什么二、它用了哪些技术三、它能解决什么问题代码示例快速上手写在最后大家好我是阿木。做过系统的兄弟应该都懂工作流这玩意儿是出了名的难搞概念一堆、学习曲线陡、流程图还得专业程序员来画改个审批节点要翻半天引擎文档排查问题更是头疼。很多项目一到要加审批流程工期就得往后延。最近挖到一个开源项目AntFlow.NET路子很广 —— 它直接把工作流开发的门槛拉到了跟写普通CRUD 一样低零流程引擎经验也能上手。今天带大家看看。✨一、它到底是什么一句话一款仿钉钉设计的开源低代码工作流引擎纯血 .NET 技术栈编写。它最核心的卖点就一个让工作流开发像普通 CRUD 一样简单即便没有流程开发经验的程序员也能快速上手。具体来说它干了这么几件事全网首个纯 .NET 语言实现的仿钉钉工作流配置简单、上手简单高内聚、低耦合把流程流转业务和引擎执行 API 高度分离你几乎不用关注流程流转 API只需要关注业务处理流程业务和表单业务分离表单业务处理内聚在一个类里对开发模式几乎没影响功能对标钉钉、企业微信、飞书的审批流程可用于多种业务场景简单易用、可扩展、可定制、可 SAAS 化说白了以前集成工作流是 你得先学会引擎怎么玩现在是 引擎帮你把脏活累活干了你只管写业务。二、它用了哪些技术说几个我觉得比较实在的点1. 纯血 .NET 技术栈依赖极少整个引擎只依赖了几个高质量开源组件ASP.NET Core 9.0现代化 Web 框架FreeSql高性能、强类型 ORMNatasha动态编译与运行支持没有乱七八糟的依赖兼容性强易于集成部署也清爽。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 技术栈、依赖少、审批特性全、还能低代码零代码开发用下来最大的感受就是真的省事。项目地址我放这了Giteehttps://gitee.com/antswarm/antflowcore独立设计器https://gitee.com/ldhnet/AntFlow-Designerhttps://github.com/mrtylerzhou/AntFlow.net引入地址