# flow-engine **Repository Path**: yhgit/flow-engine ## Basic Information - **Project Name**: flow-engine - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-06 - **Last Updated**: 2026-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flowable 7.1.0 流程管理系统 一个基于 Spring Boot + Vue 3 + Flowable 7.1.0 的流程管理平台,支持 BPMN 2.0 流程设计、部署、执行和监控。 ## 📋 特性 - ✅ **Flowable 7.1.0 集成** - 完整的流程引擎集成 - ✅ **BPMN 2.0 设计器** - 基于 bpmn-js 的可视化流程设计器 - ✅ **多实例配置** - 支持串行/并行多实例、集合变量、完成条件 - ✅ **任务监听器** - 支持类、表达式、委托表达式三种方式 - ✅ **表单集成** - 支持 Form.js 表单定义和数据绑定 - ✅ **JWT 认证** - 安全的用户认证和权限控制 - ✅ **Docker 部署** - 一键 Docker Compose 部署 ## 🚀 快速开始 ### 环境要求 - Java 17+ - Node.js 18+ - MySQL 8.0+ - Maven 3.8+ ### 启动步骤 #### 1. 数据库准备 ```sql CREATE DATABASE flowable CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 2. 后端启动 ```bash # 编译构建 mvn clean package -DskipTests # 启动应用 java -jar target/flowable-integration-0.0.1-SNAPSHOT.jar ``` #### 3. 前端启动 ```bash cd ui-vben npm install npm run dev ``` #### 4. Docker Compose 启动(推荐) ```bash docker-compose up -d ``` ## 📊 API 接口 ### 流程设计接口 (`/api/process`) | 接口 | 方法 | 描述 | |------|------|------| | `/process/save` | POST | 保存流程定义(草稿) | | `/process/list` | GET | 获取流程列表 | | `/process/{id}` | GET | 获取流程详情 | | `/process/{id}/xml` | GET | 获取流程XML | | `/process/deploy/{id}` | POST | 部署流程到Flowable | | `/process/undeploy/{id}` | POST | 下架流程 | ### 流程实例接口 (`/api/instance`) | 接口 | 方法 | 描述 | |------|------|------| | `/instance/definitions` | GET | 获取已部署的流程定义 | | `/instance/start` | POST | 启动流程实例(异步) | | `/instance/running` | GET | 获取运行中的流程实例 | | `/instance/finished` | GET | 获取已结束的流程实例 | | `/instance/detail/{id}` | GET | 获取流程实例详情 | | `/instance/xml/{id}` | GET | 获取流程定义XML | | `/instance/cancel/{id}` | POST | 终止流程实例 | | `/instance/tasks` | GET | 获取任务列表 | | `/instance/complete` | POST | 完成任务 | ## 🗄️ 数据库设计 ### 业务表 (biz 开头) #### `biz_bpm_process_definition` 流程定义表,存储流程设计信息 - `id`: 主键ID - `name`: 流程名称(唯一) - `process_key`: BPMN流程定义Key - `bpmn_xml`: BPMN XML内容 - `description`: 流程描述 - `version`: 版本号 - `deployment_id`: Flowable部署ID - `process_definition_id`: Flowable流程定义ID - `deployed`: 是否已部署到Flowable(0-未部署,1-已部署) - `deleted`: 逻辑删除标记 - `create_time`: 创建时间 - `update_time`: 更新时间 #### `biz_bpm_form_definition` 表单定义表,存储表单设计信息 - `id`: 主键ID - `name`: 表单名称(唯一) - `form_key`: 表单Key - `schema_json`: Form.js Schema JSON内容 - `description`: 表单描述 - `version`: 版本号 - `deleted`: 逻辑删除标记 - `create_time`: 创建时间 - `update_time`: 更新时间 #### `biz_bpm_process_instance` 流程实例执行记录表,存储流程实例运行状态 - `id`: 主键ID - `process_instance_id`: Flowable流程实例ID - `process_definition_id`: 流程定义ID(数据库) - `process_definition_key`: 流程定义Key - `process_definition_name`: 流程名称 - `business_key`: 业务Key - `status`: 状态(RUNNING, COMPLETED, FAILED, CANCELLED) - `start_time`: 启动时间 - `end_time`: 结束时间 - `duration`: 持续时间(毫秒) - `start_user_id`: 启动人 - `delete_reason`: 终止原因 - `deleted`: 逻辑删除标记 - `create_time`: 创建时间 - `update_time`: 更新时间 ## 🐳 Docker 部署 ### docker-compose.yml ```yaml version: '3.8' services: mysql: image: mysql:8.0 container_name: flowable-mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: flowable volumes: - ./mysql-data:/var/lib/mysql restart: always flowable-app: build: . container_name: flowable-app ports: - "8082:8082" depends_on: - mysql environment: - SPRING_PROFILES_ACTIVE=prod - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/flowable?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=123456 restart: always ``` ### Dockerfile ```dockerfile FROM openjdk:17-jre-slim WORKDIR /app COPY target/flowable-integration-*.jar app.jar EXPOSE 8082 ENTRYPOINT ["java", "-jar", "app.jar"] ``` ## 🛠️ 构建脚本 ### build/build.sh 一键编译构建脚本: ```bash #!/bin/bash echo "开始构建 Flowable 集成系统..." # 清理 mvn clean # 编译后端 echo "编译后端..." mvn package -DskipTests # 构建前端 echo "构建前端..." cd ui-vben || exit 1 npm install npm run build cd .. # 复制构建产物 mkdir -p build cp target/flowable-integration-*.jar build/ cp -r ui-vben/dist build/frontend echo "构建完成!产物位于 build/ 目录" echo "使用 docker-compose up 启动服务" ``` ## 📁 项目结构 ``` flowable-integration/ ├── src/ # 后端源代码 │ └── main/ │ ├── java/ │ │ └── com/example/flowableintegration/ │ │ ├── controller/ # 控制器 │ │ ├── service/ # 业务服务 │ │ ├── entity/ # 实体类 │ │ ├── mapper/ # MyBatis Mapper │ │ └── configuration/ # 配置类 │ └── resources/ │ ├── sql/ # SQL脚本 │ └── application.yaml # 配置文件 ├── ui-vben/ # 前端代码 ├── docker-compose/ # Docker相关文件 ├── build/ # 构建产物目录 ├── README.md # 项目文档 └── pom.xml # Maven配置 ``` ## 📝 许可证 MIT License --- ## 🧪 功能测试 本项目使用 TestNG + Spring RestTemplate + fastjson2 实现 HTTP 接口功能测试。 ### 测试结构 ``` server/src/test/ ├── java/com/example/flowableintegration/ │ ├── base/ │ │ └── BaseTest.java # 基础测试类(HTTP工具、配置加载) │ └── test/ │ ├── FormTemplateTest.java # 表单模板测试(5个测试) │ ├── ProcessTemplateTest.java # 流程模板测试(6个测试) │ ├── FlowInstanceTest.java # 流程实例测试(8个测试) │ └── FunctionalTestSuite.java # 完整测试套件(18个测试) └── resources/ ├── application-test.yaml # 测试配置文件 ├── testng.xml # TestNG配置 └── templates/ ├── test-form.json # 示例表单模板 └── test-process.bpmn # 示例流程模板(BPMN 2.0) ``` ### 测试执行顺序 | 模块 | 测试 | 描述 | |------|------|------| | **登录模块** | 1.1 | user1 登录并保存 token | | | 1.2 | user2 登录并保存 token | | **表单模板** | 2.1 | 新增表单 | | | 2.2 | 列表查询 | | | 2.3 | 详情查看 | | | 2.4 | 部署表单 | | **流程模板** | 3.1 | 新增流程 | | | 3.2 | 列表查询 | | | 3.3 | 详情查看 | | | 3.4 | XML 获取 | | | 3.5 | 部署流程 | | **流程实例** | 4.1 | 列出已部署流程 | | | 4.2 | 启动流程实例 | | | 4.3 | 检查运行状态 | | | 4.4 | user1 获取任务 | | | 4.5 | user1 审批任务 | | | 4.6 | 验证流程完成 | | | 4.7 | 获取流程详情 | ### 配置说明 在 `server/src/test/resources/application-test.yaml` 中配置: ```yaml test: server: host: localhost # 服务地址 port: 8082 # 服务端口 users: user1: username: user1 # 测试用户1 password: 123456 user2: username: user2 # 测试用户2 password: 123456 templates: form: path: src/test/resources/templates/test-form.json # 表单模板路径 process: path: src/test/resources/templates/test-process.bpmn # 流程模板路径 ``` ### 运行测试 ```bash # 进入后端目录 cd server # 编译测试类 mvn test-compile # 运行完整测试套件 mvn test -Dtest=FunctionalTestSuite # 运行单个测试类 mvn test -Dtest=FormTemplateTest mvn test -Dtest=ProcessTemplateTest mvn test -Dtest=FlowInstanceTest # 使用 testng.xml 运行 mvn test -Dspring.profiles.active=test -Dtest=FunctionalTestSuite ``` ### 前置条件 - 服务已启动并运行在配置的 host:port - 数据库可访问 - 测试用户(user1, user2)已存在,密码为 123456 - 模板文件存在于配置的路径 ### 测试账号 | 用户名 | 密码 | 角色 | |--------|------|------| | user1 | 123456 | 审批人 | | user2 | 123456 | 申请人 | ### 测试模板版本 流程模板使用语义化版本号 `主版本.次版本.修订号` (SemVer): | 版本号 | 含义 | |--------|------| | 1.0.0 | 初始版本 | | 1.0.1 | 轻微修复 | | 1.1.0 | 新功能 | | 2.0.0 | 重大变更 | 版本信息存储位置: - BPMN XML: `process` 元素的 `name` 属性和 `camunda:versionTag` 扩展属性 - 数据库: `biz_bpm_process_version` 表的 `version` 字段