[rules-dev] Throwing runtimeException 4.0.7 not supposed

surya_n2007 surya_n2007 at yahoo.co.in
Fri Jun 12 15:45:36 EDT 2009


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_0Eval1Invoker at 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-tp24005070p24005070.html
Sent from the drools - dev mailing list archive at Nabble.com.




More information about the rules-dev mailing list