全部开发者教程

企业级在线办公系统

首页 慕课教程 企业级在线办公系统 企业级在线办公系统 12-7 用异步线程关闭请假审批工作流实例

上节课我们在前端页面成功的添加了请假记录,按照CRUD的顺序,接下来我们应该去做修改请假申请了吧?很遗憾,请假记录不允许修改。假设某个用户提交的请假申请,已经被部门经理审批通了,但是还需要总经理审批。如果现在用户修改了请假记录,那么部门经理不就白审批了么?也许有的同学说,那就做成修改请假申请,不管走到什么审批步骤,就从头开始审批。呵呵,这种做法跟删除请假申请,然后重新创建请假申请不是一样么,反而动态控制任务流转更加复杂。所以请假申请不提供修改功能,只有添加和删除。

只删除请假记录是不行的,我们需要调用工作流项目的Web方法,关闭请假审批实例。所以这节课咱们要写异步线程任务类的方法,下节课我们去写后端其他代码。

一、工作流Web接口

URL路径:/workflow/deleteProcessById

序号 参数 类型 含义
1 instanceId String 审批请假工作流实例的ID
2 type String 工作流类型
3 reason String 关闭工作流实例的原因
4 code String 慕课网授权码
5 tcode String 课程授权码

如果Web方法返回的状态码是200,说明成功关闭了工作流实例,否则就是关闭失败。

二、调用工作流Web接口

LeaveWorkflowTask.java类中,声明异步线程方法,调用工作流Web方法,关闭审批请假工作流实例。

public class LeaveWorkflowTask {
    ……
    @Async("AsyncTaskExecutor")
    public void deleteLeaveWorkflow(String instanceId, String type, String reason) {
        JSONObject json = new JSONObject();
        json.set("instanceId", instanceId);
        json.set("type", type);
        json.set("reason", reason);
        json.set("code", code);
        json.set("tcode", tcode);
        String url = workflow + "/workflow/deleteProcessById";
        HttpResponse resp = HttpRequest.post(url).header("Content-Type", "application/json")
                .body(json.toString()).execute();
        if (resp.getStatus() != 200) {
            log.error(resp.body());
            throw new EmosException("请假工作流删除失败");
        }
    }
}