[开源]MIT开源协议,一种基于事件驱动的流式低代码编程应用程序
![[开源]MIT开源协议,一种基于事件驱动的流式低代码编程应用程序](https://yy123.ink/api/img/1782594304905-dpouva.jpg)
一、开源项目简介
flow-eda
flow-eda 项目是一种基于事件驱动的流式低代码编程应用程序,它的主要功能是采用可视化编程,以拖拽节点、连接组合节点的形式来完成流程绘制,达到低代码开发和实现业务编程的目的。
二、开源协议
使用MIT开源协议
三、界面展示
项目展示


Vue3 版本界面:

React 版本界面:

编辑器界面:

四、功能概述
应用场景
-
自动化流程业务处理,例如需要处理某个数据,可以用拖拽节点定义这些流程,反复使用。
-
支持多线程并发处理,任意组合、编排,可组合与或非等各种复杂的逻辑流程,支持阻塞、等待、周期性执行等。
-
网络爬虫,例如需要爬取网络上的一些特定信息,然后加以处理,支持输出展示、存储到数据库或者发送邮件。
-
定时任务,可以定时执行一些业务,周期性执行,可以指定次数或者不限制,支持 cron 表达式等。
-
基础的增删改查业务模型,可支持自定义 HTTP 接口,支持 websocket、MQTT 等协议,支持常用的数据库操作。
-
业务执行流程可视化,在流程运行时,可以在 web 页面上实时看到执行状态可执行信息,包括输入输出参数等。
项目特点
-
整个流程运行引擎全都在后端实现,前端非常轻量,所有的数据、参数、包括输入框等数据全由后端配置提供,前端仅负责根据数据展示。后期开发仅扩展后端功能即可,前端无需更改,自动兼容。
-
支持任意拖拽、组合、编排节点,形成业务流程,支持多线程处理,支持并行和串行流程。
-
流程运行引擎做到模块化、配置化。后期在进行功能扩展和开发时,仅需要针对新增的功能,新增配置和新增模块功能代码即可,运行引擎自动适配。
-
后端设计采用微服务架构,各个模块之间按业务功能相互解耦。便于后期二次开发和功能扩展。
-
代码框架使用的技术栈丰富,使用了多种设计模式,值得学习。
-
代码风格严格按照规范执行,后端代码遵循 Alibaba 规范,代码格式使用 google-java-format 格式化,前端代码使用 Prettier 格式化,消除代码中的标黄警告等,做到编码规范化。
主要功能
-
支持用户登录和注册,接口鉴权、数据隔离
-
流程管理、日志管理。菜单简洁,便于用户使用
-
支持绘制任意的流程图,没有繁琐的条件约束,仅针对某些节点的必填参数做了校验
-
各功能节点地位平等,不分头尾,可任意连接绘制,连接数量无上限
-
支持用户自定义参数,使用占位符${}即可获取参数值,由上至下可无限传递,可在任意位置取值
-
支持在绘制流程图时使用常用快捷键对节点进行操作
-
流程图支持导入/导出功能,可以快速的导入绘好的流程并进行修改
-
可实时查看流程运行状态变化,便于用户了解流程运行至哪一步,以及各节点当前的状态、错误信息等
-
支持查看流程实时运行日志功能,可查看实时运行日志和历史运行日志,内含各个节点的输入输出参数
-
支持并发,流程采用并行运行的方式,会自动从流程中找出所有起始节点同时开始运行,数据隔离,互不干扰
-
支持流程嵌套,可在流程中选择其他流程作为子流程运行
-
提供了大量的流程图示例可供参考,每个功能节点都有对应的流程图示例
五、技术选型
采用springboot+vue/react搭建的一个基于事件驱动的流式低代码编程应用程序,您可以在编辑器中采用拖拽的形式来实现业务编程工作,一键运行和停止,让开发工作变得更简单高效。
系统架构图

后端技术栈
|
技术 |
版本 |
说明 |
|
Docker |
20.10.14 |
应用容器引擎 |
|
Docker Compose |
2.5.0 |
应用容器部署工具 |
|
Spring Boot |
2.6.4 |
微服务框架 |
|
Mybatis |
3.5.9 |
ORM 框架 |
|
Mysql |
8.0.28 |
数据库 |
|
Maven |
3.6.3 |
项目构建管理工具 |
|
PageHelper |
5.3.0 |
MyBatis 物理分页插件 |
|
Lombok |
1.18.22 |
代码插件 |
|
Nacos |
2.0.4 |
服务注册中心 |
|
Dubbo |
3.0.7 |
服务远程调用 |
|
WebSocket |
9.0.58 |
数据推送 |
|
RabbitMQ |
3.9.15 |
消息队列 |
|
Spring Security |
5.6.2 |
认证和授权框架 |
|
Security Oauth2 |
2.3.6 |
认证和授权框架 |
|
Guava |
31.0.1 |
限流组件 |
项目模块
-
flow-eda-common 公共工具模块
-
flow-eda-runner 流程运行引擎模块
-
flow-eda-web 后台管理 web 模块
-
flow-eda-logger 日志管理模块
-
flow-eda-oauth2 认证鉴权模块
-
flow-eda-vue 前端 vue 模块
-
flow-eda-react 前端 react 模块