1

你好,

在处理创建任务拥有进程的知识会话后,我无法完成任务。我使用的是 jBPM 5.3 版本。请在堆栈跟踪下方找到。

java.lang.IllegalStateException:非法方法调用。此会话先前已处理。

      org.drools.reteoo.DisposedReteooWorkingMemory.
                                     getWorkItemManager(DisposedReteooWorkingMemory.java:386)

      org.drools.impl.StatefulKnowledgeSessionImpl.
                                     getWorkItemManager(StatefulKnowledgeSessionImpl.java:311)

     org.drools.command.runtime.process.CompleteWorkItemCommand.
                                     execute(CompleteWorkItemCommand.java:69)
4

1 回答 1

1

那是因为在你 dispose() 一个 ksession 之后你就不能再使用它了。如果您仍有待处理的任务,您有 2 个选项:

  1. 在所有任务完成之前(或其中不再运行流程实例),请勿释放会话。
  2. 如果您已释放会话,并且正在使用持久会话,则可以在完成任务之前使用 JPAKnowledgeService 类从数据库中重新加载它。

当任务在 jBPM5 中完成时,创建任务的会话必须处于活动状态(必须在内存中)并且可用(未释放)。

此致,

于 2012-10-30T08:42:16.083 回答