Hide Forgot
Hi, When registering for specific TaskEvents (ie: TaskCompletedEvent) it's possible to instruct the JMSTaskClientConnector *NOT* to terminate immediately after having processed that corresponding event back from the human task server. Regardless, org.jbpm.task.service.jms.JMSTaskClientConnector.Responder.run() *always* terminates after processing a response back from the jbpm5 human task server. What I've encountered is that after having registered a TaskCompletedEvent with the HumanTask server with 'removeEvent' = false, only the first taskCompletedEvent sent by the HumanTask server is processed by JMSTaskClientConnector. After processing this first TaskCompletedEvent, the 'Responder' thread terminates and no subsequent TaskCompletedEvents are ever processed. Instead, those corresponding TaskCompletedEvent (buried in an ObjectMessage) linger around in the task client queue. When instructing the JMSTaskClientConnector not to terminate immediately (ie: such as registering for TaskCompletedEvents, the JMSTaskClientConnector should block on the 'consumer.receive()' call within an infinite loop. please see the following for a refactored implementation of JMSTaskClientConnector that can continually process the various TaskEvents : https://github.com/jbride/jbpm/blob/gbd/jbpm-human-task/src/main/java/org/jbpm/task/service/jms/JMSTaskClientConnector.java thanks, jeff
Fixed in community, should be available in next build.
Please verify the issue on 5.3 ER4.
VERIFIED in source code. ER7.