开源两个月,antflow后端项目全网获近100星
从六月初开源,转眼间AntFlow已经开源将近四个月了(前端比后端早了大约2个月,后端于8.18开源).(其实准备是重构以前开源版本.前年的时候我们已经将Vue2版的流程设计器开源了.后来由于疫情原因,没有再继续持续开发.)后来有一天再打开仓库的时候,发现虽然很久没有更新了,但是不断有用户点星(一共大约有20颗星,虽然对于一些明星项目不算什么,但是对我们来说确是很大的鼓励和支持.).还有一些用户提出issue,展示页打不开了,能否支持vue3…等.等看到时,问题已经很久了,感觉很对不起支持的用户.今年六月初和一个同在上海工作的朋友线下沟通了一下继续开发的意愿和未来的功能规划.然后各自到家后当天便开始投入研发了.
从开源到现在.前端项目AntFlow-Vue3 activiti工作流前端 获得了214颗星星.后端项目,AntFlow-activiti仿钉钉低代码工作流后端获得了53颗星星.(后端于8月18日正式开源).收获了两个企业级用户,大家放心,企业级用户也是免费的🙂↔️,其国为了支持一个企业用户用在saas系统了我们做了近一个月时间的功能改造,同时这位用户也加入了开发团队.将设计的功能回馈给AntFlow,大家双向奔赴,相互成就.一个用户对我们项目进行建议我们开通捐赠功能并进行首捐.
从最初无人问津,再到后面零零星零有些赞,再到后面开始有人加入群问各种问题…一路走来,用户数量越来越多,使用深度不断增加.我们倍感鼓舞,同时也感觉责任重大.一定要让用户都用起来.(目前项目虽然下载来来就能跑起来没什么问题.但是生产上很多用户需要将工作流集成到自己的系统里.结合支持情况来看,在和已有系统集成上还是有不少麻烦.这是我们的问题,在没解决之前,我们就人肉支持,一定要让关注的,想用的用户都用起来!
Antflow是什么
antflow目前并不是明星项目,知明度也不是很大.这里就再次介绍一下.
AntFlow是一款采用Springboot+Mybatis+activiti+ruoyi+vue3等主流前后端技术开发的仿钉钉工作流引擎,结合中国式办公特点深度定制,可以作为钉钉工作流的开源替代。致力解决传统activiti/flowable流程图必须由专业程序员绘制,学习曲线陡峭,上手难、排查问题难、维护成本高等问题
系统架构图
核心技术栈
Java8-21 (main分支为java8版本,如果使用较新java版本,请切换到java17_support分支)
Activiti 5.23
Spring Boot 2.7.17
MybatisPlus 3.5.1
MySql 5.7+
界面一览
功能一览
功能 | 功能解释&场景示例 | 完成情况 |
---|---|---|
审批人前去重 | 不同节点都需要同一个审批人审批时,审批人只在最前面节点出现(可能刚接触流程业务的人不理解为什么要去重,如果审批流每个节点都是固定人员,当然不需 ,实际情况是复杂的办公流程很多节点都不是指定的人,而是根据规则带出来的.比如一个报销流程需要直属领导和部门负责人审批,有的员工的直属领导就是 部门负责人(比如你是研发组长)) | ✅ |
审批人后去重 | 不同节点都需要同一个审批人审批时,审批人只在最后面节点出现.前去重还是后去重是根据实际业务决定的.比如在一个财务流程中需要资金经理和财务总监 都审核。财务总监可能也是资金经理(资金经理有多个),这时候流程对他后去重比较合理,流程先让其它资金经理把关,没问题了再到他那里( | ✅ |
审批人不去重 | 审批人前去重后去重都是针对流程整体而言的,针对流程的某个节点,有需要不去重的场景(即去重逻辑对它失效)。比如某个大额打款流程需要出纳在 特定的机器上操作(可以实现对流程特定节点控制)。如果他在打款节点被去重掉了,则将导致打款行为无法进行(流程设计时是对打款这个节点进行控制) | ✅ |
会签 | 流程某个节点需要多人审批时(通常是一类角色,会有多个人),需要所有人都审核通过流程才能继续进行。比如一个项目立项流程需有个审批节点是副总 经理审批,可能公司有多个副总经理,需要他们都同意流程才继续 | ✅ |
顺序会签 | 上面的会签是不分顺序的,强调需要审批节点上的人都需要同意方可继续。顺序会签则是流程到了这个审批节点,需要按预先设计好的顺序依次审批通过 还以上面项目立项流程为例。假如多个副总经理有一个是起决定作用,其它人都是象征性同意。则可以将流程设计为他最先执行,然后再到到其它人审批 具体需要不需要顺序,要结合具体的业务设计。总体上而言,不需要依次审批的效率会高一些(这里批审批的流转效率,技术上没有区别) | ✅ |
或签 | 流程某个节点是多人审批节点,但是只需要一个人审批通过流程就可以继续向下执行。比如一个财务报销流程,到了出纳审批的环节公司可能有多个出纳, 但是只需要任意一个出纳审核票据无误就可以继续向下进行 | ✅ |
打回修改 | AntFlow的特色功能(市面上一些竞品也有这项功能),流程发起后,由于表单字段填写错误,这时候让发起人重新填写显然效率非常低,也容易让人暴躁, AntFlow支持将流程打回到发起人重新修改后再提交,然后流程继续 | ✅ |
流程同意、拒绝 | 审批流的基本功能 | ✅ |
流程加批 | 流程加批用在一些组织角色不明确的流程中,比如一个开发人员发起了一个数据库变更流程,需要他对应的产品同意,公司中一般可能没有开发对应的产品 是谁这样的划分,这时候流程可以设计为允许加批,开发在发起流程时选择自己的产品进行审批。 | ✅ |
流程作废 | 在流程还没有审批完成时,流程发起人对流程执行作废操作,终结掉当前流程 | ✅ |
变更当前处理人 | 变更流程当前正在执行节点。使用场景:正常离职需要办理离职交接手续,其中有一步是交接手上正在处理的流程给别人,但是有些 特殊关系户,他在离职的时候只需要找个招呼就行了。这个时候需要他审核的流程就会卡住进行不下去,这时候可以向领导请求他手里的流程可以交接给谁 然后把处理人变更为指定的人。变更处理人直接更改引擎中当前节点的处理人,是危险操作,可能会查看审批路径人审批人看起来不对 | ✅ |
变更未来节点处理人 | 有些流程由于开发时存在逻辑bug或者运营人员在配置时候配置错了,导致不应该出现在当前审批流中的人出现了。比如加班餐20元报销流程不一般不需要 老板亲自审批,但是走到老板那里了。一大早上老板的OA系统出现一堆加班餐报销流程,想想老板会是什么心情💀。这时候如果流程还没到老板那里,可以变 更一下流程处理人。注意,变更未来节点处理人是一补救措施。和变更当前处理人的区别第一点当然是节点状态不同。第二点就是变更处当前处理人一般针 单个具体流程实例(通俗讲就是有流程编号的一个流程),变更未来处理人一般为整个流程级别的。比如所有的已发起的加班餐报销流程 | ✅ |
流程委托 | 处理人将自己需要处理的流程转交给别人代处理的过程称作流程委托。比如为了感谢你对公司辛勤付出,领导给你放一个月假让你到三亚旅游一圈,此间你 不想处理任何与工作相关的事务(那是不可能的),这时候可以发起一个流程委托申请流程,被委托人和相关负责人都审批通过后流程就自动委托给指定的 人处理了(流程委托也是危险操作,不能轻易开放。比如一个百万级别的采购流程公司副总擅自委托给一个不知明喽啰审批显然是不合适的😄) | ✅ |
流程限时制委托 | 流程处理人将自己需要处理的流程在指定时间段内委托给指定人代处理的过程叫作限时委托。有些委托是永久性的,比如老板会将一些非必要自己审批的流程 委托给自己的秘书(老板委托自己的流程也要发起流程申请?are you kidding me?其实要看怎么设计的,如果老板会严格遵守公司规范没问题,如果不是则 就需要特殊考虑,比如给管理员增加一个手动修改流程委托人权限,这也可以防止程序出现意外情况有补救措施。比如别人流程委托申请的流程走完了,结果 逻辑没生效。你让别人再重新发起一个流程?这个时候自己手动私下处理掉得了🙄。回到正题,实际工作中很多流程委托都不是永久性的,比如上面的你到三 亚旅旅游的案例。你只需要在这段时间内将流程委托出去,你回来了还得继续当牛做马干活🤐 | ✅ |
定时流程 | 工作中有很些场景流程并不会是由用户手动发起的,有的是系统以指定用户的名义发起的。比如员工试用期转正申请。如果让员工自己来关注会比较累,让hr 来提醒hr也会比较累。这时候可以制定一些定时流程,在员工试用期到的时候自动以他的名义发起一个试用期转正申请流程(流程节点上要把他设置为审批人 不然他自己都不知道,一脸蒙蔽🥴) | ✅ |
流程灰度 | 在日常开发中,有些比较规范的团队会有灰度发版操作。同样,在重度依赖审批流的公司中,审批流出错可能会导致严重的问题,轻则批评责备,重则相应 开发负责人员卷铺盖走人。为了将新上线的流程可能的bug导致的风险降到最低。可以对流程进行灰度试点。灰度的策略有很多,比如指定人员使用,指定 角色使用,指定部门使用等。线上运营一段时间没有问题时再放开给整个公司使用。(看到这里你是不是感觉可能会非常困难,其实使用起来非常简单。这也 是AntFlow的追求,让流程尽量简单,流程开发完成以后运营能做的事尽量不让开发来做。后面会出教程详细介绍 | ✅ |
流程遇到指定人结束 | 这是流程设计时的一种功能,非运行时的。比如一个按公司部门组织层层审批的流程,有时候不知道需要向上审批多少层结束,但是可以在有某个人出现的时候 终止。 | ✅ |
超时自动审批 | 目前尚不支持,开发起来没有太大技术难度。但是作者一直坚持流程同意应当是审批人的真实意愿,可以结合oa系统站内信提醒,IM工具发消息提配,线下电 话沟通等方式让他同意掉。而不仅仅是为了时效性通过技术手段让流程自动通过。(AntFlow有很多中国式办公的功能,比如某个人不在了导致流程无法进行 这时候可以变更处理人来处理。总之有很多方法)。当然如果大家觉得这个功能很必要,出可以开发 | ❌ |
流程抄送 | 审批流的基本功能,将流程抄送给指定的人方便他查阅、归档管理。 | ✅ |
流程自定义条件 | 流程设计的时候往往会根据不同的条件决定执行不同的流程分支。条件也多种多样,和公司业务有密切关系。也是AntFlow中为数不多需要自己开发定制的功能 当然开发起来也非常简单。只需要实现一个接口构造一个返回true或者false的函数即可。剩下的交给引擎来完成。 | ✅ |
流程执行运作 | 流程在审批某个特定节点\审批完成时执行一个运作。比如一个用户发起一个腾讯云账号申请流程。有的公司是流程完成之后负责这个流程的人手动给员工开通 账号,对于大型企业每天有成千上百的人需要申请各自云平台账号,这样显然是低效的,可以更进一步,流程完成以后会发起回调事件,在回调事件里写上特定 的和云平台对接开通账号的逻辑即可。流程执行运作也是危险行为,需要注意设计逻辑的完整性 | ✅ |
流程完结后自动发起 新流程 | 比如在一些公司有着复杂的离职流程,一般公为几个有先后顺序的流程,最后一个流程走完了才算离职完成。这里可以通过流程运作来完成,单独拎出来说是因 为作者觉得这个功能非常基础。也是为了帮助大家拓宽思路。结果流程引擎的现有某项或者某几项能力来完成一项功能 | ✅ |
外部流程接入 | 外部流程接入是指公司内以OA系统为核心,将流程引擎做为基础组件提供给公司其它业务系统来使用。比如果Devops系统,CRM系统,WMS系统等。这些外部 系统接入了之后便可以使用OA流程引擎的基础功能,一方面便于流程集中管理,另一方面减少研发资源的浪费。很多团队比如Devops团队做流程引擎自然没有做 OA系统的人专业。他们随便在网上找个组件使用一面方存可能存在能力不足问题,另一方面可能存在各种bug需要处理,他们可能处理不了。这些专业的事情应该交 给一个专业的团队来做(这块功能作者在做企业级开发的时候做过,但是效果不是很满意,这块功能正在重新规划中) | 🕘 |
后续规划
- 进一步优化现有系统代码,提升用户集成便捷性
- SaaS化进一步完善
- 完善流程通知系统
- 完善使用文档
- TIDB支持
- 历史数据同步支持
- 流程手签支持
- 流程表单打印支持
- 集成拖拽表单
开源地址
- RuoYi集成版地址
- 独立设计器地址
- 项目后端gitee地址
- 项目后端github地址
Ruoyi集成版方便快速了解功能,流程设计器独立版便于集成已有系统
开源不易,喜欢的大佬烦请抽出时间看一看项目,如果认为值得点赞可以给一颗星星🥰🥰🥰
相关文章:

开源两个月,antflow后端项目全网获近100星
从六月初开源,转眼间AntFlow已经开源将近四个月了(前端比后端早了大约2个月,后端于8.18开源).(其实准备是重构以前开源版本.前年的时候我们已经将Vue2版的流程设计器开源了.后来由于疫情原因,没有再继续持续开发.)后来有一天再打开仓库的时候,发现虽然很久没有更新了,但是不断有…...

设计模式——工厂方法模式(2)抽象工厂模式(3)
一、写在前面 创建型模式 单例模式工厂方法模式抽象工厂模式原型模式建造者模式 结构型模式行为型模式工厂方法模式和抽象工厂模式都属于工厂模式,所以放在一起介绍了 二、介绍 为什么要工厂模式?工厂就像一个黑盒一样,所以用工厂模式来创…...

简单聊聊System V下的IPC + 内核是如何管理该IPC
文章目录 前言:🎃消息队列:1. **消息队列的基本概念**2. **消息队列的特点**3. **常见的消息队列操作(Linux IPC)****1) msgget:创建或获取消息队列****2) msgsnd:发送消息****3) msgrcv&#x…...

【WRF工具】服务器上安装convert_geotiff
【WRF工具】服务器上安装convert_geotiff convert_geotiff简介方法1:下载安装包后下载convert_geotiff依赖库安装库1:libtiff库2:sqlite库3:curl库4:projcmake更新(可选)库5:geotiff…...

RPC通讯基础原理
1.RPC(Remote Procedure Call)概述 RPC是一种通过网络从远程计算机上调用程序的技术,使得构建分布式计算更加容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性,提供一种透明调用机制,让使用者不…...

JavaScript 第18章:安全性
在JavaScript开发中,确保应用的安全性是非常重要的。下面我将根据你提到的几个方面来讲解如何增强Web应用程序的安全性。 XSS(跨站脚本)攻击防御 示例代码: function escapeHTML(unsafe) {return unsafe.replace(/&/g, &qu…...

基于workbox实现PWA预缓存能力
引言 Service Worker 是一项流行的技术,尽管在许多项目中尚未得到充分利用。基于本次项目首页加载优化的机会,决定尝试使用 Google 出品的 Workbox,以观察其优化效果。 开始 安装 项目使用 Webpack 打包,而 Workbox 提供了 We…...

探索Web3生态系统:社区、协议与参与者的角色
Web3代表着互联网的下一个演变阶段,旨在通过去中心化技术赋予用户更大的控制权和参与感。在这个新兴生态系统中,社区、协议和参与者扮演着不可或缺的角色,共同推动着Web3的建设与发展。 社区的核心作用 在Web3中,社区通过提供反馈…...

无人机电机故障率骤降:创新设计与六西格玛方法论双赢
项目背景 TBR-100是消费级无人机头部企业推出的主打消费级无人机,凭借其出色的续航能力和卓越的操控性,在市场上获得了广泛认可。在产品运行过程,用户反馈电机故障率偏高,尤其是在飞行一段时间后出现电机过热、损坏以及运行不稳定…...

samba禁用时拷贝服务器文件到本地的脚本
Android系统开发一般在ubuntu服务器上,我们办公电脑一般是windows。在将编译出来的模块push到板子上时,一般采用adb push 方式。 有时由于种种原因会出现服务器禁用了samba,导致无法直接用adb push 的情况。 下面介绍用winscp 走ssh 拷贝服…...

C#代码 串口通信晋中A2板,控制直流电机
1,在电脑中给晋中板中下载编译好的程序。 0x39 :开启电机的标识 代码: /********************************************************************************** **** 实验名称:串口通信实验 接线说明: 实验现象&…...

3 机器学习之假设空间
归纳(induction)与演绎(deduction)是科学推理的两大基本手段。前者是从特殊到一般的“泛化”(generalization)过程,即从具体的事实归结出一般性规律;后者则是从一般到特殊的“特化”(specialization)过程,即从基础原理推演出具体状况。例如&a…...

基于STM32的风速风向传感器设计
引言 本项目设计了一个基于STM32的风速和风向传感器系统,能够通过组合使用旋转式风速传感器和电子罗盘,实时测量风速和风向,并将数据通过显示屏或无线模块发送给用户。该系统适用于气象监测、环境监控、农业自动化等场景,具有准确…...

域名申请.
操作场景 Internet上有成千上万台主机,每一台主机都对应一个唯一的IP地址。IP地址因不具备实际意义,非常难于记忆,于是就产生了域名。 域名(Domain Name)是一串用点分隔的字符串组成的名称(例如huaweiclo…...

mysql5.7与mysql8.0身份认证插件的区别
MySQL 5.7 和 MySQL 8.0 在身份认证插件方面有一些重要的区别。这些变化主要集中在默认的身份验证插件、密码管理和安全性增强上。 默认身份验证插件 MySQL 5.7 默认插件: mysql_native_password mysql_native_password 是 MySQL 5.7 及更早版本中的默认身份验证插件。它使用…...

进化吧!原始人
如果你想体验一下人类的进化过程~ 如果你有一颗充满探索的好奇心~ 千万不要错过博主新开发的小游戏哦! 点击链接,立即体验! 🙋 欢迎来到冒险互动游戏《进化吧原始人》! 🦍 在这里,你将扮演一…...

SaaS架构:中央库存系统架构设计
大家好,我是汤师爷~ 近年来,越来越多的零售企业大力发展全渠道业务。在销售额增长上,通过线上的小程序、直播、平台渠道等方式,拓展流量变现渠道。在会员增长方面,通过多样的互动方式,全渠道触达消费者&am…...

C语言中点操作符(.)和箭头操作符(->)的区别
在C语言中,点操作符(.)和箭头操作符(->)用于访问结构体的成员,但它们的使用方式有所不同。以下是具体介绍: 点操作符(.)的使用 直接访问结构体变量的成员:…...

基于FPGA的以太网设计(一)
以太网简介 以太网(Ethernet)是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问控制的内容。以太网是目前应用最普遍的局域网技术,取代了其他局域网标准如…...

Insert into on duplicate key update 死锁问题解析
Insert into on duplicate key update 死锁问题解析 背景 前段时间的需求中有这个么一个场景,每天早上需要通过定时任务到不同的平台拉取一些广告投放的相关数据,涉及的表比较多,数据量也比较大,有的需要全量同步,有…...

Apache Lucene 10 已发布!Lucene 硬件效率改进及其他改进
作者:来自 Elastic Adrien Grand Apache Lucene 10 刚刚发布,重点关注硬件效率!查看主要版本亮点。 Apache Lucene 10 终于发布了!自 Lucene 9.0(于 2021 年 12 月发布,距今已有近 3 年)以来&a…...

【SQL】SQL查询语句
目录 🎄 基本查询语法 ⭐查询多个字段 ⭐设置别名 ⭐去除重复记录 ⭐ 数据准备 ⭐ 案例 🎄 条件查询 ⭐ 语法 ⭐ 案例 🎄 聚合函数 ⭐ 介绍 ⭐ 常见的聚合函数 ⭐ 语法 ⭐ 案例 🎄 分组查询 ⭐ 语法 ⭐ where与having的区…...

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台
AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 一、简单介绍 二、Docker 下载安…...

机器学习摘下诺奖桂冠
前言 近日,2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家,如今却将全球范围内对机器学习和神经网络的研究和开发作为了一…...

营销邮件软件:提升邮件营销效率必备工具!
营销邮件软件选择技巧?免费高效的邮件营销软件推荐? 如何高效地管理和优化邮件营销活动成为了企业面临的一大挑战。营销邮件软件成为提升邮件营销效率的必备工具。MailBing将深入探讨营销邮件软件的功能、优势以及如何选择合适的工具。 营销邮件软件&a…...

鸿蒙开发 四十五 鸿蒙状态管理(嵌套对象界面更新)
当运行时的状态变量变化,UI重新渲染,在ArkUI中称为状态管理机制,前提是变量必须被装饰器修饰。不是状态变量的所有更改都会引起刷新,只有可以被框架观测到的更改才会引起UI刷新。其中boolen、string、number类型,可观察…...

第 6 章:vue-router
1. router 相关理解 1.1 vue-router 的理解 vue 的一个插件库,专门用来实现 SPA 应用 1.2 对 SPA 应用的理解 单页 Web 应用(single page web application,SPA)。整个应用只有一个完整的页面。点击页面中的导航链接不会刷新页…...

PaddleOCR模型转换、部署全流程(Ubuntu系统)_随记2
本篇衔接文章1、环境流程需要看随记1就可以 PaddleOCR环境搭建、模型训练、推理、部署全流程(Ubuntu系统)_随记1 一、ONNX导出 1、环境准备 主要参考官方技术文档:官方技术文档 未完做完更新... 参考:PaddleOCR-PP-OCRv4推理详解…...

Tableau 2024.3 发布!表格可视化项扩展、空间参数和 Cloud 管理器等,助力企业大规模分析
在升级至最新版前,先来详细一览 Tableau 2024.2 的最新特性吧~ Tableau 发布新版本啦!作为今年的收官之作,Tableau 2024.3 在延续经典之余,也为用户带来了不少惊喜,让企业数据分析之旅更加丰富多彩。 使用 Tableau Cl…...

即时通讯增加kafka渠道
此次给im服务增加kafka渠道,刚好最近有对SpringCloudStream进行了解,刚好用来练练手 增加kafka渠道 pom.xml 引入stream相关依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-strea…...