Franco Gasperino [https://community.jboss.org/people/franco.gasperino] created the discussion
"jBPM 5.4, Persistence, and Safe-Points" To view the discussion, visit: https://community.jboss.org/message/825366#825366 -------------------------------------------------------------- Community, Excuse the long-winded post. I'm trying to debug an issue with an integration project with the following components: * jBPM 5.4 final, Drools 5.5 final * Spring 3.2.x * Bitronix 2.1.x The core jBPM engine is heavily integrated with a custom stack allowing process instances to be created and run via all sorts of connectivity. The custom layer will take the process id & input parameters, delegate to a thread in an executor, which will: 1. Instantiate the drools environment (with JTA support). 2. Create the knowledge session. 3. Create a custom WorkItemHandler, associate each custom service task with this handler. 4. Create and associate the event handlers. 5. Create and start the process instance. Everything executes as-expected, the JTA is performing commits and I can see the Hibernate activity inserting, updating, and deleting records from the Derby XA database. However, when testing a process instance which *should* trigger a safe-point, i see unexpected behavior. In this case: * Script "Hello" is a java/groovy/whatever script task. * ServiceTask "MockAsyncTask" is a java class, which is associated / registered with the custom WorkItemHandler. * executeWorkItem() does NOT call completeWorkItem() * Returns control to the jBPM engine, which should trigger a safe-point. * Causes return of startProcessInstance(), which will exit the worker thread in the executor. * Script "Bye" is a java/groovy/whatever script task. The workflow: Start -> Hello -> MockAsyncTask -> Bye -> End As expected, I see the behavior. I see that the ProcessInstance object associated has a state field of "2", which is active. Howevever, the hibernate update statements on the ProcessInstanceInfo table always have a state value of '0'. This is the breaking behavior. When I attempt to call the adapter layer with the session id, process instance id, work item id, and a payload: 1. Instantiate the drools environment (JTA support). 2. Load the existing knowledge session. 3. Create a custom WorkItemHandler, associate each custom service task with this handler. 4. Create and associate event handlers. 5. Call completeWorkItem(). The workItem does complete, and i see it deleted from the WorkItemInfo table. However, since the process instance state has been reloaded with a value of '0', the "Bye" script task is never fired. Any ideas? A full code dump would be huge, but I'm happy to inject some loggers if it would assist troubleshooting. Thanks! Franco -------------------------------------------------------------- Reply to this message by going to Community [https://community.jboss.org/message/825366#825366] Start a new discussion in jBPM at Community [https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
_______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user