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");
}