У меня есть поток 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 Engine выдает исключение (см. Причину), и весь поток умирает.
Caused by: org.activiti.engine.ActivitiOptimisticLockingException: Task[id=3867, name=Wait for Notification] was updated by another transaction concurrently
Итак, что я ищу: есть ли способ сделать задачу, каким-то образом, чтобы она принимала и проглатывала все ответы, не вызывая исключения.