开源实战 | 要对接21个系统?这个可视化流程引擎搞定

作者:RiverFlow Team


你是否也遇到过这样的场景?

一份电子证照要同时推给审批系统、档案系统、共享交换平台……每个系统对接协议不一样,有的要FTP,有的要对象存储,有的只给HTTP接口让你自己下载再上传。

写脚本吧,来新系统又要改;用传统调度工具吧,可视化程度又不够。更头疼的是,文件从A系统下载完推B系统,B系统处理完推C系统,链路一长,出了问题根本不知道怎么排查。

今天给大家介绍一款我们团队开源的可视化流程编排引擎——RiverFlow,内置 MinIO 文件推送插件,拖拽式完成"下载-处理-分发"全链路,文件流向一目了然。


一、RiverFlow 是什么?

RiverFlow(河狸流程编排平台)是一款面向政务数据交换企业级接口编排场景的开源流程引擎。

它提供了拖拽式的流程设计器,把复杂的接口调用、文件处理、数据转换、条件判断变成"拼积木"一样简单。内置 MinIO 文件推送插件,支持上传、下载、删除、元数据查询,还能从HTTP URL直接下载后转存对象存储

GitHub 地址https://github.com/kaerthas/RiverFlow.git
Gitee 地址https://gitee.com/whp_lyf/RiverFlow.git


二、6个核心亮点,解决你的实际痛点

1️⃣ 拖拽式设计器,5分钟搭一个流程

基于 LogicFlow 实现的流程设计器,左侧是节点面板,中间是画布,右侧是属性配置。

7种内置节点开箱即用:开始、结束、API调用、数据库、脚本、条件分支、定时器。再加上插件节点(如 MinIO 文件推送),像画图一样把节点拖进去、连上线,一个流程就搭好了。

在这里插入图片描述

2️⃣ MinIO 文件推送插件,拖拽式完成文件中转

这是我们最早内置的插件之一,已经过多个政务项目验证:

  • 文件上传:支持本地路径,也支持 HTTP/HTTPS URL(自动下载后上传)
  • 文件下载:从 MinIO 下载到指定本地目录
  • 文件删除:按对象名称删除
  • 元数据查询:查询文件大小、MIME类型、最后修改时间
  • SSL免校验:自动处理HTTPS证书问题(开发测试环境友好)

流程设计只需要3个节点:[开始] → [API获取文件URL] → [MinIO推送] → [结束]

上游节点把文件路径或URL写入上下文 ${context.filePath},MinIO 节点自动读取并推送,处理完成后把访问URL ${context.url} 输出给下游节点。

在这里插入图片描述

3️⃣ 插件可以使用Spring管理的Bean

最新版本支持插件获取主项目的 ApplicationContext,这意味着你的插件可以直接使用:

  • StringRedisTemplate / RedisTemplate
  • JdbcTemplate
  • 甚至你自己写的 Service、Mapper

开发插件时只需要重写一个 init() 方法:

@Override
public void init(ApplicationContext ctx) {
    this.redisTemplate = ctx.getBean(StringRedisTemplate.class);
}

我们最新开源的 ** Token 认证插件** 就是利用这个能力,实现了 Token 的 Redis 缓存与自动刷新,感兴趣的可以查看项目中的 river-hw-auth 模块。

4️⃣ 流程版本管理,发布不影响运行中实例

流程定义支持多版本管理。你修改流程后点"发布",旧版本自动下线,但已经运行中的实例不受影响,它们绑定的还是旧版本。

这在生产环境太重要了——你可以随时优化流程,不用担心把正在跑的文件处理任务搞挂。

5️⃣ 分布式调度,多节点不重复执行

基于 Redis 分布式锁的任务调度器,支持多节点部署:

  • 每10秒扫描一次任务表
  • instanceId 加锁,确保同一任务只被一个节点执行
  • 线程池配置:核心4、最大16、队列200

单机测试够了,上生产直接水平扩展。

6️⃣ 动态数据源 + Groovy脚本

  • DB节点:支持动态切换数据源,SQL中可以用 #{context.xxx} 引用变量
  • Script节点:内置Groovy沙箱,可以读写上下文,还支持安全关键字拦截

三、适合哪些场景?

场景 RiverFlow能做什么
政务材料归档 审批完成后,自动把电子证照、申请表PDF推送到档案系统MinIO存储桶
文件中转分发 从A系统下载文件,推送到B、C、D多个系统的对象存储
微服务编排 把多个原子API组合成业务流程,条件分支、异常处理、重试机制
定时任务 定时扫描、数据同步、报表生成,支持延迟等待和定点执行
接口鉴权代理 通过 river-hw-auth 插件自动管理Token,对接华为云等网关接口

四、技术栈

层级 技术
前端 Vue 3 + Element Plus + LogicFlow
后端 Spring Boot 2.7 + MyBatis Plus
数据库 MySQL 8.0 + Druid
缓存 Redis
脚本 Groovy

JDK 1.8+ 即可运行,没有激进的技术选型,稳定可靠。


五、快速体验

# 1. 克隆项目
git clone https://gitee.com/whp_lyf/RiverFlow.git

# 2. 初始化数据库
mysql -u root -p < db/riverflow_init.sql

# 3. 启动后端
cd riverflow-admin
mvn spring-boot:run

# 4. 启动前端
cd ../riverflow-ui
npm install && npm run dev

# 5. 打包MinIO插件(可选)
cd ../river-minio
mvn clean package
# 将生成的JAR通过前端插件管理页面上传即可

默认账号:admin / admin123


六、写在最后

RiverFlow 已经在多个政务项目中落地,日均处理文件推送和接口调用超过百万次。我们把核心能力开源出来,希望能帮助更多团队解决**“文件分发链路长、流程变更风险高、系统对接成本高”**的问题。

如果你:

  • 觉得项目有用,请给个 ⭐ Star 支持一下
  • 欢迎提 Issue 和 PR
  • 有业务场景想交流,可以留言或私信我们

本文介绍了 RiverFlow v1.0.0 的核心能力,包括 MinIO 文件推送插件和可视化流程编排。后续将持续更新插件开发实战、分布式优化等深度内容,敬请关注。

#开源 #流程引擎 #Java #SpringBoot #政务数字化 #MinIO #文件存储


💬 互动话题:你在工作中遇到过"一份文件要推给多个系统"的麻烦吗?是怎么解决的?欢迎在评论区交流。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