旧版API如何获取流程实例的状态属性?
来源:7-6 流程实例接口(上)
布辛
2022-01-11
List<ProcessInstance> processInstanceList = runtimeService
.createProcessInstanceQuery()
.list();
List<HashMap<String, Object>> collectHashMap = processInstanceList
.stream()
.sorted(Comparator.comparing(ProcessInstance::getStartTime))
.map(p -> {
return new HashMap<String, Object>() {{
put("id", p.getId());
put("name", p.getName());
put("processDefinitionId", p.getProcessDefinitionId());
put("processDefinitionKey", p.getProcessDefinitionKey());
put("startTime", p.getStartTime());
put("processDefinitionVersion", p.getProcessDefinitionVersion());
// 因为PI里没有历史高亮需要的deploymentID和resourceName,所以需要再次查询
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(p.getProcessDefinitionId()).singleResult();
put("deploymentId", processDefinition.getDeploymentId());
put("resourceName", processDefinition.getResourceName());
}};
})
.collect(Collectors.toList());
老师,您好!在实现后台接口【流程实例】这一小节,我没有按照课程跟您一样用的新版API,我想练习使用一下旧版API,可是发现旧版API中没有getStatus()这个方法,只有判断isEnded()和isSuspended()这个两个方法,请问老师如果我用旧版API,如何做到和新版一样的获取到流程实例的status这个属性?
写回答
1回答
-
布辛
提问者
2022-01-12
老师,我自己研究了一下,觉得在源码里一定能看出什么,果然找到了新旧API转换的部分:
private ProcessInstanceStatus calculateStatus(ProcessInstance internalProcessInstance) { if (internalProcessInstance.isSuspended()) { return ProcessInstanceStatus.SUSPENDED; } else { return internalProcessInstance.isEnded() ? ProcessInstanceStatus.COMPLETED : ProcessInstanceStatus.RUNNING; } }原来,就是对原有的ProcessInstance做了一个类别判断:
如果是挂起,标记为【挂起】;
如果是结束,标记为【已完成】;否则,标记为【运行中】;
112022-01-12
相似问题