ZPY博客

Activiti7根据taskId获取Activity对象

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); 
}