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
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to