Darrin,
You have it except for 1 important line of code
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
Need to add the built packages to the rule base :)2009/4/24 Darrin Mison <dmison@redhat.com>Hi, I'm very new to Drools and I'm trying to get code running based on the first sample code from the QuickStart chapter of the drools-doc-expert.It compiles and runs (tried on commandline & in JBoss Dev Studio 2.0.0.GA) but does not work, ie it always says "rejected" instead of "accepted".I've had to fill out a bit of code to get it to compile so I may be doing something completely wrong. I've included the code (rule, model, main) below.Any help would be really appreciated.Darrin#Sample.drlpackage com.company.licenserule "Is of valid age"when$a : Applicant( age > 18);then$a.setValid( true );System.out.println("true");end//Applicant.javapackage com.company.license;public class Applicant{private String name;private int Age;private boolean valid;// getter and setter methods herepublic String getName() { return name; }public int getAge() { return Age; }public boolean getValid(){ return valid; }public void setName(String s){ this.name = s; }public void setAge(int i){ this.Age = i; }public void setValid(boolean v){ this.valid = v; }
}//ruletest.javapackage com.company.license;import org.drools.builder.*;import org.drools.io.*;import org.drools.runtime.*;import org.drools.*;public class ruletest{public ruletest(){}public static void main(String args[]){ruletest rt = new ruletest();rt.go();}public void go(){Applicant dude = new Applicant();dude.setName("Rufus");dude.setAge(32);System.out.println(dude.getName());System.out.println("test: "+dude.getValid());KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();Resource ruleResource = ResourceFactory.newClassPathResource( "Sample.drl", getClass() );kbuilder.add( ruleResource, ResourceType.DRL );if ( kbuilder.hasErrors() )System.err.println( kbuilder.getErrors().toString() );KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();System.out.println( dude.getValid() ); //should display falseksession.execute( dude );if (dude.getValid())System.out.println("Application approved"); //should display due to hardcoded as of 32elseSystem.out.println("Application rejected");}}
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users