Throwing runtime exception in this example inserted person object as person name is null. Ideally need to add error "P01" and in second rule checks for precondition "P01" exist and skip rule. But i am getting the below error. Please let me know this is bug, i dont want to check again "Second Rule" name object is not null. I think this is happening since drools frist try to run all rules before start execution.
please let me know whether anything wrong on my end. Rule Engine COde : Person person = test.new Person(); // Name name = person.new Name(); // person.setName(name); workingMemory.insert(person); rule "First Rule" salience 100 lock-on-active true when person : Person() eval(person.name == null) then person.errors.add("P01"); System.out.println("Rule 1 invoked"+person.errors); update(person); end rule "Second Rule" salience 99 lock-on-active true when person : Person() eval(!person.errors.contains("P01")) eval(person.name.firstName=="Bob") then person.name.suffix="Mr"; System.out.println("Rule 2 invoked"); end org.drools.RuntimeDroolsException: com.sample.rule_second_rule_0eval1invo...@4b42aa1e : java.lang.NullPointerException at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:82) at org.drools.reteoo.EvalConditionNode.assertTuple(EvalConditionNode.java:148) at org.drools.reteoo.SingleTupleSinkAdapter.propagateAssertTuple(SingleTupleSinkAdapter.java:29) at org.drools.reteoo.EvalConditionNode.assertTuple(EvalConditionNode.java:157) at org.drools.reteoo.CompositeTupleSinkAdapter.createAndPropagateAssertTuple(CompositeTupleSinkAdapter.java:73) at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:116) at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:162) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:911) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:883) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:684) at com.sample.DroolsTest.main(DroolsTest.java:36) Caused by: java.lang.NullPointerException at com.sample.Rule_Second_Rule_0.eval1(Rule_Second_Rule_0.java:14) at com.sample.Rule_Second_Rule_0Eval1Invoker.evaluate(Rule_Second_Rule_0Eval1Invoker.java:20) at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:77) ... 14 more -- View this message in context: http://www.nabble.com/Throwing-runtimeException-4.0.7-not-supposed-tp24000738p24000738.html Sent from the drools - user mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users