首页 > 开源 > 花了三年搭了一套 iPaaS 低代码平台,今天决定把 Demo 开源

花了三年搭了一套 iPaaS 低代码平台,今天决定把 Demo 开源

OSChina资讯 2026-11-01 22:00 6 阅读 查看原文

前言

做了好几年管理系统,每次给客户上 OA、CRM 或者 SaaS,总觉得重复造轮子的事情太多。表单、列表、审批流程、打印模板……这些东西几乎每个项目都要从头写一遍,但真正的业务逻辑却只占 20%。

  • 于是我开始做一套可视化的低代码平台: 让产品经理甚至业务人员,拖拽几下就能把一个管理系统搭起来。写了大半年,核心框架和业务套件都跑通了,前端 Vue 3 + 后端 Spring Boot 3 + Flowable 7,表单设计器、列表设计器、流程设计器、打印设计器四大神器一个不少。
    今天把这套平台的 Demo 项目 开源出来,后端和前端都能独立编译运行,改改配置就能起一个完整的多租户 SaaS 系统。

项目地址:gitee.com/dongyang1234/i-paas-management-platform


先看看到底有啥东西

四大可视化设计器 —— 零代码搭业务

这是整个平台的核心,业务人员不用写一行代码,拖拽 + 配置就能产出可运行的应用。

设计器

能力

表单设计器

40+ 组件(输入框、下拉、日期、子表、关联查询、签名、富文本、条码、文件上传……),拖拽出表单后一键生成运行态页面

列表设计器

配置列、排序、筛选、分页、自定义按钮、批量操作,自动绑定对应表单的数据

流程设计器

基于 Flowable 7 的 BPMN 可视化建模,支持网关、子流程、定时器、条件表达式、候选人配置

打印设计器

类 Word 的可视化打印模板编辑,支持套打、动态变量、条码/二维码、图片,所见即所得

全链路联动

  • 四大设计器不是孤立的,它们是串起来的:

  表单设计 ──→ 列表展示 ──→ 流程审批 ──→ 打印输出
     │              │              │              │
     └── 数据模型自动生成 ─────────┘              │
     └── 字段作为流程变量 ─────────┘              │
     └── 审批状态驱动列表显示 ─────┘              │
     └── 流程完成触发打印模板渲染 ─────────────────┘

设计器产出的就是几段 JSON 配置,存数据库,改完即生效——不需要重新部署,不需要重启服务。这点对敏捷迭代来说太重要了。

多租户 SaaS 架构

  • 从第一天就按 SaaS 来设计的,不只是个单体管理系统:

  • 租户隔离:支持物理隔离(一个租户一个数据库)和逻辑隔离(共享数据库、字段区分)两种模式

  • 套餐管理:给每个租户开不同的模块权限

  • 组织架构:集团 → 公司 → 部门 → 岗位,四级树形

  • 权限体系:租户管理员 → 用户 → 角色 → 菜单 → 数据权限(行级数据隔离)

  • 实时推送:基于 SignalR 的站内信、审批通知

完整的业务套件

光有框架不行,得有东西能直接用。平台已经沉淀了一套商城 + 会员 + 支付的完整业务,全部是用自己的设计器搭出来的,算是对框架最好的验证。

模块

覆盖范围

系统管理

用户、角色、菜单、部门、岗位、字典、参数、通知、文件、数据源、代码生成

流程中心

模型设计、实例管理、待办/已办、抄送、委派、加签

商城商品

SPU/SKU、品牌、分类、属性、规格、评论

营销活动

秒杀、砍价、拼团、满减、优惠券、积分、抽奖、DIY 装修

交易订单

下单、发货、售后、物流、自提、分销佣金

会员中心

等级、标签、分组、积分、签到、余额

支付网关

微信/支付宝/钱包/Mock 多渠道、退款、对账

微信公众号

账号、菜单、自动回复、消息群发、粉丝管理

基础设施

定时任务(Cron/Groovy)、短信、邮件、LDAP、缓存监控

财务报表

资金报表、出入库统计、销售库存、利润排行

数据大屏

首页仪表盘、ECharts、待办、日程、快捷方式


技术栈

后端

组件

版本

用途

Spring Boot

3.5

基础框架

JDK

21

语言运行时

MyBatis Plus

3.5

ORM + 代码生成

Flowable

7.x

BPM 流程引擎

Sa-Token

1.37

认证鉴权

Redis + Redisson

7.x

缓存 + 分布式锁

Druid

1.2

连接池 + 动态数据源

Knife4j

4.x

OpenAPI 3 接口文档

XXL-Job

2.4

分布式任务调度

SignalR

—

实时 WebSocket 推送

Hutool

5.8

工具库

前端

   

组件

版本

用途

:-----------

:—

:------

Vue

3.4

前端框架

Element Plus

2.7

UI 组件库

Vite

5.x

构建工具

TypeScript

5.x

类型安全

Pinia

2.x

状态管理

UnoCSS

0.60

原子化 CSS

wangeditor

5.x

富文本编辑器

@logicflow

2.x

流程设计器底层


开源策略 —— Demo 能跑,但核心源码保护

