JBPM-捕获中间信号有时失败 [英] JBPM - Catch Intermediate Signal fails sometime

查看:88
本文介绍了JBPM-捕获中间信号有时失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已将信号中间事件作为边界事件添加到人工任务中,就像我在先前

I have added "Signal Intermediate Event" to a human-task as a boundary-event as I have given in previous question.

有时信号处理成功,有时 >。
JBPM运行时仅更新process-instance-info而不处理信号。

Sometimes the signal is processed successfully and sometimes it is NOT. JBPM runtime just updates the process-instance-info and doesn't process the signal.

我正在使用 StatefulKnowledgeSession.signalEvent(),它只是在后端更新ProcessInstanceInfo,而该事件不会取消正在进行的活动

I am using StatefulKnowledgeSession.signalEvent() , it is just updating the ProcessInstanceInfo at the backend and the event doesn't cancel the current activity in progress

可能是什么问题?与此信号中间事件有关的任何错误吗? 。

What could be the problem ? Any bug related to this 'Signal Intermediate Event'? .

日志:

08:34:38,955 INFO [stdout]( http--0.0.0.0-8280-20)2013-03-13 08:34:38,954 [http--0.0.0.0-8280-20] DEBUG web.mvc.controller.SignalController-收到了一个新的PROCESS信号..putProcessOnHOLD
08:34:38,966信息[stdout](http--0.0.0.0-8280-20)2013-03-13 08:34:38,966 [http--0.0.0.0-8280-20]调试组织。 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]调试org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager-当前TX:org.springframework .transaction.support.DefaultTransactionStatus @ 3dda5edd
08:34:38,987信息[stdout](http--0.0.0.0-8280-20)休眠:选择processins0_.InstanceId作为InstanceId1_0_,processins0_.id作为id1_0_,继续ssins0_.lastModificationDate作为lastModi3_1_0_,processins0_.lastReadDate作为lastRead4_1_0_,processins0_.processId作为processId1_0_,processins0_.processInstanceByteArray作为processI6_1_0_,processins0_.startDate作为startDate1_0_,processins0_LOCK_T_LOCK作为状态1_0_。
08:34:39,014 INFO [stdout](http--0.0.0.0-8280-20)休眠:更新ProcessInstanceInfo set id = ?、 lastModificationDate = ?、 lastReadDate = ?、 processId = ?、 processInstanceByteArray = ?、 startDate = ?, state = ?, OPTLOCK =?哪里InstanceId =?和OPTLOCK =?

08:34:38,955 INFO [stdout] (http--0.0.0.0-8280-20) 2013-03-13 08:34:38,954 [http--0.0.0.0-8280-20] DEBUG web.mvc.controller.SignalController - A new PROCESS signal recieved ..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 - Current TX name (According to 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.container.spring.beans.persistence.DroolsSpringTransactionManager - Current TX: org.springframework.transaction.support.DefaultTransactionStatus@3dda5edd 08:34:38,987 INFO [stdout] (http--0.0.0.0-8280-20) Hibernate: select processins0_.InstanceId as InstanceId1_0_, processins0_.id as id1_0_, processins0_.lastModificationDate as lastModi3_1_0_, processins0_.lastReadDate as lastRead4_1_0_, processins0_.processId as processId1_0_, processins0_.processInstanceByteArray as processI6_1_0_, processins0_.startDate as startDate1_0_, processins0_.state as state1_0_, processins0_.OPTLOCK as OPTLOCK1_0_ from 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=?, state=?, OPTLOCK=? where InstanceId=? and OPTLOCK=?

环境:JBPM 5.4.0.Final,Jboss 7.1.0.Final

Environment : JBPM 5.4.0.Final, Jboss 7.1.0.Final

推荐答案

当您说引擎更新ProcessInstanceInfo时,我假设您仅指的是上次读取日期(以防流程实例未按预期进行)?还是其他字段?

When you say that the engine updates the ProcessInstanceInfo, I assume you are referring to the last read date only (in case the process instance is not moving forward as expected)? Or other fields as well?

引擎应该以相同的方式处理每个请求。因此,我假设流程实例本身可能并不总是处于相同状态?例如,如果信号在人工任务处于活动状态之前或之后到达,则不会导致流程实例本身发生任何更改。

The engine should process each request the same way. So I assume that the process instance itself might not always be in the same state? If the signal for example arrives before or after the human task is active, it will not cause any changes to the process instance itself.

这篇关于JBPM-捕获中间信号有时失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