Please study the documentation ("Expert") and the examples about how to write conditions and their components. See below for some pointers.
Below is my drl and the Pojo that I am using, please guide me on this :
#created on: Aug 5, 2011
package com.sample
import com.sample.Customer
rule "Below 100"
when
$c:Customer()
$c.getSi() < 100
then
$c.setVal("<100");
end
rule "Below 200"
when
$c:Customer()
$c.getSi() < 200
then
$c.setVal("<200");
end
rule "Below 300"
when
$c:Customer()
$c.getSi() < 300
then
$c.setVal("<300");
endPojo :package com.sample;
public class Customer {
private double si;
private String val;
public double getSi() {
return si;
}
public double setSi(double p,double r, double t) {
si = (p*r*t)/100;
return si;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
}The error that I get while executing is :
[9,13]: unknown:9:13 mismatched token: [@33,126:126='<',<79>,9:13]; expecting type THEN[20,13]: unknown:20:13 mismatched token: [@67,224:224='<',<79>,20:13]; expecting type THEN[32,13]: unknown:32:13 mismatched token: [@101,323:323='<',<79>,32:13]; expecting type THEN
java.lang.RuntimeException: Unable to compile "methodCall.drl".
at com.sample.Calling.createRuleBase(Calling.java:48)
at com.sample.Calling.main(Calling.java:24)
and my calling class is :
package com.sample;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.compiler.PackageBuilder;
import org.drools.rule.Package;
public class Calling {
public static void main(String[] args)throws IOException {
Customer c1 = new Customer();
c1.setSi(1000, 5, 2);
try {
RuleBase ruleBase = createRuleBase();
StatefulSession session = ruleBase.newStatefulSession ();
session.insert(c1);
session.fireAllRules();
session.dispose();
System.out.println("Interest is : "+c1.getVal());
}
catch (Throwable t) {
t.printStackTrace();
}
}
private static RuleBase createRuleBase() throws Exception
{
Reader source = new InputStreamReader(Calling.class.getResourceAsStream( "methodCall.drl" ) );
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( source );
if ( builder.hasErrors() ) {
System.out.println( builder.getErrors().toString() );
throw new RuntimeException( "Unable to compile \"methodCall.drl\".");
}
Package pkg = builder.getPackage();
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( pkg );
return ruleBase;
}
}