flowable-devops/backend/README.md
dengqichen d840effe9e 提交
2025-10-13 14:04:05 +08:00

157 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. 密码配置正确(如有)