[rules-users] [droolsflow] - JPAKnowledgeService - Another Event based NullPointerException
Bill Tarr
javatestcase at yahoo.com
Fri Oct 23 20:52:59 EDT 2009
After re-loading a session, and trying to send it an Event, I get the following NullPointerException:
java.lang.NullPointerException
at org.drools.impl.StatefulKnowledgeSessionImpl$ProcessEventListenerWrapper.beforeRuleFlowNodeTriggered(StatefulKnowledgeSessionImpl.java:674)
at org.drools.event.RuleFlowEventSupport.fireBeforeRuleFlowNodeTriggered(RuleFlowEventSupport.java:147)
at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:110)
at org.drools.workflow.instance.node.EventNodeInstance.signalEvent(EventNodeInstance.java:50)
at org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:272)
at com.csatp.svc.rulesmgr.claim.ClaimsDemoJpaTest.validateDocumentWorkflow2(ClaimsDemoJpaTest.java:209)
My code is pretty straightforward:
StatefulKnowledgeSession session = JPAKnowledgeService.loadStatefulKnowledgeSession( 1, knowledgeBase, null, env );
ProcessInstance process = session.getProcessInstance(2);
process.signalEvent("ReceiveDocsEvent", null);
that same code (and Flow) works on a session created from knowledgeBase.newStatefulKnowledgeSession();
This is difficult for me to debug, but here's what I have:
In org.drools.event.RuleFlowEventSupport.fireBeforeRuleFlowNodeTriggered(), the code is getting listeners:
final Iterator<RuleFlowEventListener> iter = getEventListenersIterator();
then iterating over them. In the session created from a regular knowledgeBase, "iter" has the following values
iter = {java.util.concurrent.CopyOnWriteArrayList$COWIterator @ 3411}
snapshot = {java.lang.Object[2] @ 3416}
[0] = {org.drools.audit.WorkingMemoryFileLogger @ 3417}
events = {java.util.ArrayList @ 3419} size = 77
fileName = {java.lang.String @ 3420}"log/claimsdemo"
maxEventsInMemory = 1000
nbOfFile = 0
split = true
initialized = false
filters = {java.util.ArrayList @ 3421} size = 0
[1] = {org.drools.impl.StatefulKnowledgeSessionImpl$ProcessEventListenerWrapper @ 3418}
listener = {com.csatp.svc.rulesmgr.claim.TrackingProcessEventListener @ 3396}
While the session created using JPAKnowledgeService has the following values for "iter"
iter = {java.util.concurrent.CopyOnWriteArrayList$COWIterator @ 3803}
snapshot = {java.lang.Object[1] @ 3805}
[0] = {org.drools.impl.StatefulKnowledgeSessionImpl$ProcessEventListenerWrapper @ 3806}
listener = null
I can see that the EventListeners should be setup in AbstractEventSupport and it's implementing classes,
and they are clearly missing, but I'm not sure where this is going wrong.
I'll gladly fix this, but just don't know where to start, if you have any ideas that can help, I'd greatly appreciate it!
Bill
More information about the rules-users
mailing list