首页 > 社交 > 科普中国

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

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

public class Approve implements JavaDelegate {    @Override    public void execute(DelegateExecution execution) {        System.out.println("申请通过:"+execution.getVariables());    }}

我们自定义类实现 JavaDelegate 接口即可,然后我们在 execute 方法中做自己想要做的事情即可,execution 中有这个流程中的所有变量。我们可以在这里发邮件(公众号江南一点雨后台回复 666 有发邮件教程)、发短信等等。Reject 的定义方式也是类似的。这些自定义类写好之后,将来配置到流程图中即可(可查看上文的流程图)。N50拜客生活常识网

最后再来看看前端提交方法就简单了(页面源码上文已经列出):N50拜客生活常识网

approveOrReject(taskId, approve,name) {    let _this = this;    axios.post('/handler', {taskId: taskId, approve: approve,name:name})        .then(function (response) {            _this.initTasks();        })        .catch(function (error) {            console.log(error);        });}

这就一个普通的 Ajax 请求,批准的话第二个参数就为 true,拒绝的话第二个参数就为 false。N50拜客生活常识网

7. 结果查询

最后,每个用户都可以查看自己曾经的申请记录。本来这个登录之后就可以展示了,但是因为我们没有登录,所以这里也是需要手动输入查询的用户,然后根据用户名查询这个用户的历史记录,我们先来看查询接口:N50拜客生活常识网

@GetMapping("/search")public RespBean searchResult(String name) {    return askForLeaveService.searchResult(name);}

参数就是要查询的用户名。具体的查询流程如下:N50拜客生活常识网

public RespBean searchResult(String name) {    List historyInfos = new ArrayList<>();    List historicProcessInstances = historyService.createHistoricProcessInstanceQuery().processInstanceBusinessKey(name).finished().orderByProcessInstanceEndTime().desc().list();    for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) {        HistoryInfo historyInfo = new HistoryInfo();        Date startTime = historicProcessInstance.getStartTime();        Date endTime = historicProcessInstance.getEndTime();        List historicVariableInstances = historyService.createHistoricVariableInstanceQuery()                .processInstanceId(historicProcessInstance.getId())                .list();        for (HistoricVariableInstance historicVariableInstance : historicVariableInstances) {            String variableName = historicVariableInstance.getVariableName();            Object value = historicVariableInstance.getValue();            if ("reason".equals(variableName)) {                historyInfo.setReason((String) value);            } else if ("days".equals(variableName)) {                historyInfo.setDays(Integer.parseInt(value.toString()));            } else if ("approved".equals(variableName)) {                historyInfo.setStatus((Boolean) value);            } else if ("name".equals(variableName)) {                historyInfo.setName((String) value);            }        }        historyInfo.setStartTime(startTime);        historyInfo.setEndTime(endTime);        historyInfos.add(historyInfo);    }    return RespBean.ok("ok", historyInfos);}
  1. 我们当时在开启流程的时候,传入了一个参数 key,这里就是再次通过这个 key,也就是用户名去查询历史流程,查询的时候还加上了 finished 方法,这个表示要查询的流程必须是执行完毕的流程,对于没有执行完毕的流程,这里不查询,查完之后,按照流程最后的处理时间进行排序。
  2. 遍历第一步的查询结果,从 HistoricProcessInstance 中提取出每一个流程的详细信息,并存入到集合中,并最终返回。

相关阅读:

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