前言
政务数据协同从来都不是一件轻松的事。跨系统、跨部门、跨网络的数据交换场景中,流程不透明、节点僵化、数据割裂这三个老问题反复出现。每次对接新系统,都要重新写一遍接口、调一遍流程、改一遍代码——这种低效的重复劳动,正是我们尝试解决的核心痛点。
它不是一个通用的工作流平台,而是专门面向政务数据交换场景设计的协同中枢。核心思路很简单:让数据像河水一样,沿着可视化的河道自然流动,而不是靠硬编码的管道强行泵送。
项目介绍
RiverFlow 是一套可视化流程编排与数据交换平台,围绕"事项"这个政务核心概念来组织所有能力。一个事项对应一项具体的政务服务或数据协同任务,围绕它配置数据源、注册第三方接口、设计工作流,最终实现跨系统的自动化数据流转。
项目采用 Spring Boot + Vue 3 的经典前后端分离架构,数据库使用 MySQL 8.0,缓存层用 Redis。后端以模块化方式组织,核心引擎独立于业务模块,方便后续扩展。
项目功能
功能模块 | 具体能力 |
事项管理 | 行政区划维护、事项录入与绑定、事项与流程/接口/数据表的关联配置 |
数据源管理 | 支持 MySQL、Oracle、SQL Server、PostgreSQL 注册,在线连接测试,密码加密存储 |
动态表设计器 | 可视化配置字段、类型、索引、约束,后端自动生成 DDL 并创建表,同时自动生成 RESTful CRUD 接口 |
接口注册与调试 | 统一管理第三方 HTTP 接口,支持嵌套参数树配置(Header/Query/Body),内置 Groovy 脚本做请求前处理和响应后处理,提供在线调试面板 |
工作流设计器 | 基于 LogicFlow 的拖拽式画布,支持开始/结束、接口调用、数据库操作、脚本执行、条件分支、定时等待六类节点 |
流程执行引擎 | 上下文驱动的节点串联执行,支持 SpEL 条件判断、数据映射(输入/输出)、失败快照记录与单节点重试 |
内置调度引擎 | 基于 Spring 线程池的定时调度,支持 Cron 触发、事件触发、手动触发,集群下通过 Redis 分布式锁防重复 |
运行监控大盘 | 流程实例状态追踪、节点执行日志、上下文快照查看、异常告警提示 |
项目特点
配置代替编码:新增流程、接口、表结构都通过前端界面配置完成,不需要额外编写 Java 代码,降低了后续维护成本。
数据驱动流转:流程的推进由上下文数据状态决定,每个节点的输出自动写入上下文,下游节点按需取用,实现了松耦合的数据传递。
流程即文档:可视化的流程图本身就是最直观的文档,业务人员和开发人员看同一张图,沟通成本明显降低。
执行透明可观测:每个节点的输入输出都有记录,流程卡住时能快速定位到具体节点和上下文快照,支持人工介入或定点重试。
插件化扩展:基于 Java SPI 机制,支持运行时热加载插件,已内置 MinIO 文件推送和华为云 Token 认证插件,新增能力无需改动主工程。
安全兜底:JWT 无状态认证 + RBAC 权限控制,动态 SQL 全部采用 MyBatis 参数化,Groovy 脚本运行在受限沙箱中,敏感配置用 Jasypt 加密。
项目技术
层级 | 技术选型 | 用途说明 |
后端框架 | Spring Boot 2.7.18 | 基础容器与自动配置 |
ORM 层 | MyBatis-Plus 3.5.5 + dynamic-datasource 3.6.1 | 多数据源动态切换与 ORM 增强 |
连接池 | Druid 1.2.21 | 数据库连接管理与监控 |
安全框架 | Spring Security 5.7.x + JJWT 0.11.x | 认证授权与 Token 管理 |
表达式引擎 | Spring SpEL(内置) | 流程条件分支判断 |
脚本引擎 | Groovy 3.0.x | 节点动态脚本执行,运行于沙箱环境 |
缓存与锁 | Redis + Lettuce | 分布式缓存、Token 黑名单、分布式锁 |
HTTP 客户端 | 自定义执行器工厂(支持重试、超时、熔断配置) | 第三方接口调用 |
API 文档 | Knife4j 4.3.0 | 接口文档在线查看与调试 |
前端框架 | Vue 3.4.x + Vite 5.x | 响应式界面与快速构建 |
UI 组件库 | Element Plus 2.5.x | 后台管理界面组件 |
流程画布 | LogicFlow 1.2.x | 工作流可视化拖拽设计 |
状态管理 | Pinia 2.1.x | 跨组件状态共享 |
代码编辑器 | Monaco Editor | Groovy/SpEL 脚本在线编辑 |
项目代码
后端代码按模块拆分,riverflow-common 提供基础工具类和统一响应体,riverflow-api 定义实体、DTO 和枚举,riverflow-admin 是主服务模块,包含所有业务逻辑和引擎实现。
引擎部分的核心接口是NodeExecutor,六类节点各自实现自己的执行逻辑:
public interface NodeExecutor { NodeResult execute(Node node, FlowContext context);}上下文FlowContext 承载了整个流程运行时的数据,采用 Map 结构存储键值对,节点间通过输入输出映射与之交互:
public class FlowContext { private Map<string, object=""> data; private Map<string, object=""> nodeOutputs; // 提供 get/set 以及路径表达式取值方法}前端工作流设计器基于 LogicFlow 封装,节点拖拽、连线、属性配置都在画布上完成,保存时将流程图结构序列化为 JSON 格式的定义数据提交给后端。
数据库表结构以riverflow_init.sql 初始化,包含事项表、数据源表、动态表元数据、接口注册表、流程定义表、流程实例表、节点执行记录表等核心表。
项目效果
流程设计器界面采用左侧节点工具栏、中间画布、右侧属性面板的三栏布局。从左侧拖拽节点到画布,连线后即可形成完整的流程链路。点击节点可在右侧配置输入映射、输出映射、条件表达式或脚本内容。
接口调试面板提供类似 Postman 的操作体验,填写 URL、选择 Method、配置 Headers 和 Body,点击发送即可看到响应结果,同时支持将调试通过的接口直接注册到接口目录。
动态表设计器以表单方式配置字段信息,点击"生成表"后端自动执行建表语句,并返回自动生成的 API 地址,可以直接在接口管理模块中引用。
监控大盘展示了所有运行中的流程实例,点击任意实例可以下钻查看每个节点的执行详情、输入输出数据快照和执行耗时。
项目源码
https://github.com/your-org/riverflow.git
克隆后按 README 指引初始化数据库、修改配置即可启动。
总结
解决政务数据协同中的流程黑盒、节点僵化和数据孤岛问题。通过可视化的工作流设计、可配置的节点执行器和上下文驱动的数据流转,让跨系统的数据交换变得透明且易于维护。它不是要取代现有的业务系统,而是在系统之间搭建一条看得见、摸得着、改得动的数据河道。
目前项目已在部分政务数据交换场景中落地应用,支撑了数十个事项的自动化流程运行。后续规划的方向包括:流程版本管理、更丰富的条件分支算子、与 RPA 工具的对接,以及流程执行效率的持续优化。
关键词
数据协同、流程编排、可视化设计、政务数据、工作流引擎、Spring Boot、Vue 3、LogicFlow、SpEL、Groovy、多数据源、数据映射、分布式调度、插件化、可观测性 作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!
方便大家交流、资源共享和共同成长
纯技术交流群、需要的小伙伴请扫码
有收获?不妨分享让更多人受益
关注「程序员开源栈」,共同提升技术实力
</string,></string,>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!