news 2026/5/1 19:04:58

java请假审批怎么做

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java请假审批怎么做

请假审批怎么做
结合你之前提到的 Spring Boot + MyBatis-Plus + Flowable 的技术栈,实现一个标准的“请假审批”功能,其实可以拆解为以下 5 个清晰的步骤。我们一步步来:

1. 设计业务流程图 (BPMN)

src/main/resources/processes/目录下新建一个 XML 文件(比如leave-process.bpmn20.xml)。这就是你的请假审批“地图”。

一个最基础的请假流程包含:员工提交 -> 领导审批 -> 结束。对应的 XML 代码如下:

<?xml version="1.0" encoding="UTF-8"?><definitionsxmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"xmlns:flowable="http://flowable.org/bpmn"targetNamespace="http://flowable.org/bpmn"><processid="leaveProcess"name="请假审批流程"isExecutable="true"><!-- 1. 开始事件 --><startEventid="startEvent"/><!-- 2. 员工提交请假申请 (Assignee 是动态传入的申请人) --><userTaskid="submitLeave"name="提交请假申请"flowable:assignee="${applicant}"/><!-- 3. 领导审批 (Assignee 是动态传入的审批人) --><userTaskid="managerApprove"name="领导审批"flowable:assignee="${manager}"/><!-- 4. 结束事件 --><endEventid="endEvent"/><!-- 连线:把上面的节点按顺序串起来 --><sequenceFlowsourceRef="startEvent"targetRef="submitLeave"/><sequenceFlowsourceRef="submitLeave"targetRef="managerApprove"/><sequenceFlowsourceRef="managerApprove"targetRef="endEvent"/></process></definitions>

(注:如果你想要实现“请假天数 > 3 天需要总监审批”的复杂逻辑,可以在中间加一个“排他网关 ExclusiveGateway”来做条件判断。)

2. 准备业务实体 (MyBatis-Plus)

请假审批不能光走流程,你还需要一张自己的业务表来存具体的请假信息。用 MyBatis-Plus 的常规操作即可:

@Data@TableName("t_leave")publicclassLeave{@TableId(type=IdType.AUTO)privateLongid;privateLonguserId;// 申请人IDprivateStringreason;// 请假理由privateIntegerdays;// 请假天数privateStringstatus;// 审批状态:PENDING(审批中), APPROVED(通过), REJECTED(拒绝)privateStringprocessInstanceId;// 关联 Flowable 的流程实例ID (核心关联字段!)}

3. 核心业务代码实现 (Service层)

在 Service 层,你需要把“存业务数据”和“走审批流程”结合起来。这里需要用到 Flowable 的两个核心服务:RuntimeService(管流程运转)和TaskService(管具体任务)。

@Service@RequiredArgsConstructorpublicclassLeaveService{privatefinalLeaveMapperleaveMapper;privatefinalRuntimeServiceruntimeService;// Flowable核心服务privatefinalTaskServicetaskService;// Flowable任务服务// 1. 员工提交请假申请@TransactionalpublicvoidsubmitLeave(Leaveleave){// 第一步:先把请假单存到自己的业务表里leave.setStatus("PENDING");leaveMapper.insert(leave);// 第二步:设置流程变量(把申请人、审批人等信息传给 Flowable)Map<String,Object>variables=newHashMap<>();variables.put("applicant","张三");// 实际开发中从登录上下文获取variables.put("manager","李四");// 实际开发中根据组织架构获取// 第三步:启动 Flowable 流程实例,并把业务表的ID传进去作为业务主键ProcessInstanceinstance=runtimeService.startProcessInstanceByKey("leaveProcess",leave.getId().toString(),variables);// 第四步:把生成的流程实例ID存回业务表,方便以后关联查询leave.setProcessInstanceId(instance.getId());leaveMapper.updateById(leave);}// 2. 领导审批(同意或拒绝)@TransactionalpublicvoidapproveTask(StringtaskId,booleanapproved){// 设置审批结果变量,流程会根据这个变量决定下一步走向(如果加了网关的话)Map<String,Object>variables=newHashMap<>();variables.put("approved",approved);// 核心:完成当前这个审批任务,流程会自动流向下一个节点taskService.complete(taskId,variables);// 根据审批结果,更新自己业务表里的状态// (实际开发中需要通过 taskId 查出流程实例ID,再找到对应的业务单据进行更新)// ... update leave set status = 'APPROVED' ...}}

4. 查询待办任务

领导登录系统后,怎么知道自己有哪些请假单要批?直接问 Flowable 的TaskService要:

// 查询当前用户(比如李四)的待办任务publicList<Task>getTodoTasks(Stringassignee){returntaskService.createTaskQuery().taskAssignee(assignee)// 指定办理人.orderByTaskCreateTime().desc()// 按时间倒序.list();}

5. 进阶:使用 Flowable UI 拖拽画图

如果你觉得手写上面的 XML 太痛苦,Flowable 官方其实自带了一套非常好用的 UI 设计器。

  • 在项目中引入flowable-spring-boot-starter-ui相关的依赖。
  • 启动项目后,访问http://localhost:8080/flowable-ui(默认账号密码都是admin)。
  • 你可以像画思维导图一样,直接拖拽“用户任务”、“网关”等组件来设计请假流程,画完后点击部署,流程就会自动存到数据库里。

总结一下核心思路:
用 MyBatis-Plus 维护你自己的t_leave业务表,用 Flowable 维护审批的流转状态。两者通过processInstanceId(流程实例ID)进行关联。先存业务数据,再启动流程;审批时先完成任务,再更新业务数据。按照这个节奏,请假审批功能就能顺利跑通了!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 18:59:23

告别裸机轮询!用STM32CubeMX+DMA+空闲中断高效接收串口数据包

STM32串口数据包高效接收&#xff1a;DMA空闲中断实战指南 在嵌入式系统开发中&#xff0c;串口通信是最基础也最常用的外设接口之一。传统的中断接收方式虽然简单易用&#xff0c;但在高波特率或大数据量场景下&#xff0c;频繁的中断响应会显著增加CPU负担&#xff0c;影响系…

作者头像 李华
网站建设 2026/5/1 18:56:32

Podcast Bulk Downloader:3分钟搞定播客批量下载的终极解决方案

Podcast Bulk Downloader&#xff1a;3分钟搞定播客批量下载的终极解决方案 【免费下载链接】PodcastBulkDownloader Simple software for downloading podcasts 项目地址: https://gitcode.com/gh_mirrors/po/PodcastBulkDownloader 你是否曾经因为网络信号不好而无法收…

作者头像 李华
网站建设 2026/5/1 18:54:25

Windows系统优化三部曲:用Win11Debloat打造纯净高效的Windows体验

Windows系统优化三部曲&#xff1a;用Win11Debloat打造纯净高效的Windows体验 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…

作者头像 李华
网站建设 2026/5/1 18:49:48

为团队统一开发环境配置 TaoToken CLI 工具实现一键接入

为团队统一开发环境配置 TaoToken CLI 工具实现一键接入 1. 团队开发环境中的模型接入挑战 在多人协作的技术团队中&#xff0c;统一大模型API接入方式常面临三个典型问题&#xff1a;开发工具配置分散、模型调用标准不统一、密钥管理缺乏集中控制。不同成员可能使用Python脚…

作者头像 李华