RuoYi-activiti待办任务办理实战:我的待办、全部待办与统一审批接口completeTask全解析

📅 2026/8/22 15:21:57
RuoYi-activiti待办任务办理实战:我的待办、全部待办与统一审批接口completeTask全解析
RuoYi-activiti待办任务办理实战我的待办、全部待办与统一审批接口completeTask全解析【免费下载链接】RuoYi-activiti整合RuoYi框架基于Activiti6.0集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。项目地址: https://gitcode.com/gh_mirrors/sp/RuoYi-activitiRuoYi-activiti 是一款整合若依RuoYi框架与 Activiti 6.0 的开源工作流开发平台集流程设计、流程部署、流程执行、任务办理、流程监控于一体。本文带你实战其中的核心场景——待办任务办理从我的待办与全部待办两套查询接口讲起深入剖析统一审批接口completeTask的工作原理并拆解 formKey 外置表单机制与撤销、驳回、跳转等动态流程能力帮你快速上手企业级工作流开发。 快速认识RuoYi-activiti 工作流平台RuoYi-activiti 把若依的权限管理、代码生成、系统管理等基础设施与 Activiti 流程引擎结合形成了一个开箱即用的工作流平台。平台整体功能布局如下RuoYi-activiti工作流平台功能表在整套平台中任务办理是审批流真正跑起来的环节员工提交请假申请后审批人在待办列表里点开任务、填写审批意见、点击提交流程就流转到下一节点。本文聚焦的就是这条链路背后的接口设计。 我的待办 vs 全部待办两套查询接口的区别平台提供了两个待办查询接口均由后端 TaskController.java 提供文件路径ruoyi-admin/src/main/java/com/ruoyi/web/controller/activiti/TaskController.java对比项我的待办全部待办接口地址POST /task/manage/mylistPOST /task/manage/alllist查询条件taskAssignee(当前登录用户名)不限制办理人查所有任务典型使用者普通审批人管理员、流程督办人员公共能力按任务名称/流程名称过滤、active()过滤挂起任务、按创建时间倒序分页同左两者的共同点很值得新手注意返回统一的 TaskInfo 结构包含任务名称、流程实例编号、业务号businessKey、发起人、办理人、创建时间等字段实体定义在ruoyi-system/src/main/java/com/ruoyi/system/domain/TaskInfo.java每条记录都附带 formKey这是后续一个任务对应一个表单页面的关键下文详解。全部待办界面的实际效果如下管理员可以按流程名称、任务名称搜索系统中所有进行中的审批任务RuoYi-activiti全部待办任务列表界面前端页面对应ruoyi-ui/src/views/todo/myTodoList.vue与ruoyi-ui/src/views/todo/allTodoList.vue二者结构几乎一致只是分别调用/task/manage/mylist与/task/manage/alllist接口API 封装在ruoyi-ui/src/views/todo/api/myTodoList.js和ruoyi-ui/src/views/todo/api/allTodoList.js。✅ completeTask 统一审批接口一个接口办完所有任务RuoYi-activiti 最巧妙的设计是所有业务请假、采购、会议的用户任务办理复用同一个接口POST /task/manage/completeTask/{taskId}请求体是一个键值对Map既承载审批变量也承载审批意见。例如部门领导审批请假时的请求体{ deptleaderapprove: true, hr: admin, comment: 同意注意工作交接 }接口内部只做了四件事源码见 TaskController.java 的completeTask方法设置办理人taskService.setAssignee(taskId, 当前用户)确保任务办理记录归属当前登录人分离审批意见如果请求体里带comment字段先调用taskService.addComment(...)写入 Activiti 评论并从变量 Map 中移除完成用户任务taskService.complete(taskId, variables)把剩余键值对作为流程变量写入驱动流程走向下一节点返回成功结果。为什么说它优雅网关条件靠变量驱动BPMN 流程图上的网关表达式如${deptleaderapprove true}直接读取这些变量接口本身不需要感知具体业务新增流程零改动以后新增报销、用印等流程只要 BPMN 节点配置好 formKey 和网关表达式办理时仍调这个接口后端无需新增代码。请假流程从发起到审批完成的完整办理过程演示RuoYi-activiti请假流程待办任务办理演示 formKey 外置表单机制任务与页面的映射审批人点办理时页面怎么知道该渲染请假表单、采购表单还是会议表单答案是formKey设计 BPMN 流程图时为每个用户任务节点指定 formKey如leaveapply、purchase、meeting待办列表接口返回每条任务的 formKey前端点击办理后跳转到/process/{formKey}/{taskId}?id{businessKey}路由按 formKey 渲染对应表单组件ruoyi-ui/src/views/todo/processTask.vue表单组件位于ruoyi-ui/src/views/todo/components/目录表单提交时把数据写回业务表外置表单思想业务数据不存 Activiti 变量表再调用completeTask完成任务。这套机制让流程节点与前端页面解耦是平台通用性的核心来源。⏱️ 流程时间轴与动态操作撤销、驳回、跳转办理过程中还配套了两组实用能力任务办理时间轴GET /task/manage/history/{taskId}查询流程实例中所有用户任务的开始/结束时间与审批意见前端以时间轴形式展示审批进度动态流程操作由 DynamicFlowController.java文件路径ruoyi-admin/src/main/java/com/ruoyi/web/controller/activiti/DynamicFlowController.java提供GET /dynamic/flow/forceEnd/{taskId}——撤销强制结束流程实例GET /dynamic/flow/jump/{taskId}/{sid}——驳回/跳转把流程实例跳回指定节点如applyleave申请人节点实现驳回后修改重新提交。流程进度时间轴效果如下可以清晰看到每个节点由谁在什么时间办理RuoYi-activiti流程进度时间轴展示 新手快速上手步骤新建 MySQL 数据库ry-activitiMySQL 5.7字符集 utf8mb4导入项目根目录的 ry-activiti.sql 脚本编译打包后端工程运行java -jar ruoyi-admin.jar前端目录执行npm run dev前端工程位于ruoyi-ui/浏览器访问http://localhost/login使用账号admin/ 密码admin123登录在模型管理中设计并部署流程图然后在我的待办/全部待办中体验任务办理。如源码需要克隆仓库地址https://gitcode.com/gh_mirrors/sp/RuoYi-activiti 关键文件索引待办任务后端接口ruoyi-admin/src/main/java/com/ruoyi/web/controller/activiti/TaskController.java动态流程撤销/跳转ruoyi-admin/src/main/java/com/ruoyi/web/controller/activiti/DynamicFlowController.java待办任务数据结构ruoyi-system/src/main/java/com/ruoyi/system/domain/TaskInfo.java我的待办页面ruoyi-ui/src/views/todo/myTodoList.vue全部待办页面ruoyi-ui/src/views/todo/allTodoList.vue任务办理页面ruoyi-ui/src/views/todo/processTask.vue前端待办 API 封装ruoyi-ui/src/views/todo/api/myTodoList.js数据库脚本ry-activiti.sql小结RuoYi-activiti 用mylist/alllist两个接口解决任务从哪来用completeTask一个接口解决任务怎么办再配合 formKey 外置表单与动态流程操作构成了简洁而通用的待办任务办理体系。理解了这套模式你就能在若依平台上快速扩展出任意新的审批流程。【免费下载链接】RuoYi-activiti整合RuoYi框架基于Activiti6.0集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。项目地址: https://gitcode.com/gh_mirrors/sp/RuoYi-activiti创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考