尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

java请假审批怎么做

java请假审批怎么做 请假审批怎么做结合你之前提到的 Spring Boot MyBatis-Plus Flowable 的技术栈实现一个标准的“请假审批”功能其实可以拆解为以下 5 个清晰的步骤。我们一步步来1. 设计业务流程图 (BPMN)在src/main/resources/processes/目录下新建一个 XML 文件比如leave-process.bpmn20.xml。这就是你的请假审批“地图”。一个最基础的请假流程包含员工提交 - 领导审批 - 结束。对应的 XML 代码如下?xml version1.0 encodingUTF-8?definitionsxmlnshttp://www.omg.org/spec/BPMN/20100524/MODELxmlns:flowablehttp://flowable.org/bpmntargetNamespacehttp://flowable.org/bpmnprocessidleaveProcessname请假审批流程isExecutabletrue!-- 1. 开始事件 --startEventidstartEvent/!-- 2. 员工提交请假申请 (Assignee 是动态传入的申请人) --userTaskidsubmitLeavename提交请假申请flowable:assignee${applicant}/!-- 3. 领导审批 (Assignee 是动态传入的审批人) --userTaskidmanagerApprovename领导审批flowable:assignee${manager}/!-- 4. 结束事件 --endEventidendEvent/!-- 连线把上面的节点按顺序串起来 --sequenceFlowsourceRefstartEventtargetRefsubmitLeave/sequenceFlowsourceRefsubmitLeavetargetRefmanagerApprove/sequenceFlowsourceRefmanagerApprovetargetRefendEvent//process/definitions(注如果你想要实现“请假天数 3 天需要总监审批”的复杂逻辑可以在中间加一个“排他网关 ExclusiveGateway”来做条件判断。)2. 准备业务实体 (MyBatis-Plus)请假审批不能光走流程你还需要一张自己的业务表来存具体的请假信息。用 MyBatis-Plus 的常规操作即可DataTableName(t_leave)publicclassLeave{TableId(typeIdType.AUTO)privateLongid;privateLonguserId;// 申请人IDprivateStringreason;// 请假理由privateIntegerdays;// 请假天数privateStringstatus;// 审批状态PENDING(审批中), APPROVED(通过), REJECTED(拒绝)privateStringprocessInstanceId;// 关联 Flowable 的流程实例ID (核心关联字段)}3. 核心业务代码实现 (Service层)在 Service 层你需要把“存业务数据”和“走审批流程”结合起来。这里需要用到 Flowable 的两个核心服务RuntimeService管流程运转和TaskService管具体任务。ServiceRequiredArgsConstructorpublicclassLeaveService{privatefinalLeaveMapperleaveMapper;privatefinalRuntimeServiceruntimeService;// Flowable核心服务privatefinalTaskServicetaskService;// Flowable任务服务// 1. 员工提交请假申请TransactionalpublicvoidsubmitLeave(Leaveleave){// 第一步先把请假单存到自己的业务表里leave.setStatus(PENDING);leaveMapper.insert(leave);// 第二步设置流程变量把申请人、审批人等信息传给 FlowableMapString,ObjectvariablesnewHashMap();variables.put(applicant,张三);// 实际开发中从登录上下文获取variables.put(manager,李四);// 实际开发中根据组织架构获取// 第三步启动 Flowable 流程实例并把业务表的ID传进去作为业务主键ProcessInstanceinstanceruntimeService.startProcessInstanceByKey(leaveProcess,leave.getId().toString(),variables);// 第四步把生成的流程实例ID存回业务表方便以后关联查询leave.setProcessInstanceId(instance.getId());leaveMapper.updateById(leave);}// 2. 领导审批同意或拒绝TransactionalpublicvoidapproveTask(StringtaskId,booleanapproved){// 设置审批结果变量流程会根据这个变量决定下一步走向如果加了网关的话MapString,ObjectvariablesnewHashMap();variables.put(approved,approved);// 核心完成当前这个审批任务流程会自动流向下一个节点taskService.complete(taskId,variables);// 根据审批结果更新自己业务表里的状态// (实际开发中需要通过 taskId 查出流程实例ID再找到对应的业务单据进行更新)// ... update leave set status APPROVED ...}}4. 查询待办任务领导登录系统后怎么知道自己有哪些请假单要批直接问 Flowable 的TaskService要// 查询当前用户比如李四的待办任务publicListTaskgetTodoTasks(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进行关联。先存业务数据再启动流程审批时先完成任务再更新业务数据。按照这个节奏请假审批功能就能顺利跑通了
返回列表