0
votes

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

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.

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'? .

LOG:

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=?

Environment : JBPM 5.4.0.Final, Jboss 7.1.0.Final

1

1 Answers

0
votes

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.