Hello,<br><br>i've already mailed last week with the same problem and with your help I was able to locate the source of the following NullPointerException which happens if we try to insert the Fact "knocking" (@see Source Code of the Java Class here: <a href="http://www.pastie.org/private/juv7hh7rxahpluo5agu3q">http://www.pastie.org/private/juv7hh7rxahpluo5agu3q</a>) :<br>
<br><div style="margin-left: 40px;"><b>java.lang.NullPointerException<br> at org.drools.reteoo.LeftTuple.get(LeftTuple.java:265)<br> at org.drools.reteoo.LeftTuple.get(LeftTuple.java:300)<br> at org.drools.rule.VariableRestriction$ObjectVariableContextEntry.updateFromTuple(VariableRestriction.java:320)<br>
at org.drools.common.SingleBetaConstraints.updateFromTuple(SingleBetaConstraints.java:119)<br> at org.drools.reteoo.NotNode.assertLeftTuple(NotNode.java:98)<br> at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:117)<br>
at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:34)<br> at org.drools.reteoo.NotNode.assertLeftTuple(NotNode.java:123)<br> at org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:145)<br>
at org.drools.reteoo.CompositeLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:57)<br> at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:142)<br>
at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)<br> at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:147)<br> at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:360)<br>
at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:344)<br> at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:185)<br> at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:146)<br>
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1046)<br> at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1001)<br> at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:788)<br>
at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:216)<br> at de.d3web.we.drools.DroolsAction.addFacts(DroolsAction.java:334)<br></b></div><br>The source of the problem is the following rule:<br>
<br><div style="margin-left: 40px;"><b>rule "R50"<br> when<br> $value1 : Value(value == "knocking")<br> not Input(name == "Engine noises" && values contains $value1)<br> or<br>
$value2 : Value(value == "ringing")<br> not Input(name == "Engine noises" && values contains $value2)<br> $solution : SolutionInput(name == "Bad ignition timing")<br> then<br>
$solution.setValue(N3);<br>end<br></b></div><br>Could you please tell me how I have to formulate the rule to avoid the NullPointerException while inserting the fact?<br><br>Thank you in advance for your help.<br><br>Best regards<br>
<br>Sebastian Furth<br>