图形化微服务接口编排低代码工具 —— 像积木一样灵活,像魔法一样强大
Juggle 是一个可视化的接口编排平台,通过拖拽式流程设计器将多个已有的 HTTP API 接口编排为一个复合接口,直接供前端或业务系统调用,极大提升开发效率,无需重复编码。
本项目为 Java/Spring Boot 原版的 .NET 8 + SQLite + Vue3 重构版,实现了完整的 DDD 四层架构。
| 功能模块 | 说明 |
|---|---|
| 🎨 可视化流程设计器 | 拖拽节点、连线建立数据流、自动布局(拓扑排序)、MiniMap 缩略图 |
| 🔧 多种节点类型 | START / END / METHOD / CONDITION / ASSIGN / CODE / MYSQL / MERGE / SUB_FLOW |
| 在设计界面直接调试,节点高亮显示(成功绿/失败红)、查看输出结果和节点日志 | |
| 📦 套件 & 接口管理 | 组织管理基础 HTTP API,支持导入/导出 JSON 分享移植 |
| 🗄️ 多数据库支持 | SQLite / MySQL / PostgreSQL / SQL Server |
| 📊 执行日志 | 流程执行主日志 + 节点明细日志(含变量快照时间轴) |
| 🔑 Token 管理 | 开放接口访问令牌管理 |
| 📐 全局静态变量 | 跨流程共享变量,支持读写与重置默认值 |
| 📤 导入/导出 | 流程定义和套件支持 JSON 导出/导入,方便分享移植 |
| 🔗 子流程编排 | SUB_FLOW 节点可调用已发布的其他流程,支持入参/出参变量映射 |
| 🔐 JWT 认证 | 控制台登录认证 |
| 层次 | 技术 |
|---|---|
| 后端框架 | ASP.NET Core 8 Web API |
| 架构模式 | DDD 四层架构(Api / Application / Domain / Infrastructure) |
| 数据库 | SQLite(EF Core 8) |
| 多数据库 | MySqlConnector / Npgsql / Microsoft.Data.SqlClient |
| 认证 | JWT Bearer Token |
| 文档 | Swagger / OpenAPI |
| 前端框架 | Vue 3 (Composition API + TypeScript) |
| UI 组件库 | Element Plus |
| 流程画布 | @vue-flow/core |
| 状态管理 | Pinia |
| 路由 | Vue Router 4 |
| 构建工具 | Vite 8 |
JuggleNet6/
├── Juggle.Api/ # 入口层:14个 Controller + Program.cs
│ ├── Controllers/
│ │ ├── Api/ # 业务 Controller(流程、套件、系统等)
│ │ └── Open/ # 开放接口(外部触发流程)
│ ├── wwwroot/ # 前端构建产物(生产模式集成)
│ ├── juggle.db # SQLite 数据库文件
│ └── Program.cs
│
├── Juggle.Application/ # 应用层:Service + DTO
│ ├── Services/
│ │ ├── Flow/ # 流程执行服务
│ │ └── Impl/ # DataSourceService、JwtService
│ └── Models/
│ ├── Request/ # 请求 DTO
│ └── Response/ # ApiResult 统一响应
│
├── Juggle.Domain/ # 领域层:实体 + 流程引擎
│ ├── Entities/ # 15个领域实体
│ └── Engine/ # FlowEngine + 9个节点执行器
│
├── Juggle.Infrastructure/ # 基础设施层
│ ├── Persistence/ # JuggleDbContext(EF Core)
│ └── Common/ # JsonHelper、Md5Helper
│
├── JuggleNet6.Frontend/ # Vue3 前端
│ └── src/views/ # 功能页面(flow/suite/system/object)
│
├── JuggleNet6.Backend/ # 原单体后端(保留参考,已废弃)
├── Architecture.md # 系统架构文档
├── DesignDoc.md # 系统详细设计文档
└── Juggle.sln # Visual Studio 解决方案
cd JuggleNet6\Juggle.Api
dotnet run服务启动后访问:
- 应用首页:http://localhost:9127/
- Swagger 文档:http://localhost:9127/swagger
cd JuggleNet6\JuggleNet6.Frontend
npm install
npm run dev前端开发服务:http://localhost:5173/
cd JuggleNet6\JuggleNet6.Frontend
npm run build
Copy-Item dist\* ..\Juggle.Api\wwwroot\ -Recurse -Force| 用户名 | 密码 |
|---|---|
| juggle | juggle |
| 节点 | 说明 |
|---|---|
| START | 开始节点,流程入口 |
| END | 结束节点,流程出口 |
| METHOD | 方法节点,调用外部 HTTP API |
| CONDITION | 条件节点,多分支判断 |
| ASSIGN | 赋值节点,变量赋值/类型转换,支持读写全局静态变量 |
| CODE | 代码节点,执行 JavaScript 脚本($var/$static 对象) |
| MYSQL | 数据库节点,执行 SQL 查询(支持 ${varName} 模板替换) |
| MERGE | 聚合节点,多分支汇聚 |
| SUB_FLOW | 子流程节点,调用已发布的其他流程,支持入参/出参变量映射 |
| 前缀 | 用途 | 认证方式 |
|---|---|---|
/api/ |
控制台管理接口 | JWT Token |
/open/ |
开放接口(外部触发流程) | API Token |
统一响应格式:
{
"code": 200,
"message": "success",
"data": { ... }
}# 带版本号触发(指定某一版本)
POST /open/flow/trigger/v1/sync_abcdefghij
X-Access-Token: your-api-token
# 不带版本号触发(自动取最新已发布版本)
POST /open/flow/trigger/sync_abcdefghij
X-Access-Token: your-api-token流程定义和套件均支持 JSON 格式的导入/导出,方便在不同环境间分享和移植:
| 操作 | 接口 |
|---|---|
| 导出流程定义 | GET /api/flow/definition/export/{id} |
| 导入流程定义 | POST /api/flow/definition/import |
| 导出套件(含接口+参数) | GET /api/suite/export/{id} |
| 导入套件 | POST /api/suite/import |
导入时自动生成新的唯一标识(flowKey / suiteCode),不会覆盖已有数据。
本项目基于 Juggle 原始 Java 版本的设计思路与架构,使用 .NET 8 + Vue3 + SQLite 进行重构实现。
感谢 @somta 及原项目团队提供的思路与支持!