# mars-admin-saas-workflow
**Repository Path**: _liweijian/mars-admin-saas-workflow
## Basic Information
- **Project Name**: mars-admin-saas-workflow
- **Description**: 🔥 官方推荐 🔥 Mars-Admin是一套开源的精美快速开发平台,毫无保留给个人及企业免费使用,项目前后台分离, 高效率开发,一键生成前后台代码和菜单权限,中小企业快速开发脚手架。 前端采用Vue3、Naive-UI、 后端采用Spring Boot3、Mysql、Redis。 权限认证使用SaToken,支持多终端认证系统。 支持加载动态权限菜单,多方式轻松权限控制。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2026-09-08
- **Last Updated**: 2026-09-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Mars Admin SaaS Workflow





**多租户后台管理系统(RBAC + Flowable 工作流)**
## 项目简介
本仓库是 Mars Admin 的 **SaaS 多租户 + 工作流** 版本。在原有系统管理、组织、消息、文件、监控能力之上,接入 **Flowable 7.1.0** 流程引擎,前端用 **bpmn-js** 设计 BPMN,支持业务表单发起、待办审批、已办查看和流程监控。
前后端分离:后端 Spring Boot 3.2.2,管理端 Vue 3 + Naive UI,另含 UniApp 移动端。
## 技术栈
### 后端
| 技术 | 版本 | 说明 |
|------|------|------|
| Spring Boot | 3.2.2 | 基础框架 |
| Java | 17 | 语言版本 |
| MyBatis-Plus | 3.5.5 | ORM |
| Sa-Token | 1.37.0 | 认证鉴权 |
| Flowable | 7.1.0 | 流程引擎(仅 Process,已关闭 IDM / Event Registry) |
| MySQL | 8.0+ | 业务库 + Flowable `ACT_*` 表 |
| Redis | 7.0+ | 会话 / 缓存 |
| Quartz | 2.3.2 | 定时任务 |
| Hutool | 5.8.25 | 工具库 |
### 前端(管理后台 `mars-ui`)
| 技术 | 版本 | 说明 |
|------|------|------|
| Vue | 3.4.15 | 框架 |
| Vite | 5.0.11 | 构建,开发端口 `3000`,代理 `/api` → `8080` |
| TypeScript | 5.3.3 | 类型 |
| Naive UI | 2.37.3 | 组件库 |
| Pinia | 2.1.7 | 状态 |
| bpmn-js | 18.6.2 | 流程设计器 |
### 移动端 `mars-uniapp`
UniApp + uView Plus,覆盖登录、聊天、通讯录等办公能力。
## 项目结构
```
mars-admin-saas-workflow
├── mars-common # 公共:实体基类、异常、统一响应
├── mars-infra # 基础设施
│ ├── mars-db # 数据源 / MyBatis-Plus
│ ├── mars-redis
│ ├── mars-oss # 本地 / MinIO / 阿里云 OSS
│ ├── mars-sms / mars-pay / mars-push / mars-mail
│ ├── mars-social / mars-wechat
│ ├── mars-websocket
│ └── mars-crypto
├── mars-core # 业务
│ ├── mars-system # 用户、角色、菜单、字典、配置
│ ├── mars-tenant # 租户隔离、租户上下文
│ ├── mars-auth # 登录策略(密码 / 短信 / 社交)
│ ├── mars-workflow # Flowable 封装:模型、表单、待办、实例
│ ├── mars-file / mars-gen / mars-message / mars-biz
├── mars-api
│ ├── mars-admin-api # 管理端接口(含 /workflow/**)
│ ├── mars-app-api
│ └── mars-web-api
├── mars-job # Quartz
├── mars-starter # 启动入口,默认 profile=dev,端口 8080
├── mars-ui # 管理端前端
├── mars-uniapp # 小程序
└── sql
├── mars-admin-saas-workflow.sql # 当前库完整脚本(推荐)
└── mars-system.sql # 历史库脚本
```
## 功能特性
### 多租户
- 登录时选择租户,数据按 `tenant_id` 隔离
- 租户开通、切换、平台侧租户管理
- 后台登录要求用户类型为 `admin`(`pc` / `app` 账号无法进管理端)
### 流程管理(Flowable)
| 菜单 | 说明 |
|------|------|
| 流程定义 | 新建 / 编辑名称编码分类 / 复制 / 发布 / 删除 |
| 流程设计 | bpmn-js 画布,办理人可选用户、角色、部门、岗位 |
| 发起流程 | 选择已发布流程,填写业务表单后启动实例 |
| 我的待办 | 审批通过 / 驳回,侧栏红点显示待办数量 |
| 我的已办 | 已处理任务 |
| 流程监控 | 实例列表、查看表单、终止运行中实例 |
办理链路:
1. 设计并发布流程(BPMN 存 `wf_process_model`,发布后写入 Flowable)
2. 在流程定义中配置业务表单字段(JSON schema)
3. 发起时提交表单,数据写入 `wf_form_data`,`businessKey` 为表单记录 ID
4. 待办办理时只读展示表单 + 填写意见
5. 顶栏通知增加「待审批」页签,可跳转待办
引擎说明:
- `ACT_*` 表由 Flowable 首次启动自动创建(`database-schema-update: true`)
- 已关闭 Event Registry、IDM,避免 utf8mb4 下 `FLW_EVENT_DEPLOYMENT` 主键超长
- 异步执行器默认关闭
### 系统与其它模块
- **系统管理**:用户、角色、菜单、字典、参数、租户
- **组织管理**:部门、岗位
- **日志**:登录日志、操作日志(`@Log`)
- **监控**:在线用户、定时任务、服务器、缓存、接口访问
- **文件**:本地 / MinIO / OSS
- **消息中心**:站内通知、WebSocket 私聊 / 群聊
- **代码生成**:按表生成前后端代码
- **安全**:验证码、登录失败锁定、RBAC、RSA 传输加密
## 快速开始
### 环境
- JDK 17+
- Maven 3.8+
- MySQL 8.0+
- Redis 7.0+
- Node.js 18+
### 1. 初始化数据库
```sql
CREATE DATABASE `mars-admin-saas-workflow`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;
```
导入完整脚本(按实际账号执行):
```bash
mysql -u root -p mars-admin-saas-workflow < sql/mars-admin-saas-workflow.sql
```
工作流草稿表、业务表单表若脚本中尚未包含,启动前需保证存在:
- `wf_process_model`:流程模型草稿(含 `bpmn_xml`、`form_schema`)
- `wf_form_data`:发起时提交的业务表单数据
`ACT_*` 不必手工建,启动后端时由引擎创建。
### 2. 修改配置
编辑 `mars-starter/src/main/resources/application-dev.yml`:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mars-admin-saas-workflow?...
username: root
password: root
data:
redis:
host: localhost
port: 6379
password: 123456
database: 10
```
生产环境使用 `application-prod.yml`,并在 `application.yml` 中切换 `spring.profiles.active`。
### 3. 启动后端
```bash
mvn clean install -DskipTests
cd mars-starter
mvn spring-boot:run
```
接口地址:`http://localhost:8080`
管理端 API 前缀:`/api`
### 4. 启动前端
```bash
cd mars-ui
npm install
npm run dev
```
浏览器访问:`http://localhost:3000`
Vite 将 `/api`、`/ws` 代理到后端。
打包产物输出到 `mars-starter/src/main/resources/static`,可由后端一并托管。
### 5. 登录
登录页选择租户后,使用管理端账号:
| 账号 | 密码 | 说明 |
|------|------|------|
| admin | admin123 | 超级管理员(用户类型需为 `admin`) |
## 工作流接口(管理端)
| 能力 | 路径 |
|------|------|
| 流程定义 CRUD / 发布 | `/workflow/definition/**` |
| 业务表单 schema | `/workflow/definition/{id}/form`、`/workflow/form/schema` |
| 发起 / 监控 / 终止 | `/workflow/instance/**` |
| 待办 / 已办 / 审批 | `/workflow/task/**` |
| 待办数量(角标) | `GET /workflow/task/todo/count` |
| 办理人选择 | `/workflow/handler/**` |
办理人类型:用户、角色、部门、岗位。运行时按当前用户 ID 及角色 / 部门 / 岗位候选组领取任务。
## 开发说明
### 新增业务模块
1. 实体放在对应 `mars-core` 子模块
2. Mapper / Service 同模块实现
3. Controller 放在 `mars-admin-api`
4. 前端页面放在 `mars-ui/src/views`,菜单由「菜单管理」配置
### 操作日志
```java
@Log(title = "流程定义", businessType = BusinessType.UPDATE)
```
### 权限
```java
@SaCheckPermission("workflow:definition:list")
```
后台登录额外校验 `userType == admin`,见 `PasswordLoginStrategy`。
### 流程设计注意点
- 流程编码需字母开头,仅含字母、数字、下划线(对应 Flowable process key)
- 已发布流程不能改编码,需先取消发布
- 已发布流程设计页只读,取消发布后可改 BPMN
- 存在运行中实例时不允许删除定义
## 配置要点
| 项 | 位置 | 说明 |
|----|------|------|
| 演示模式 | `mars.demo-mode` | `true` 时禁止增删改 |
| Flowable 建表 | `flowable.database-schema-update` | 开发环境 `true` |
| 验证码 / 存储 / 短信 | 系统配置分组 | 运行时切换,无需改代码 |
## 开源协议
[MIT License](LICENSE)
## 联系
微信:mars8377 / mars3570