上节课我们在前端页面成功的添加了请假记录,按照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("请假工作流删除失败");
}
}
}