如何处理 ProcessEngineCdiException "Cannot resume task with id ..."

How to handle ProcessEngineCdiException "Cannot resume task with id ..."

可能会发生用户想要启动一个不再存在的任务。 然后用户触发异常。

   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]
...

我该如何处理这些异常? 我使用带有 JSF 表单的嵌入式 camunda 引擎。

这并不是 camunda 特有的。如果你的 UI 正在与一个可能失败或有非法状态的系统对话,你必须捕获异常并显示对最终用户有用的东西 and/or 在允许 and/or 检查前提条件(任务存在)之前=15=]操作。

对于 camunda,这可以通过使任务列表保持最新(服务器推送、自动更新)并在将其与 camunda cdi 上下文相关联之前检查任务是否存在来实现。