As far as I can see, JPAWorkItemManager isn't used. When loadStatefulKnowledgeSession is called in class JPAKnowledgeServiceProviderImpl, a new instance of CommandBasedStatefulKnowledgeSession is returned. If you look at the getWorkItemManager method of this class, it returns an instance of an anonymous local class - it doesn't appear to be reading the property to determine which work item manager factory to use.

Thanks for looking at this,


Kris Verlaenen <>

26/08/2009 10:40

Rules Users List <>,
Re: [rules-users] When is JPAWorkItemManager used in Drools Flow?


The JPAWorkItemManager should be used instead (automatically) as it is
defined in the session configuration properties (earlier in the same
props.setProperty( "drools.workItemManagerFactory",
"org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );

Are you encountering problems where the JPAWorkItemManager is not being



> I've been doing some testing recently with the 5.1 snapshot of Drools
> (build 3280). The JPA state persistence in Drools Flow appears to be
> much
> more solid (no more NullPointerExceptions) - many thanks for this.
> One question I still have though is with the loading of existing
> sessions
> from the database; the loadStatefulKnowledgeSession method of class
> JPAKnowledgeServiceProviderImpl ultimately creates an instance of
> CommandBasedStatefulKnowledgeSession to encapsulate the session
> state.
> However, this class uses an anonymous local class for its work item
> manager. I would have expected JPAWorkItemManager to have been used
> instead, so that all the existing work items are also read back into
> memory from the database. Or am I missing something? As it is, I have
> to
> explicitly use an EntityManager to do this.
> Thanks,
> Alan