Skip to content

Repository files navigation

YX-Cloud 微服务低代码工作流平台

Spring Cloud 微服务 · Flowable 工作流 · 动态表单引擎 · 多租户 · 协同文档 · 即时通讯

License Java Spring Boot Vue Version

中文 · English

在线演示:https://www.sxwzyx.com  |  测试账号 admin / 123456


项目简介

YX-Cloud 是一套基于 Spring Cloud + Vue 3 的企业级微服务开发平台。除了常规的权限管理、代码生成、定时任务等基础能力,重点建设了四条业务主线:

  • 工作流:Flowable 7 引擎 + 可视化流程设计器 + 审批中心(驳回、跳转、委派转办、加签减签、催办)
  • 表单引擎:拖拉拽表单设计器,表单与流程节点联动,节点级字段权限与按钮控制
  • 多租户:域名/请求头识别租户,数据行级隔离,租户独立初始化
  • 协同办公:OnlyOffice / Univer 在线文档,WebSocket 即时通讯,消息通知中心

架构上遵循 服务独立 原则:新服务不依赖公共包,服务间只通过网关请求头契约与 Feign 交互。

下方「功能特性」只列已落地能力,规划中的能力见 后期规划

界面演示

截图放在 docs/images/ 目录下,替换同名文件即可生效。

首页工作台 审批中心
首页工作台 审批中心
流程设计器 节点表单配置
流程设计器 节点配置
表单设计器 流程实例跟踪
表单设计器 流程跟踪
在线文档 即时通讯
在线文档 即时通讯
多租户管理 系统管理
多租户 系统管理

功能特性

工作流与审批

能力 说明
流程设计器 基于 bpmn-js 重写的设计器,支持用户任务、条件分支、并行/排他网关、多实例会签、监听器、脚本/服务任务
节点配置 审批人(指定人 assignee / 候选用户 / 候选组)、到期时间、优先级、表单字段权限、按钮显隐
流程流转 启动、审批、退回上一步、退回发起人、自由跳转、委派、转办、加签/减签、撤回、删除实例
审批中心 待办 / 已办 / 我发起 / 抄送我,卡片列表 + 详情面板 + 审批时间线
流程催办 发起人对当前审批人催办,催办消息推送到消息中心
流程跟踪 流程实例查看器,高亮已走节点与当前节点,展示审批意见

表单引擎

  • 拖拉拽表单设计器,覆盖输入、选择、日期、上传、布局容器等常用组件
  • 表单数据独立存储(yx-form-engine),与流程实例绑定,节点流转时同步业务字段
  • 节点级字段权限(可编辑 / 只读 / 隐藏)与按钮权限配置
  • 表单预览与流程发起表单渲染复用同一套 Renderer

多租户

  • 租户识别:域名解析 + 网关注入 X-Tenant-Id 请求头
  • 数据隔离:MyBatis-Plus 租户拦截器行级隔离,超管跨租户可见
  • 租户初始化:新建租户自动创建默认角色、菜单授权与初始管理员账号,接口返回初始账号密码
  • 租户状态:禁用/过期租户在网关拦截;超管(tenant_id=0)可跨租户查询与管理租户

协同办公

  • 在线文档:OnlyOffice 集成(Word/Excel/PPT 在线协同编辑)+ Univer 表格/文档编辑器,文件夹管理与分享
  • 即时通讯:STOMP over WebSocket,单聊/群聊、未读数、已读回执、@提醒、消息撤回、消息搜索、在线状态、群管理(改名/公告/禁言/转让/成员管理)、动态圈(发布/点赞/评论)
  • 消息通知中心:审批通过、被驳回、被抄送、被催办、流程结束、系统公告统一收口,顶栏消息铃铛实时提醒

基础能力

  • 权限管理:用户、角色、菜单、部门、岗位、数据权限
  • 系统监控:在线用户、操作日志、登录日志、定时任务、Spring Boot Admin
  • 代码生成:Velocity 模板生成前后端 CRUD,另提供 Python 版生成工具
  • 文件存储:MinIO 对象存储

