简单的调用说明以及一些参数设置,或不多说直接干饭。
目录
1.流程图
名称:JiCaiBaoZhang.bpmn:下载地址
2.部署
// @RequestMapping(value = "/deploy", method = RequestMethod.POST)
public R<String> deploy() {
Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("processes/JiCaiBaoZhang.bpmn")
.name("物资部审核")
.category("wuzi")
.deploy();
System.out.println("deploy ---> " + deploy);
return R.success(deploy.getId());
}
3.开始流程
public ProcessInstance start(String userId, List<String> xmList, List<String> jgList) {
HashMap<String, Object> map = new HashMap<>(3);
map.put("user", userId);
map.put("xmList", xmList);
map.put("jgList", jgList);
// 启动流程, 运行至第一步, 设置提交申请人, 审核人员列表
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey("JiCaiBaoZhang", map);
return processInstance;
}
4.提交或者重新提交
/**
* 开始或重新开始 提交申请 步骤
*
* @param proInsId
*/
@Override
public void applyOrRestart(String proInsId) {
Task task = taskService.createTaskQuery().processInstanceId(proInsId).singleResult();
taskService.complete(task.getId());
}
5.个人待办任务
public ArrayList<Map> list(String userId) {
List<Task> list = taskService.createTaskQuery()
.processDefinitionKey("JiCaiBaoZhang")
.taskAssignee(userId)
.orderByTaskCreateTime().asc().list();
ArrayList<Map> resList = getArrayListR(list);
resList.forEach(v -> {
String processInstanceId = String.valueOf(v.get("ProcessInstanceId"));
SljmHzMaterialReview review = reviewService.detailByProInsId(processInstanceId);
v.put("review", review);
});
return resList;
}
@Override
public ArrayList<Map> getArrayListR(List<Task> list) {
ArrayList<Map> resList = new ArrayList<>();
list.forEach(v -> {
LinkedHashMap<String, Object> map = new LinkedHashMap<>(5);
map.put("ProcessInstanceId", v.getProcessInstanceId());
map.put("TaskId", v.getId());
map.put("Assignee", v.getAssignee());
map.put("Name", v.getName());
map.put("CreateTime", new DateBuilder().with(v.getCreateTime()).toDateTime().toStr().build());
resList.add(map);
});
return resList;
}
6.处理任务
@Override
public void complete(String taskId, String comment, boolean flag) {
String pre = flag ? "通过. " : "驳回. ";
if (StringUtils.isNotBlank(comment)) {
pre += comment;
}
// 添加审批意见
taskService.addComment(taskId, null, pre);
// 设置流程变量
taskService.setVariable(taskId, "pass", flag ? 1 : 0);
// 完成审批
taskService.complete(taskId);
}
7.流程下 所有启动实例的 所有待办任务
/**
* 所有待办
*
* @return
*/
@RequestMapping(value = "/status/admin", method = RequestMethod.GET)
public R<ArrayList<Map>> status() {
List<ProcessInstance> piList = runtimeService.createProcessInstanceQuery().processDefinitionKey("JiCaiBaoZhang").list();
if (piList.isEmpty()) {
return R.success(null);
}
List<String> piIdList = piList.stream().map(ProcessInstance::getId).collect(Collectors.toList());
List<Task> list = taskService.createTaskQuery().processInstanceIdIn(piIdList).list();
ArrayList<Map> arrayListR = wuziService.getArrayListR(list);
return R.success(arrayListR);
}
@Override
public ArrayList<Map> getArrayListR(List<Task> list) {
ArrayList<Map> resList = new ArrayList<>();
list.forEach(v -> {
LinkedHashMap<String, Object> map = new LinkedHashMap<>(5);
map.put("ProcessInstanceId", v.getProcessInstanceId());
map.put("TaskId", v.getId());
map.put("Assignee", v.getAssignee());
map.put("Name", v.getName());
map.put("CreateTime", new DateBuilder().with(v.getCreateTime()).toDateTime().toStr().build());
resList.add(map);
});
return resList;
}