[rules-users] Some basic queries

Wolfgang Laun wolfgang.laun at gmail.com
Fri Aug 5 08:16:15 EDT 2011


Please study the documentation ("Expert") and the examples about how to
write conditions and their components. See below for some pointers.


2011/8/5 Gaurav Silakari <gaurav.silakari at tcs.com>

>
> 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
>

$c: Customer( si < 100 )
This is the proper way of making a constraint on a fact attribute. "getSi"
and "si" relate according to JavaBeans.


>
> then
> $c.setVal("<100");
>
> end
>
> rule "Below 200"
>
> when
> $c:Customer()
> $c.getSi() < 200
>
# Same as above.
You realize that <100 also means <200; if so, both rules will fire and "val"
could be set either way.


>
> then
> $c.setVal("<200");
>
> end
>
>
> rule "Below 300"
>
> when
> $c:Customer()
> $c.getSi() < 300
>

# see comment on rule "Below 200"

-W



> then
> $c.setVal("<300");
>
> end
>
>
>
>
> *Pojo :*
>
> 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;
>
> }
>
> }
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110805/4988e4b1/attachment.html 


More information about the rules-users mailing list