# qqflowengine-backend 通用型流程审批设计与管理系统 — 后端服务 ## 技术栈 - Java 17 - Spring Boot 3.2.5 - Spring Security 6 + JWT - MyBatis-Plus 3.5.7 - H2 Database (开发模式文件数据库) - Redis (embedded-redis 自动兜底) - Spring State Machine 4.0 ## 环境要求 - JDK 17+ - Maven 3.8+(或项目内嵌的 apache-maven-3.9.6) - 可选:本地 Redis(如未安装,启动时会自动启动 embedded Redis) ## 快速启动 ```bash cd qqflowengine-backend # 方式一:使用系统 Maven mvn spring-boot:run # 方式二:使用项目内嵌 Maven ./apache-maven-3.9.6/bin/mvn spring-boot:run ``` 服务启动后访问: - API 服务:`http://localhost:8080` - Swagger 文档:`http://localhost:8080/swagger-ui.html` ## 开发说明 ### 数据库 开发环境使用 **H2 文件数据库**,数据文件保存在项目根目录 `data/devdb.mv.db`: ```yaml spring.datasource.url: jdbc:h2:file:./data/devdb;MODE=MySQL;AUTO_SERVER=TRUE ``` - `spring.sql.init.mode: always` — 每次启动都会重新执行 `schema-dev.sql` 和 `data-dev.sql` - 如需保留手动修改的数据,可将 `mode` 改为 `never` - H2 Console 未开启,如需调试可直接连接 `jdbc:h2:file:./data/devdb` ### 默认账号 启动后会自动初始化以下账号(密码均为 `admin123`): | 账号 | 角色 | |------|------| | admin | 超级管理员 | | zhangsan | 普通用户 | | lisi | 普通用户 | | wangwu | 普通用户 | ### Redis - 优先连接本地 `localhost:6379` - 如果本地未安装 Redis,启动时会**自动启动 embedded Redis**(端口 6379) - 如果本地已有 Redis 运行,则直接使用外部 Redis ### 构建打包 ```bash mvn clean package ``` 打包后的 JAR 位于 `target/qqflowengine-backend-1.0.0.jar`,可直接运行: ```bash java -jar target/qqflowengine-backend-1.0.0.jar ``` ## 项目结构 ``` src/main/java/com/qqflow/engine/ ├── common/ # 通用工具、异常、结果封装 ├── config/ # Spring 配置类 ├── domain/ │ ├── flow/ # 流程引擎模块(定义、实例、任务、审批) │ └── system/ # 系统管理模块(用户、角色、菜单、部门) └── QqFlowEngineApplication.java src/main/resources/ ├── application.yml # 默认配置 ├── application-dev.yml # 开发配置 ├── application-test.yml # 测试配置 ├── schema-dev.sql # 开发环境表结构 ├── data-dev.sql # 开发环境初始数据 └── mapper/ # MyBatis XML 映射文件 ``` ## 注意事项 1. `data/` 目录和 `target/` 目录已加入 `.gitignore`,不会被提交 2. 如需切换 MySQL,修改 `pom.xml` 中 H2 的 scope 并配置 `application.yml` 即可