2015-05-11 3 views
0

Может случиться так, что пользователь хочет запустить задачу, которая больше не существует. Затем пользователь вызывает исключение.Как обрабатывать ProcessEngineCdiException «Не удается возобновить задачу с идентификатором ...»

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/qed].[Faces Servlet]] (http-localhost/127.0.0.1:8080-5) JBWEB000236: Servlet.service() for servlet Faces Servlet threw exception: org.camunda.bpm.engine.cdi.ProcessEngineCdiException: Cannot resume task with id 'a4291177-f7ba-11e4-90b2-62ef20524153', no such task. 
    at org.camunda.bpm.engine.cdi.BusinessProcess.startTask(BusinessProcess.java:294) [camunda-engine-cdi-7.2.0.jar:7.2.0] 
    at org.camunda.bpm.engine.cdi.BusinessProcess.startTask(BusinessProcess.java:313) [camunda-engine-cdi-7.2.0.jar:7.2.0] 
... 

Как я могу справиться с этими исключениями? Я использую встроенный двигатель camunda с формами JSF.

ответ

1

На самом деле это не камунда. Если ваш пользовательский интерфейс разговаривает с системой, которая может выйти из строя или имеет незаконные состояния, вы должны поймать исключение и отобразить что-то полезное для конечного пользователя и/или проверить предварительное условие (задача существует), прежде чем даже разрешить работу пользовательского интерфейса.

В случае с camunda это может быть достигнуто путем постоянного обновления списка задач (перенаправление сервера, автоматического обновления) и проверки существования задачи, прежде чем связывать ее с контекстом cundi camunda.

+0

ОК. Я проверяю, прежде чем начать задание, если оно существует. На самом деле ясно. Какой самый дешевый метод? 'taskService.createTaskQuery(). taskId (taskId) .singleResult()! = null' – jklee

+0

Да, это то, что я использовал. –

+0

Я создаю обертку для 'businessProcess.startTask (taskId, beginConversation)' и проверю перед этим запросом. Спасибо за помощь. – jklee

 Смежные вопросы

  • Нет связанных вопросов^_^