2013-03-10 34 views
0

我已經在前面的question中將「信號中間事件」添加到人類任務中作爲邊界事件。JBPM - 捕捉中間信號有時會失敗

有時信號處理成功,有時有時它是不是。 JBPM運行時只更新process-instance-info,不處理信號。

我使用StatefulKnowledgeSession.signalEvent(),它只是更新ProcessInstanceInfo在後端和事件不會取消正在進行

當前的活動可能是什麼問題呢?與此「信號中間事件」相關的任何錯誤? 。

LOG:

08:34:38955 INFO [標準輸出](HTTP - 0.0.0.0-8280-20)2013年3月13日08:34:38954 [HTTP - 0.0.0.0 -8280-20] DEBUG web.mvc.controller.SignalController - 接收到一個新的PROCESS信號..putProcessOnHOLD 08:34:38,966 INFO [stdout](http - 0.0.0.0-8280-20)2013-03-13 08 :34:38,966 [http - 0.0.0.0-8280-20] DEBUG org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager - 當前TX名稱(根據TransactionSynchronizationManager):core.service.impl.event.ExternalEventManagerImpl。 dispatchSignal 08:34:38,978 INFO [stdout](http - 0.0.0.0-8280-20)2013-03-13 08:34:38,978 [http - 0.0.0.0-8280-20] DEBUG org.drools。續ainer.spring.beans.persistence.DroolsSpringTransactionManager - 當前TX:o[email protected]3dda5edd 08:34:38,987 INFO [stdout](http - 0.0.0.0-8280-20)Hibernate:select processins0_ .InstanceId如InstanceId1_0_,processins0_.id如id1_0_,processins0_.lastModificationDate如lastModi3_1_0_,processins0_.lastReadDate如lastRead4_1_0_,processins0_.processId如processId1_0_,processins0_.processInstanceByteArray如processI6_1_0_,processins0_.startDate如startDate1_0_,processins0_.state如state1_0_,processins0_.OPTLOCK作爲OPTLOCK1_0_來自ProcessInstanceInfo processins0_ where processins0_.InstanceId =? 08:34:39,014 INFO [stdout](http - 0.0.0.0-8280-20)Hibernate:update ProcessInstanceInfo set id =?,lastModificationDate = ?, lastReadDate = ?, processId =?,processInstanceByteArray =?,startDate =? ,狀態=?,OPTLOCK =? InstanceId =?和OPTLOCK =?

環境:JBPM 5.4.0.Final時,JBoss 7.1.0.Final

回答

0

當你說的引擎更新ProcessInstanceInfo,我想你指的是最後讀取的日期只(如果流程實例沒有像預期的那樣前進)?還是其他領域呢?

引擎應該以相同的方式處理每個請求。所以我認爲流程實例本身可能並不總是處於相同的狀態?如果信號例如在人工任務處於活動狀態之前或之後到達,則不會對流程實例本身造成任何更改。

+0

人工任務處於相同狀態(「保留」/「進行中」)。讓我檢查是否因爲線程爲@salaboy暗示 – 2013-03-12 09:59:14

+0

我已更新日誌 – 2013-03-13 05:03:58

+0

問題仍然存在。我部署了應用程序在一個乾淨的環境中。信號使知識會話更新過程實例,但沒有別的 – 2013-03-26 12:03:11