技术架构

                          ┌─────────────────┐
                          │   yx-cloud-ui   │  Vue3 + Vite + Element Plus
                          └────────┬────────┘
                                   │
                          ┌────────▼────────┐
                          │   yx-gateway    │  网关:鉴权 / 限流 / 租户解析 / 请求头注入
                          └────────┬────────┘
        ┌──────────┬───────────┬───┴────┬────────────┬───────────┬──────────┐
   ┌────▼────┐ ┌───▼────┐ ┌────▼─────┐ ┌▼─────────┐ ┌▼────────┐ ┌▼───────┐
   │ yx-auth │ │yx-system│ │ flowable │ │   form   │ │document │ │  yx-im │
   │  认证   │ │ 系统管理 │ │  engine  │ │  engine  │ │ 在线文档 │ │  IM    │
   └─────────┘ └─────────┘ └────┬─────┘ └──────────┘ └─────────┘ └────────┘
                                │            ┌──────────────────┐
                                └───────────►│ flowable-design  │ 流程模型设计
                                             └──────────────────┘
   ─────────────────────────────────────────────────────────────────────────
     Nacos(注册/配置) · Sentinel(限流) · Redis · MySQL · MinIO · OnlyOffice

后端技术栈

类别 技术 版本
基础框架 Spring Boot 4.0.3 / 3.4.1 / 2.7.18
微服务 Spring Cloud + Alibaba 2025.1.0 / 2025.1.0.0
注册与配置 Nacos 2.x
网关 Spring Cloud Gateway (WebFlux)
熔断限流 Sentinel
持久层 MyBatis / MyBatis-Plus 4.0.1 / 3.0.4
连接池 Druid + Dynamic Datasource 1.2.28 / 4.5.0
缓存 Redis 6.0+
工作流 Flowable 7.1.0(引擎)/ 6.8.1(设计器)
定时任务 Quartz
对象存储 MinIO 8.2.2
接口文档 SpringDoc OpenAPI 3 3.0.2
服务监控 Spring Boot Admin 4.0.2
JSON Fastjson2 2.0.61
认证 JWT (jjwt) 0.9.1
在线文档 OnlyOffice Document Server 8.x

前端技术栈

类别 技术 版本
框架 Vue 3.5.26
构建 Vite 6.4.1
语言 TypeScript 5.6.3
UI Element Plus 2.13.1
状态管理 Pinia 3.0.4
路由 Vue Router 4.6.4
HTTP Axios 1.13.2
流程图 bpmn-js + properties-panel 17.11.1
表格/文档 Univer 0.25.0
图表 ECharts 5.6.0
WebSocket @stomp/stompjs 7.3.0

项目结构

yx-cloud/
├── yx-gateway/              # 网关:路由、鉴权、验证码、租户解析(8080)
├── yx-auth/                 # 认证中心:登录、Token 签发(9200)
├── yx-system/               # 系统管理:权限、代码生成、定时任务、文件、监控(9201)
├── yx-common/               # 老服务公共模块(历史遗留,新服务不引入)
├── yx-flowable-engine/      # 工作流引擎:流程流转、审批中心、消息通知(9203)
├── yx-flowable-design/      # 流程模型设计服务(Flowable 6.8 Modeler,9204)
├── yx-form-engine/          # 表单引擎:表单定义与数据存储(9205)
├── yx-document/             # 在线文档:OnlyOffice 集成(9206)
├── yx-im/                   # 即时通讯:WebSocket 会话与消息(9207)
├── yx-cloud-ui/             # 前端工程(Vue 3 + Vite)
├── config/                  # 各服务 Nacos 配置模板 + nginx 配置
├── sql/                     # 数据库脚本
├── docs/                    # 部署文档、演示图片
├── tools/                   # Python 代码生成与文档工具
└── pom.xml                  # 父 POM

环境要求

依赖 版本
JDK 17+
Maven 3.8+
Node.js 18+
MySQL 8.0+
Redis 6.0+
Nacos 2.x
MinIO 可选(文件存储)
OnlyOffice Document Server 可选(在线文档)

快速开始

1. 克隆项目

git clone https://gitee.com/yx-project/yx-cloud.git
cd yx-cloud

2. 初始化数据库

按需执行 sql/ 下脚本:

脚本 说明
nacos.sql Nacos 配置库
yx-cloud.sql 主库(用户、权限、字典、日志等)
qrtz.sql Quartz 定时任务表
yx-flowable.sql Flowable 工作流库 + 业务扩展表
yx_form.sql 表单引擎库
yx_document.sql 在线文档库
yx_im.sql / yx_im_moment.sql 即时通讯库
multi-tenant.sql 多租户相关表与字段
yx-seata.sql Seata 事务表(预留,当前版本未启用分布式事务)

3. 导入 Nacos 配置

启动 Nacos 后,把 config/ 下的 *-dev.yml 导入配置中心,并按实际环境修改 MySQL、Redis、MinIO 连接信息。

4. 启动后端

先起 yx-gatewayyx-authyx-system,再按需启动业务服务:

mvn clean install -DskipTests