这次放出来的是 Demo 项目,既能独立编译运行完整系统,又不会泄露核心业务源码。具体做法:

demo/
├── README.md
├── manage_demo.sql               # 完整数据库(496 张表 + 示例数据)
├── backend/                      # 完整可编译 Maven 项目
│   ├── pom.xml                   # Spring Boot parent + 本地仓库引用
│   ├── start.sh / stop.sh        # 启动脚本
│   ├── src/main/java/
│   │   └── cn/dyang/manage/server/
│   │       ├── ManageServerApplication.java   🔓 入口源码(开源)
│   │       └── controller/DefaultController.java  🔓
│   ├── src/main/resources/       # 配置文件
│   └── repo/                     # 本地 Maven 仓库
│       └── cn/dyang/...          # 38 个内部模块的 jar + pom(闭源)
└── frontend/                     # 完整 manage-ui 前端项目
  • 开源的:入口源码、配置、pom.xml 构建脚本、完整前端代码

  • 闭源的:38 个内部业务模块(通过本地 Maven 仓库 repo/ 以 jar 形式引入),其中 manage-module-form-biz 还加了 ClassFinal 加密保护

  • 能编译:直接 mvn clean package 就能打包出可执行 jar

  • 能运行:配好 MySQL + Redis,加个 -javaagent 参数就能启动

⚠️ 为什么用 -javaagent?因为 ClassFinal 加密的模块需要一个 premain agent 来解密加载,fat jar 内部的嵌套 jar 不能作为 agent,所以启动时要显式指到外部的 jar 文件。


快速上手

环境要求

组件

版本

JDK

21+

Maven

3.8+

MySQL

8.0+

Redis

6.0+

Node.js

18+(前端构建)

后端

# 1. Clone
git clone https://gitee.com/dongyang1234/i-paas-management-platform.git
cd manage-demo/backend
# 2. 建库导数据
mysql -u root -p -e "CREATE DATABASE manage_demo DEFAULT CHARACTER SET utf8mb4;"
mysql -u root -p manage_demo < ../manage_demo.sql
# 3. 改数据库配置(src/main/resources/application-local.yaml)
#    改成你本地的 MySQL / Redis 地址
# 4. 编译打包
mvn clean package -DskipTests
# 产物:target/manage-server-demo.jar + target/lib/
# 5. 启动(Windows)
java "-javaagent:./target/lib/manage-module-form-biz-2.3.0-jdk21-SNAPSHOT.jar" ^
     "-Dspring.profiles.active=local" ^
     "-cp" "target/manage-server-demo.jar;target/lib/*" ^
     "cn.dyang.manage.server.ManageServerApplication"
# 或者直接用脚本
start.bat
  • 启动成功后:

  • API:http://localhost:48080/admin-api

  • Knife4j:http://localhost:48080/doc.html

前端

cd manage-demo/frontend
npm install
npm run dev         # http://localhost:3000
  • 默认管理员: 金店云 / admin / 123456

IDEA 里调试

1. 打开 demo/backend/ 目录(pom.xml 根目录)

2. Run → Edit Configurations → 新建 Application

3. Main class:cn.dyang.manage.server.ManageServerApplication

4. VM options 务必加上:

-javaagent:E:\你的路径\demo\backend\target\lib\manage-module-form-biz-2.3.0-jdk21-SNAPSHOT.jar
-Dspring.profiles.active=local

适用场景

场景

为什么选它

企业内部 OA / CRM / ERP 轻量版

四大设计器快速搭表单、列表、审批流,多部门数据隔离

SaaS 产品快速原型

多租户架构现成的,设计器改改配置就是一套新应用

数据采集 / 审批类应用

表单 + 流程联动,收集完直接走审批

复杂打印套打

珠宝、医药、物流这些行业单据套打特别常见,打印设计器就是为这个做的

想学 Spring Boot + Vue 全栈项目管理

完整的前后端分离项目,Maven 多模块,技术栈新,值得看看


一些心路历程

  • 这套平台最早是我做另一个珠宝 ERP 项目时顺手搭的脚手架,后来越做越大,干脆抽出来单独成了平台。大半年时间,踩的坑不少:

  • Flowable 7 的迁移:从 6.x 跳到 7,API 变动挺大,BPMN 模型的序列化格式也有变化

  • ClassFinal 加密保护:一开始没考虑,后来发现直接放出去不行,才临时加的加密

  • 动态数据源:多租户隔离时,物理隔离和逻辑隔离要自动切换,Druid 动态数据源 + 自定义切面搞定

  • 前端设计器:表单设计器和打印设计器都是自研的,没找到现成好用的,花了最多时间
    Demo 里闭源的那些模块(manage-module-*-biz)是平台的核心引擎部分。如果你想做类似的平台,这个 Demo 的目录结构、pom.xml 配置、启动脚本、设计器前端代码,应该都能当参考。
    后续可能的计划:

  • 把闭源模块里安全级别低的逐步开源

  • 做个 Docker Compose 一键启动

  • 补一份架构设计文档


欢迎交流

Issues 和 PR 都欢迎。如果你也是做管理系统、低代码平台或者 SaaS 的,欢迎聊聊。

最后,Star 一下呗?🫡