# flowable教学演示demo **Repository Path**: samoukris/flowable ## Basic Information - **Project Name**: flowable教学演示demo - **Description**: flowable教学演示demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-14 - **Last Updated**: 2026-06-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flowable 工作流教学演示系统 涵盖 Flowable 核心概念的完整教学项目,包含前端可视化流程图设计、Excel 导入导出、数据库管理流程定义。 ## 技术栈 - **后端**: Spring Boot 2.7 + Flowable 6.7.2 + MySQL - **前端**: 原生 HTML/CSS/JS + bpmn-js 可视化设计器 - **Excel**: Apache POI 导入导出 ## 功能模块 | 模块 | 功能 | 对应面试知识点 | |------|------|---------------| | 流程定义管理 | 列表查看、部署BPMN、上传文件、查看XML、删除 | RepositoryService、版本管理 | | 流程设计器 | bpmn-js 可视化拖拽设计、部署 | BPMN 2.0 元素、BPMN XML 结构 | | Excel导入导出 | 批量导出/导入流程定义(含BPMN XML) | 流程定义序列化、批量部署 | | 流程实例管理 | 启动流程、变量传递、挂起/激活 | RuntimeService、流程变量 | | 任务管理 | 按候选人/办理人查询、签收、完成任务 | TaskService、candidateGroups | | 用户权限 | 演示用户: zhangsan/lisi/wangwu/hrUser | IdentityService、用户组 | ## 内置示例流程 系统启动后自动部署**请假审批流程**(key: `leave`): ``` 发起申请 → 部门经理审批 → [判断天数] → (≤3天) → 人事备案 → 结束 → (>3天) → 总经理审批 → 人事备案 → 结束 ``` ### 演示的用户/组 | 用户 | 组 | 密码 | |------|----|------| | zhangsan | manager(部门经理) | 123456 | | lisi | manager(部门经理) | 123456 | | wangwu | director(总经理) | 123456 | | hrUser | hr(人事) | 123456 | ## 快速启动 ### 1. 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 5.7+ 或 8.0 ### 2. 创建数据库 ```sql CREATE DATABASE IF NOT EXISTS flowable_demo DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; ``` ### 3. 修改数据库配置 编辑 `src/main/resources/application.yml`,修改 MySQL 用户名和密码: ```yaml spring: datasource: username: root # 改为你的 MySQL 用户名 password: yourpass # 改为你的 MySQL 密码 ``` ### 4. 启动 ```bash mvn spring-boot:run ``` 或打包后运行: ```bash mvn package -Dmaven.test.skip=true java -jar target/flowable-demo-1.0.0.jar ``` ### 5. 访问 | 地址 | 说明 | |------|------| | http://localhost:8080 | 首页(系统仪表盘) | | http://localhost:8080/pages/process-definitions.html | 流程定义管理 | | http://localhost:8080/pages/modeler.html | 流程设计器(bpmn-js) | | http://localhost:8080/pages/excel-manager.html | Excel 导入导出 | | http://localhost:8080/pages/process-instances.html | 流程实例管理 | | http://localhost:8080/pages/task-list.html | 任务管理 | ## 演示操作步骤 ### 1. 查看已部署的流程 启动后,打开「流程定义」页面,可以看到 `leave` 流程(版本 v1)。 ### 2. 启动一个请假流程 1. 进入「流程实例」→ 点击「启动流程」 2. 选择 `leave` 流程,填写: - 申请人: `张三` - 请假天数: `2`(≤3天,只需部门经理审批) 3. 点击启动 ### 3. 完成任务审批 1. 进入「任务管理」 2. 查询候选组 `manager` 的任务 3. 签收任务 → 点击完成 → 同意 4. 再查询候选组 `hr` 的任务(以 hrUser 身份完成人事备案) ### 4. 体验分支流程 启动时请假天数填 `5`(>3天),会多出「总经理审批」环节。 ### 5. 设计并部署新流程 1. 进入「流程设计器」 2. 拖拽左侧元素到画布设计新流程 3. 点击「部署流程」输入流程Key 4. 部署后在「流程定义」页面查看 ### 6. Excel 导入导出 1. 导出:在「Excel导入导出」页面点击导出,下载 xlsx 文件 2. 编辑:在 Excel 中修改或新增流程定义(G列填入 BPMN XML) 3. 导入:上传修改后的 Excel 文件,批量部署流程 ## 项目结构 ``` flowable/ ├── pom.xml ├── README.md ├── src/main/java/com/flowable/demo/ │ ├── FlowableDemoApplication.java # 启动类 │ ├── config/ │ │ ├── WebConfig.java # CORS 配置 │ │ └── DemoDataInitializer.java # 演示数据初始化 │ ├── controller/ │ │ ├── ProcessDefinitionController.java # 流程定义 CRUD │ │ ├── ProcessInstanceController.java # 流程实例管理 │ │ ├── TaskController.java # 任务管理 │ │ └── ExcelController.java # Excel 导入导出 │ └── service/ │ ├── ProcessDefinitionService.java # 流程定义服务 │ └── ExcelService.java # Excel 处理服务 ├── src/main/resources/ │ ├── application.yml # 配置文件 │ ├── processes/ │ │ └── leave.bpmn20.xml # 示例请假流程 │ └── static/ │ ├── index.html # 首页 │ ├── css/styles.css # 样式 │ ├── js/api.js # API 工具 │ └── pages/ │ ├── process-definitions.html # 流程定义管理页 │ ├── modeler.html # bpmn-js 设计器 │ ├── excel-manager.html # Excel 导入导出页 │ ├── process-instances.html # 流程实例管理页 │ └── task-list.html # 任务管理页 ``` ## 对接面试知识点 | 演示功能 | 对应 Flowable 概念 | 面试题 | |---------|-------------------|--------| | 自动部署 leave.bpmn20.xml | RepositoryService.deploy | 流程部署版本机制 | | 启动流程实例 | RuntimeService.startProcessInstanceByKey | 流程实例 vs 流程定义 | | 候选人组签收任务 | TaskService.claim / candidateGroups | 候选人 vs 指定人 | | 条件分支逻辑 | ExclusiveGateway + conditionExpression | 排他网关使用 | | 流程变量传递 | execution.setVariable / complete(variables) | 变量作用域 | | 挂起/激活流程 | suspendProcessInstanceById | 流程生命周期管理 | | 查看BPMN XML | RepositoryService.getResourceAsStream | 部署资源存储 | | Excel导入导出 | 自定义实现 | 流程定义迁移方案 | | 用户组管理 | IdmIdentityService | 身份服务扩展性 |