[rules-users] org.drools.RuntimeDroolsException when inserting into Knowledge Session

Abarna Ramachandran rabarna at archstone.in
Sat Aug 1 02:26:28 EDT 2009


I am getting the following error when trying to insert my object into
ksession. I have attached my rules and java object. Please help me in
debugging why this is happening. I am using java 5 and drools 5.0

thanks

*error while inserting:*

org.drools.RuntimeDroolsException:
defaultpkg.Rule_CheckStationNumber_0Eval0Invoker at e4aea391 :
java.lang.NullPointerException

*rules.drl*
import java.lang.*;
import java.util.*;
import ct.fw.rules.*;
import ct.fw.utils.*;
import ct.fw.rules.*;
import ct.fw.logging.*;
import ct.fw.pf.dbi.*;
import ct.fw.pf.dao.*;
import ct.fw.pf.seq.*;
import ct.fw.pf.util.*;
import ct.fw.pf.vo.*;
import ct.fw.ex.*;
import org.apache.commons.lang.*;
import com.aa.gccp.domain.*;

   global ct.fw.rules.AssertionObject ao
   global ct.fw.logging.SmartLogger log

    function BillingRecord getRecord(AssertionObject ao)
        {
            return (BillingRecord) ao.get(0);
        }
    function void debug(String msg,SmartLogger log)
        {
            log.debug(BusinessRulesValidator.class, msg);
        }
    function void error(String msg,SmartLogger log)
        {
            log.error(BusinessRulesValidator.class, msg);
            System.out.println("Message from rules "+msg);
        }

rule CheckTrue
when
   eval(true)
then
    System.out.println("evaluating true");
end

rule CheckTrue2
when
   eval(true)
then
    error("evaluating from rules2",log);
end

rule CheckStationNumber
when
   eval(((getRecord(ao)).getStationNo()) == null)
then
    error("station number should not be null",log);
end

*part where i load the rules and insert the facts. There is no error when
loading the rules.drl. That means no parsing errors. The error happens at
ksessio.insert(assertionObject).*

public void assertRulesObject(AssertionObject assertionObject) throws
BusinessRuleException
    {
        long current = System.currentTimeMillis();
        KnowledgeBase kbase = knowledgeBasesMap.get(rulesFileName);

        if (kbase == null)
        {
            kbase = knowledgeBasesMap.get(rulesFileName + DRL);
        }

        if ((kbase == null) || ((current - lastRefreshedMilliseconds) >
refreshTimeMilliseconds))
        {
            if (rulesFileName.toLowerCase().indexOf(DRL) == -1)
            {
                kbase = load(rulesFileName + DRL);
            }
            else
            {
                kbase = load(rulesFileName);
            }

            lastRefreshedMilliseconds = System.currentTimeMillis();
        }
        this.assertionObject = assertionObject;

        List assertionobjectslist = new ArrayList();
*// i am just doing this part just to make sure assertion object is not null
and i will get some answer. this part runs fine.  *
  if (assertionObject != null)
        {
            assertionobjectslist = assertionObject.getValidationObjects();
            String StationNumber = ((BillingRecord)
assertionObject.get(0)).getStationNo();
            System.out.println("Station Number in assertion object is " +
StationNumber);
        }
        else
        {
            System.out.println("Assertion Object is null");
        }
        System.out.println("The number of objects in assertionobject is " +
assertionobjectslist.size());

        try
        {
            StatefulKnowledgeSession ksession =
kbase.newStatefulKnowledgeSession();
*//the next line throws the exception*
            ksession.insert(assertionObject);

            ksession.fireAllRules();
            ksession.dispose();

        }
        catch (RuntimeDroolsException e1)
        {
            throw new BusinessRuleException(e1.getMessage());
        }

        businessRulesErrors = assertionObject.getBusinessRulesErrors();

        if (throwException)
        {
            if (!assertionObject.getBusinessRulesErrors().isEmpty())
            {
                throw new BusinessRuleException(businessRulesErrors);
            }
        }
    }


Any help is appreciated. thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090801/5ba25c59/attachment.html 


More information about the rules-users mailing list