在activiti7中,虽然没有提供直接的根据taskId获取Activity对象的方法,但是我们可以通过查询流程实例下的所有activity对象后,然后循环判断是否与给过来的taskId相同来得到对应的activity对象,是不是很简单?代码如下:
public static HistoricActivityInstance getActivityId(String taskId) { TaskDto task = getTaskById(taskId); // 获取historicTaskInstanceList List<HistoricActivityInstance> historicTaskInstanceList = historyService .createHistoricActivityInstanceQuery() .processInstanceId(task.getProcessInstanceId()) .list(); // 从list中找到taskId匹配的Activity return historicTaskInstanceList.stream().filter( h -> taskId.equals(h.getTaskId())).findAny().orElse(null); }