// 该流程实例的所有走过的task
List<HistoricTaskInstance> taskInstanceList = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)
.finished()
.list();
for (HistoricTaskInstance h : taskInstanceList) {
Map<String, Object> variables = new HashMap<>();
// 获取act_hi_detail表中的信息,但是HistoricDetail还没有包含变量信息
List<HistoricDetail> details = historyService.createHistoricDetailQuery()
.variableUpdates()
.activityInstanceId(h.getActivityInstanceId())// 使用activityInstanceId可以获取到每个节点对应的detail信息
.list();
for (HistoricDetail historicDetail : details) {
// 所以需要将HistoricDetail转换为HistoricVariableUpdate才可以获取到variables
HistoricVariableUpdate historicVariableUpdate = (HistoricVariableUpdate) historicDetail;
variables.put(historicVariableUpdate.getVariableName(), historicVariableUpdate.getValue());
}
}