# 依次启动(或在 IDE 中启动各模块 Application 类)
mvn -pl yx-gateway spring-boot:run
mvn -pl yx-auth spring-boot:run
mvn -pl yx-system spring-boot:run
mvn -pl yx-flowable-design spring-boot:run
mvn -pl yx-flowable-engine spring-boot:run
mvn -pl yx-form-engine spring-boot:run
mvn -pl yx-document spring-boot:run
mvn -pl yx-im spring-boot:run

5. 启动前端

cd yx-cloud-ui
npm install
npm run dev

6. 访问地址与测试账号

线上演示环境:

入口 地址 账号
演示站点 https://www.sxwzyx.com admin / 123456
在线文档(OnlyOffice 同源反代) https://www.sxwzyx.com(`/web-apps/`、`/coauthoring/` 由 Nginx 反代到内网 8000) 同上

演示环境为公开测试环境,数据会不定期重置,请勿上传敏感文件。多租户域名解析按 sys_tenant.domain 匹配 Host,用 IP 或 localhost 访问只会落到默认租户。

本地开发环境:

入口 地址 账号
前端管理界面 http://localhost:3000 admin / 123456
网关 http://localhost:8080
接口文档(网关聚合) http://localhost:8080/doc.html
Nacos 控制台 http://localhost:8848/nacos nacos / nacos
Spring Boot Admin http://localhost:9201 无需登录(内网访问,生产请加保护)
MinIO 控制台 config/*-dev.ymlminio.url minio.accessKey / minio.secretKey

各服务直连端口:网关 8080、认证 9200、系统 9201、流程引擎 9203、流程设计 9204、表单引擎 9205、在线文档 9206、即时通讯 9207。

开发环境注意两点:

  • vite proxy 的 changeOrigin 必须为 false,否则 Host 头被改写导致多租户域名解析失效。
  • 在线文档需额外部署 OnlyOffice Document Server,并配置 VITE_ONLYOFFICE_URL;未部署时文档编辑页不可用,其余功能不受影响。

生产部署(Docker / Nginx / OnlyOffice)参见 docs/部署文档.md

服务间契约

网关统一注入身份信息到请求头,下游服务直接读取,不使用跨进程 ThreadLocal:

含义 Header
用户 ID user_id
用户名 username
用户标识 user_key
部门 ID dept_id
部门名称 dept_name
租户 ID X-Tenant-Id
授权信息 Authorization
请求来源 from-source(内部为 inner

发起 Feign 调用的服务需自建 FeignHeaderInterceptor 透传上述请求头,否则链路后续服务拿不到身份信息。

代码生成

  • 在线代码生成:系统工具 → 代码生成,导入表结构后生成前后端 CRUD
  • Python 工具:python tools/gen/gen.py,配置见 tools/gen/example.yml

后期规划

以下能力已完成需求与设计文档(见 .kiro/specs/),尚未落地实现:

规划项 说明 设计文档
批量审批 同类待办批量通过/驳回,批量结果反馈 33-批量审批
流程打印导出 审批单打印模板、PDF 导出、流程图图片导出 32-流程打印导出
流程版本管理 流程定义多版本共存,运行中实例按发起版本执行,版本对比与回滚 34-流程版本管理
流程数据报表 流程效率、节点耗时、审批人工作量统计与图表 28-流程数据报表
外部表单集成 业务系统自有页面接入流程,表单数据回调 35-外部表单集成
组织架构选人组件 部门树 + 人员/角色/岗位统一选人组件,供节点配置与表单复用 30-组织架构选人组件
移动端适配 H5 审批、消息、待办 29-移动端适配
大数据建模平台 数据源管理、Kafka 采集、Flink 治理、Spark 建模、数据资产目录、统一调度 27-大数据建模平台
IM 二期 文档分享消息、系统通知落会话、智能体接入、对外客服会话与坐席接待 37-即时通讯IM
分布式事务 Seata 表结构已预留(sql/yx-seata.sql),尚未接入服务

节点审批人当前支持 assignee / 候选用户 / 候选组,「角色、部门、发起人自选」等动态审批人策略同样在规划中。

贡献

欢迎提 Issue 和 Pull Request。提交前请确认:

  1. 新增微服务不引入 yx-common,自带独立 common 包
  2. 身份信息从请求头读取,不新增 ThreadLocal 上下文
  3. Header 常量走各服务自己的常量类,不硬编码字符串

交流与赞助

如果本项目对你有帮助,欢迎微信赞助或加入交流群:

微信赞助 微信交流群
微信赞助 微信交流群

许可

基于 MIT License 开源,可免费用于商业项目,请保留版权声明。