Saturday, 15 August 2015

java - NullPointerException in Drools API -



java - NullPointerException in Drools API -

i getting null pointer exception while running java program. addpackagefromdrl not working , hence, pkg returned builder.getpackage() null.

i using drools 6

private static rulebase readrules() throws droolsparserexception, ioexception { reader source = new inputstreamreader( messagedroolstest1.class.getclassloader().getresourceasstream( "rule.drl" ) ); system.out.println("source:" + source); packagebuilder builder = new packagebuilder(); builder.addpackagefromdrl( source ); system.out.println("builder:" + builder); bundle pkg = builder.getpackage(); system.out.println("package:" + pkg); rulebase rulebase = rulebasefactory.newrulebase(); rulebase.addpackage( pkg ); homecoming rulebase; }

i tried alternate approach , still getting runtime exception.

private static knowledgebase createknowledgebase() { knowledgebuilder builder = knowledgebuilderfactory.newknowledgebuilder(); //add drl file builder file drl = new file("rules.drl"); builder.add(resourcefactory.newfileresource(drl), resourcetype.drl); if (builder.haserrors()) { throw new runtimeexception(builder.geterrors().tostring()); } knowledgebase knowledgebase = knowledgebasefactory.newknowledgebase(); //add knowledge base of operations packages builder rules drl file. knowledgebase.addknowledgepackages(builder.getknowledgepackages()); homecoming knowledgebase; }

error

exception in thread "main" org.drools.runtimedroolsexception: unable load dialect 'org.drools.rule.builder.dialect.java.javadialectconfiguration: java:org.drools.rule.builder.dialect.java.javadialectconfiguration'

this works me, @ to the lowest degree with right drl file.

i suggest add

system.out.println("builder:" + builder); if( builder.haserrors() ){ system.out.println("builder has errors!"); }

if shows there errors, utilize other methods retrieve messages.

drools 6 introduces whole set of new classes (knowledge*) , should utilize that. using internal api (or used in drools 5) not recommended , code may break release change.

** later **

a simple build procedure 6.x:

public void build() throws exception { kieservices kieservices = kieservices.factory.get(); kiefilesystem kfs = kieservices.newkiefilesystem(); fileinputstream fis = new fileinputstream( "simple.drl" ); kfs.write( "src/main/resources/simple.drl", kieservices.getresources().newinputstreamresource( fis ) ); kiebuilder kiebuilder = kieservices.newkiebuilder( kfs ).buildall(); results results = kiebuilder.getresults(); if( results.hasmessages( message.level.error ) ){ system.out.println( results.getmessages() ); throw new illegalstateexception( "### errors ###" ); } kiecontainer kiecontainer = kieservices.newkiecontainer( kieservices.getrepository().getdefaultreleaseid() ); kiebase kiebase = kiecontainer.getkiebase(); kiesession = kiecontainer.newkiesession(); }

java nullpointerexception drools

No comments:

Post a Comment