activiti 获取已完成的流程审批结果和原因详情 可以下一吗
时间: 2024-05-11 10:16:27 浏览: 40
可以的,你可以使用以下代码获取已完成的流程审批结果和原因详情:
```
List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId)
.orderByHistoricActivityInstanceStartTime().asc()
.list();
for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
String activityId = historicActivityInstance.getActivityId();
if (activityId.equals("endEvent")) { // 流程结束节点
String processInstanceId = historicActivityInstance.getProcessInstanceId();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
String endActivityInstanceId = historicActivityInstance.getId();
List<HistoricVariableInstance> variableInstances = historyService.createHistoricVariableInstanceQuery()
.processInstanceId(processInstanceId)
.activityInstanceId(endActivityInstanceId)
.list();
for (HistoricVariableInstance variableInstance : variableInstances) {
String variableName = variableInstance.getVariableName();
Object value = variableInstance.getValue();
System.out.println("variableName=" + variableName + ", value=" + value);
}
break;
}
}
```
该代码使用 Activiti 的 HistoryService API 获取已完成的流程审批结果和原因详情。具体来说,它获取所有历史活动实例,根据流程结束节点找到对应的历史流程实例,并从该历史流程实例中获取流程变量的值。最终,它打印流程变量的名称和值。
阅读全文