Hello all!<div><br></div><div>I am new in Drools but day by day, test by test, I think I get a bit more knowledge of how the rule engine works from user point of view. I&#39;ve been adding rules to an alarm system, increasing the complexity and functionality in several steps. Unfortunately in the last step I found the following NullPointerException inside the rule engine...</div>
<div><br></div><div><div>java.lang.NullPointerException</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.AccumulateNode.getFirstMatch(AccumulateNode.java:967)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.AccumulateNode.modifyLeftTuple(AccumulateNode.java:329)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:239)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:640)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:270)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.BetaNode.modifyObject(BetaNode.java:312)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:460)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:428)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.AlphaNode.modifyObject(AlphaNode.java:160)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:460)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:428)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:263)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:172)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1442)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1349)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:183)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:196)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at es.simcasva.alarmas.rules.Rule_Test_Negativo_Alarma_Acceso_Portal_Ubicacion_UM_0.defaultConsequence(Rule_Test_Negativo_Alarma_Acceso_Portal_Ubicacion_UM_0.java:18)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at es.simcasva.alarmas.rules.Rule_Test_Negativo_Alarma_Acceso_Portal_Ubicacion_UM_0DefaultConsequenceInvoker.evaluate(Rule_Test_Negativo_Alarma_Acceso_Portal_Ubicacion_UM_0DefaultConsequenceInvoker.java:44)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:917)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:856)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1071)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:785)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:751)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218)</div>
</div><div><br></div><div>I&#39;ve been trying to find the problem, and found a strange interaction between three rules that makes the null pointer to appear. The alarm system has many rules now and it is difficult to simplify the scenario, so I just would like to know what is the funcion of AccumulateNode object in order to have an idea of the NullPointerException possible cause.</div>
<div><br></div><div>Can anyone help me?</div><div><br></div><div>Thank you in advance for your time.</div><div><br></div><div>Regards,</div><div><br></div><div>Manuel Ortiz.</div><div><br></div>