2

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

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

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

4

1 回答 1

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

}

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

于 2016-10-10T10:47:09.113 回答