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