首页 > 社交 > 科普中国

SpringBoot+Vue+Flowable,模拟一个请假审批流程

常驻编辑 科普中国 2022-08-11 流程   流程图   矩形   变量   参数   页面   简单   经理   项目   用户
N50拜客生活常识网

6. 请假审批

接下来经理就可以选择批准或者是拒绝这请假了。N50拜客生活常识网

首先我们封装一个实体类用来接受前端传来的请求:N50拜客生活常识网

public class ApproveRejectVO {    private String taskId;    private Boolean approve;    private String name;    // 省略 getter/setter}

参数都好理解,approve 为 true 表示申请通过,false 表示申请被拒绝。N50拜客生活常识网

接下来我们来看接口:N50拜客生活常识网

@PostMapping("/handler")public RespBean askForLeaveHandler(@RequestBody ApproveRejectVO approveRejectVO) {    return askForLeaveService.askForLeaveHandler(approveRejectVO);}

看具体的 askForLeaveHandler 方法:N50拜客生活常识网

@Servicepublic class AskForLeaveService {    @Autowired    TaskService taskService;    public RespBean askForLeaveHandler(ApproveRejectVO approveRejectVO) {        try {            boolean approved = approveRejectVO.getApprove();            Map variables = new HashMap();            variables.put("approved", approved);            variables.put("employee", approveRejectVO.getName());            Task task = taskService.createTaskQuery().taskId(approveRejectVO.getTaskId()).singleResult();            taskService.complete(task.getId(), variables);            if (approved) {                //如果是同意,还需要继续走一步                Task t = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).singleResult();                taskService.complete(t.getId());            }            return RespBean.ok("操作成功");        } catch (Exception e) {            e.printStackTrace();        }        return RespBean.error("操作失败");    }}

大家注意这个审批流程:N50拜客生活常识网

  1. 审批时需要两个参数,approved 和 employee,approved 为 true,就会自动进入到审批通过的流程中,approved 为 false 则会自动进入到拒绝流程中。
  2. 通过 taskService,结合 taskId,从流程中查询出对应的 task,然后调用 taskService.complete 方法传入 taskId 和 变量,以使流程向下走。
  3. 小伙伴们再回顾一下我们前面的流程图,如果请求被批准备了,那么在执行完自定义的 Approve 逻辑后,就会进入到 Holiday approved 这个 userTask 中,注意此时并不会继续向下走了(还差一步到结束事件);如果是请求拒绝,则在执行完自定义的 Reject 逻辑后,就进入到结束事件了,这个流程就结束了。
  4. 针对第三条,所以代码中我们还需要额外再加一步,如果是 approved 为 true,那么就再从当前流程中查询出来需要执行的 task,再调用 complete 继续走一步,此时就到了结束事件了,这个流程就结束了。注意这次的查询是根据当前流程的 ID 查询的,一个流程就是一条线,这条线上有很多 Task,我们可以从 Task 中获取到流程的 ID。

好啦,接口就写好了。N50拜客生活常识网

当然,这里还涉及到两个自定义的逻辑,就是批准或者拒绝之后的自定义逻辑,这个其实很好写,如下:

相关阅读:

  • 两地隔得远怎么办婚礼
  • 婚礼只办一场在女方办是倒插门吗
  • 郑州富士康怎么样(郑州富士康入职流程)
  • 猪八戒网怎么接单(猪八戒网接单流程)
  • 辟谷怎么读(第一次辟谷的详细流程)
  • 毕业后考研怎么报名(结业生考研报名流程)
  • 怎么面试(面试别人的话术和流程)
  • 工装包括哪些(工装施工流程全部工序和详细)
  • 哪些银行可以办etc(etc如何办理流程)
  • 房产证哪里办理(办理房证在哪里办理流程)
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。