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(a)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.drl
package com.company.license
rule "Is of valid age"
when
$a : Applicant( age > 18);
then
$a.setValid( true );
System.out.println("true");
end
//Applicant.java
package com.company.license;
public class Applicant
{
private String name;
private int Age;
private boolean valid;
// getter and setter methods here
public 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.java
package 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 false
ksession.execute( dude );
if (dude.getValid())
System.out.println("Application approved"); //should display due to
hardcoded as of 32
else
System.out.println("Application rejected");
}
}
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users