Имам поток Activiti, който има секция User Task, която изглежда така:
Основната идея е, че потребителската задача "Изчакайте известие" чака отговор от специалната опашка. Но всъщност конкретен код просто се състезава със задачата:
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
И така, това, което търся: Има ли начин да се направи задача по някакъв начин, която да поеме и да погълне всички отговори, без да хвърля изключение.