请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

旧版API如何获取流程实例的状态属性?


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这个属性?

正在回答 回答被采纳积分+3

1回答

提问者 布辛 2022-01-12 09:27:46

老师,我自己研究了一下,觉得在源码里一定能看出什么,果然找到了新旧API转换的部分:

private ProcessInstanceStatus calculateStatus(ProcessInstance internalProcessInstance) {
    if (internalProcessInstance.isSuspended()) {
        return ProcessInstanceStatus.SUSPENDED;
    } else {
        return internalProcessInstance.isEnded() ? ProcessInstanceStatus.COMPLETED : ProcessInstanceStatus.RUNNING;
    }
}

原来,就是对原有的ProcessInstance做了一个类别判断:

  1. 如果是挂起,标记为【挂起】;

  2. 如果是结束,标记为【已完成】;否则,标记为【运行中】;

1 回复 有任何疑惑可以回复我~
  • 提问者 布辛 #1
    这样看的话,其实新版API只是在旧版API上做了一层封装。
    回复 有任何疑惑可以回复我~ 2022-01-12 09:30:05
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号