如何在activiti工作流程中获取上一个任务名称

时间:2013-07-15 10:33:59

标签: activiti

实际上我想在当前任务中使用上一个任务名称,以便如何在activiti中获取当前任务中的上一个任务名称。如果有人知道你能帮助我吗?

例如:TASK1 ==> TASK2 ==> TASK3

我想在task1中使用task1名称,在task1中使用task2名称。

1 个答案:

答案 0 :(得分:1)

您可以从当前的流程实例中获取它:

@Service
public class SomeWorkflowService {

    @Autowired
    HistoryService historyService;

    @Autowired
    TaskService taskService;

    public Map<String, Object> currentTaskService(String currentTaskId) {
        Map<String, Object> taskMap = new HashMap<>();
        Task currentTask = taskService.createTaskQuery().taskId(currentTaskId).singleResult();
        HistoricTaskInstance previousTask = findPreviousTask(currentTask.getProcessInstanceId());

        taskMap.put("Current task name: ", currentTask.getName());
        taskMap.put("Previous task name: ", previousTask.getName());

        return taskMap;
    }

    // Order tasks by end date and get the latest
    public HistoricTaskInstance findPreviousTask(String processInstanceId) {
        return historyService.createHistoricTaskInstanceQuery().
                processInstanceId(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list().get(0);
    }

}

这种简单算法可能存在一些问题。例如,我在应用程序中有多个子进程,或者可能有并行执行的任务,然后我使用更复杂的算法来查找以前的任务。