如何在ActivitiEventListener中获取任务

问题描述 投票:0回答:2

我是 Activiti 和 java 的新手。我使用 activiti6 作为流程引擎。(spring boot 1.2.6)

我的目标:创建任务时,系统将自动(动态)为此任务分配一个备份候选者。 我正在使用 ActivitiEventListener 来监视“任务创建”evnet。(“TASK_CREATED”)

但这很奇怪。我确实获取了事件的executionId,但是当我尝试通过此executionId获取任务信息时,它抛出异常(null)。我检查了“activiti-admin”,确实没有创建该进程。

然后,如果我继续程序,最后,任务(与我之前捕获的相同executionId)将在“activiti-admin”(和数据库)中创建

如果我错误地使用了“TASK_CREATED”?如何在侦听器中获取任务?

顺便说一句:这个过程中的第一个任务是多实例(串行),我使用“startProcessInstanceByKey(ProcessKey,variables)”来启动该过程。

任何想法将不胜感激。

@Component
public class ComActivitiEventListener implements ActivitiEventListener, Serializable {
    protected TaskService taskService;

@Override
public void onEvent(ActivitiEvent event) {
    System.out.println(event.getType());
    if ("TASK_CREATED".equals(event.getType().toString()))
    {
        //SpringContextUtils
        taskService = SpringContextUtils.getBean(TaskService.class);
        //here I can get excutionId
        String executionId = event.getExecutionId();
        // I can not get task here, it's null
        Task task = taskService.createTaskQuery().executionId(executionId).singleResult();
        String taskId=task.getId();
        taskService.addCandidateUser(taskId, "backupuser");
    }
}
event-listener activiti
2个回答
0
投票

解决了,使用TaskEntity而不是TaskService


0
投票

如何使用TaskEntity? 嗨,迈克尔,我也有同样的问题,但不知道如何使用任务实体。

© www.soinside.com 2019 - 2024. All rights reserved.