157 lines
4.0 KiB
Markdown
157 lines
4.0 KiB
Markdown
# Flowable DevOps Backend
|
||
|
||
基于 Spring Boot 3 + WebFlux + Flowable 7 的可视化工作流平台后端。
|
||
|
||
## 技术栈
|
||
|
||
- **Spring Boot 3.1.5** - 主框架
|
||
- **WebFlux** - 响应式Web框架
|
||
- **Flowable 7.0.1** - 工作流引擎
|
||
- **MySQL 8** - 主数据库
|
||
- **Redis** - 缓存
|
||
- **Jakarta EL (JUEL)** - 表达式引擎
|
||
- **JPA/Hibernate** - ORM框架
|
||
|
||
## 关键特性
|
||
|
||
- 同步执行策略(禁用全局异步执行器)
|
||
- 审批节点自然暂停等待
|
||
- 统一使用 Jakarta EL 表达式引擎
|
||
- ServiceTask 通过 delegateExpression 指向 genericNodeExecutor
|
||
|
||
## 运行环境要求
|
||
|
||
- Java 17+
|
||
- Maven 3.6+
|
||
- MySQL 8.0
|
||
- Redis
|
||
|
||
## 快速开始
|
||
|
||
### 1. 环境变量配置
|
||
|
||
设置以下环境变量:
|
||
|
||
```bash
|
||
# 数据库配置
|
||
export SPRING_DATASOURCE_URL="jdbc:mysql://172.22.222.111:3306/flowable-devops?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=utf8mb4"
|
||
export SPRING_DATASOURCE_USERNAME="root"
|
||
export SPRING_DATASOURCE_PASSWORD="your-password"
|
||
|
||
# Redis配置
|
||
export SPRING_REDIS_HOST="172.22.222.111"
|
||
export SPRING_REDIS_PORT="6379"
|
||
export SPRING_REDIS_PASSWORD="your-redis-password"
|
||
export SPRING_REDIS_DATABASE="5"
|
||
```
|
||
|
||
### 2. 构建项目
|
||
|
||
```bash
|
||
# 如果遇到Maven仓库问题,使用项目本地的settings.xml
|
||
mvn -s settings.xml clean package -DskipTests
|
||
|
||
# 或者使用默认设置(需要确保Maven仓库配置正确)
|
||
mvn clean package -DskipTests
|
||
```
|
||
|
||
### 3. 运行应用
|
||
|
||
```bash
|
||
# 开发模式运行
|
||
mvn -s settings.xml spring-boot:run
|
||
|
||
# 或者直接运行jar包
|
||
java -jar target/flowable-devops-backend-1.0-SNAPSHOT.jar
|
||
```
|
||
|
||
应用将在 http://localhost:8080 启动。
|
||
|
||
### 4. 运行测试
|
||
|
||
```bash
|
||
# 运行所有测试
|
||
mvn -s settings.xml test
|
||
|
||
# 运行单个测试类
|
||
mvn -s settings.xml -Dtest=ExpressionEngineTest test
|
||
|
||
# 运行单个测试方法
|
||
mvn -s settings.xml -Dtest=ExpressionEngineTest#testSimpleExpression test
|
||
```
|
||
|
||
## API端点
|
||
|
||
- **健康检查**: `GET /actuator/health`
|
||
- **工作流管理**: `/api/workflows`
|
||
- **节点类型**: `/api/node-types`
|
||
- **任务审批**: `/api/tasks`
|
||
|
||
## 配置说明
|
||
|
||
### application.yml 关键配置
|
||
|
||
- `flowable.async-executor-activate: false` - 禁用异步执行器
|
||
- `flowable.history-level: full` - 完整历史记录
|
||
- `app.workflow.expression.engine: jakarta-el` - 使用 Jakarta EL 表达式引擎
|
||
|
||
### 数据库
|
||
|
||
项目使用 MySQL 8 作为主数据库,Flowable 会自动创建所需的表结构。
|
||
|
||
业务表包括:
|
||
- `workflow_definitions` - 工作流定义
|
||
- `node_types` - 节点类型元数据
|
||
- `workflow_executions` - 工作流执行记录
|
||
- `node_execution_logs` - 节点执行日志
|
||
|
||
## 开发指南
|
||
|
||
### 目录结构
|
||
|
||
```
|
||
src/main/java/com/flowable/devops/
|
||
├── FlowableDevopsApplication.java # 主应用类
|
||
├── config/ # 配置类
|
||
│ ├── FlowableConfig.java # Flowable配置
|
||
│ └── WebFluxConfig.java # WebFlux配置
|
||
├── controller/ # 控制器
|
||
├── service/ # 服务层
|
||
├── entity/ # 实体类
|
||
├── repository/ # 数据访问层
|
||
├── workflow/ # 工作流相关
|
||
│ └── node/ # 节点实现
|
||
└── expression/ # 表达式引擎
|
||
```
|
||
|
||
### 注意事项
|
||
|
||
1. 所有 ServiceTask 必须使用 `delegateExpression="${genericNodeExecutor}"`
|
||
2. 条件分支通过 ExclusiveGateway + 条件边实现
|
||
3. 表达式统一使用 Jakarta EL,格式为 `${...}`
|
||
4. 审批节点使用 UserTask,自然暂停等待
|
||
|
||
## 故障排除
|
||
|
||
### Maven依赖下载问题
|
||
|
||
如果遇到Maven仓库访问问题,使用项目本地的settings.xml:
|
||
|
||
```bash
|
||
mvn -s settings.xml [command]
|
||
```
|
||
|
||
### 数据库连接问题
|
||
|
||
确保:
|
||
1. MySQL服务正在运行
|
||
2. 数据库 `flowable-devops` 已创建
|
||
3. 用户权限配置正确
|
||
4. 网络连接正常
|
||
|
||
### Redis连接问题
|
||
|
||
确保:
|
||
1. Redis服务正在运行
|
||
2. 指定的数据库可访问
|
||
3. 密码配置正确(如有) |