flowable-devops/backend
dengqichen d840effe9e 提交
2025-10-13 14:04:05 +08:00
..
logs 提交 2025-10-13 14:04:05 +08:00
src 提交 2025-10-13 14:04:05 +08:00
backend-fixed.log 提交 2025-10-13 14:04:05 +08:00
backend.log 提交 2025-10-13 14:04:05 +08:00
debug-workflow.json 提交 2025-10-13 14:04:05 +08:00
fix-maven.sh 提交 2025-10-13 14:04:05 +08:00
pom.xml 提交 2025-10-13 14:04:05 +08:00
README.md 提交 2025-10-13 14:04:05 +08:00
settings.xml 提交 2025-10-13 14:04:05 +08:00
simple-workflow.json 提交 2025-10-13 14:04:05 +08:00
test-workflow.json 提交 2025-10-13 14:04:05 +08:00
workflow-request.json 提交 2025-10-13 14:04:05 +08:00

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. 环境变量配置

设置以下环境变量:

# 数据库配置
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. 构建项目

# 如果遇到Maven仓库问题使用项目本地的settings.xml
mvn -s settings.xml clean package -DskipTests

# 或者使用默认设置需要确保Maven仓库配置正确
mvn clean package -DskipTests

3. 运行应用

# 开发模式运行
mvn -s settings.xml spring-boot:run

# 或者直接运行jar包
java -jar target/flowable-devops-backend-1.0-SNAPSHOT.jar

应用将在 http://localhost:8080 启动。

4. 运行测试

# 运行所有测试
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

mvn -s settings.xml [command]

数据库连接问题

确保:

  1. MySQL服务正在运行
  2. 数据库 flowable-devops 已创建
  3. 用户权限配置正确
  4. 网络连接正常

Redis连接问题

确保:

  1. Redis服务正在运行
  2. 指定的数据库可访问
  3. 密码配置正确(如有)