Please study the documentation ("Expert") and the examples about how to write conditions and their components. See below for some pointers.<br><br><br><div class="gmail_quote">2011/8/5 Gaurav Silakari <span dir="ltr"><<a href="mailto:gaurav.silakari@tcs.com">gaurav.silakari@tcs.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size="2"><br><div>Below is my drl and the Pojo that I am using, please guide me on this :</div>
<div> <table width="500"><tbody><tr><td>#created on: Aug 5, 2011<br>package com.sample<br>import com.sample.Customer<br><br>rule "Below 100"<br><br>when<br>$c:Customer()<br>$c.getSi() < 100<br></td></tr></tbody></table>
</div></font></blockquote><div><br>$c: Customer( si < 100 ) <br>This is the proper way of making a constraint on a fact attribute. "getSi" and "si" relate according to JavaBeans.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<font face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size="2"><div><table width="500"><tbody><tr><td><br>then <br>$c.setVal("<100");<br><br>end<br><br>rule "Below 200"<br><br>when<br>$c:Customer()<br>
$c.getSi() < 200<br></td></tr></tbody></table></div></font></blockquote><div># Same as above.<br>You realize that <100 also means <200; if so, both rules will fire and "val" could be set either way.<br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size="2"><div>
<table width="500"><tbody><tr><td><br>then <br>$c.setVal("<200");<br><br>end<br><br><br>rule "Below 300"<br><br>when<br>$c:Customer()<br>$c.getSi() < 300<br></td></tr></tbody></table></div></font></blockquote>
<div><br># see comment on rule "Below 200" <br><br>-W<br><br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size="2"><div>
<table width="500"><tbody><tr><td><br>then <br>$c.setVal("<300");<br><br>end</td></tr></tbody><tbody></tbody></table></div><div> <table width="500"><tbody></tbody></table></div><div> </div><div> </div><div> </div>
<div><b>Pojo :</b></div><div> </div><div>package com.sample;<br><br>public class Customer {<br><br>private double si;<br>private String val;<br><br>public double getSi() {<br>return si;<br>}<br>public double setSi(double p,double r, double t) {<br>
si = (p*r*t)/100;<br>return si;<br>}<br>public String getVal() {<br>return val;<br>}<br>public void setVal(String val) {<br>this.val = val;<br>}<br><br>}</div><div> </div><div>The error that I get while executing is : </div>
<div> </div><div> <table width="500"><tbody><tr><td><p>[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<br>
java.lang.RuntimeException: Unable to compile "methodCall.drl".<br>at com.sample.Calling.createRuleBase(Calling.java:48)<br>at com.sample.Calling.main(Calling.java:24)</p><p> </p><p>and my calling class is : </p>
<p> </p></td></tr></tbody></table><table width="500"><tbody><tr><td>package com.sample;<br><br>import java.io.IOException;<br>import java.io.InputStreamReader;<br>import java.io.Reader;<br><br>import org.drools.RuleBase;<br>
import org.drools.RuleBaseFactory;<br>import org.drools.StatefulSession;<br>import org.drools.compiler.PackageBuilder;<br>import org.drools.rule.Package;<br><br>public class Calling {<br><br><br>public static void main(String[] args)throws IOException {<br>
<br><br>Customer c1 = new Customer();<br>c1.setSi(1000, 5, 2);<br><br>try { <br><br>RuleBase ruleBase = createRuleBase();<br>StatefulSession session = ruleBase.newStatefulSession ();<br><br>session.insert(c1);<br>session.fireAllRules();<br>
session.dispose();<br><br>System.out.println("Interest is : "+c1.getVal());<br><br>}<br>catch (Throwable t) {<br>t.printStackTrace();<br>}<br>}<br><br>private static RuleBase createRuleBase() throws Exception<br>
{<br>Reader source = new InputStreamReader(Calling.class.getResourceAsStream( "methodCall.drl" ) );<br><br>PackageBuilder builder = new PackageBuilder();<br>builder.addPackageFromDrl( source );<br><br>if ( builder.hasErrors() ) {<br>
System.out.println( builder.getErrors().toString() );<br>throw new RuntimeException( "Unable to compile \"methodCall.drl\".");<br>}<br><br>Package pkg = builder.getPackage();<br>RuleBase ruleBase = RuleBaseFactory.newRuleBase();<br>
ruleBase.addPackage( pkg );<br><br>return ruleBase;<br><br>}<br><br>}</td></tr></tbody><tbody></tbody></table><table width="500"><tbody><tr><td><p> </p></td></tr></tbody><tbody></tbody></table></div></font></blockquote></div>