我是 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");
}
}
解决了,使用TaskEntity而不是TaskService
如何使用TaskEntity? 嗨,迈克尔,我也有同样的问题,但不知道如何使用任务实体。