我有一个Activiti流,它有一个用户任务部分,如下所示:
基本思想是“等待通知”用户任务等待来自特殊队列的响应。但实际上,一个特定的代码正好完成了任务:
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("KEY", variable);
String assignee = variable.getAssignee();
processService.completeTask(assignee, variables);
所以我的问题是,负责此代码的服务可以从该队列接收多个响应。这是我想要的行为(队列可以返回类似Message_Processed的消息,几毫秒后返回Message_Send)。但当第二个响应出现时,Activiti引擎抛出一个异常(参见原因),整个流程就会终止。
Caused by: org.activiti.engine.ActivitiOptimisticLockingException: Task[id=3867, name=Wait for Notification] was updated by another transaction concurrently
所以我要寻找的是:有没有一种方法可以完成一项任务,以某种方式,它可以接受并接受所有的响应,而不是抛出异常。