Wolfgang -<div>Thank you!!<br><br><div class="gmail_quote">On Wed, Nov 10, 2010 at 11:07 AM, Wolfgang Laun <span dir="ltr"><<a href="mailto:wolfgang.laun@gmail.com">wolfgang.laun@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
If you move the<br>
template contract_rate<br>
up in front of the first rule "holiday july 4th" the NPE is gone. I<br>
haven't been able to validate the (presumably) generated rule set, but<br>
you should be able to do that now.<br>
<br>
Nevertheless, this warrants a JIRA, which I'll create forthwith. Also,<br>
the docs should indicate what is permitted up front, preceding the<br>
"template" statement.<br>
<br>
-W<br>
<br>
<br>
2010/11/10 Roger Smith <<a href="mailto:rogersmith1711@gmail.com">rogersmith1711@gmail.com</a>>:<br>
<div><div></div><div class="h5">> Wolfgang,<br>
><br>
> I have enclosed the template. For debugging purpose, I have removed all but<br>
> one rule.<br>
><br>
> Thanks,<br>
><br>
> Roger<br>
><br>
> - O -<br>
><br>
> template header<br>
> summerOnPeakPrimaryRate<br>
> summerOnPeakSecondaryRate<br>
> summerSemiPeakPrimaryRate<br>
> summerSemiPeakSecondaryRate<br>
> summerOffPeakPrimaryRate<br>
> summerOffPeakSecondaryRate<br>
> winterOnPeakPrimaryRate<br>
> winterOnPeakSecondaryRate<br>
> winterSemiPeakPrimaryRate<br>
> winterSemiPeakSecondaryRate<br>
> winterOffPeakPrimaryRate<br>
> winterOffPeakSecondaryRate<br>
><br>
> package tradex.contract.sde<br>
><br>
> import tradex.process.ruler.server.ContractRule<br>
><br>
> rule "holiday july 4th"<br>
> when<br>
> $r : ContractRule( year == 2010 && month == 7 && day == 4 && holiday ==<br>
> false)<br>
> then<br>
> modify($r){<br>
> setHoliday(true)<br>
> }<br>
> end<br>
><br>
> rule "holiday xmas"<br>
> when<br>
> $r : ContractRule( year == 2010 && month == 12 && day == 25 && holiday ==<br>
> false)<br>
> then<br>
> modify($r){<br>
> setHoliday(true)<br>
> }<br>
> end<br>
><br>
> rule "Season summer"<br>
> when<br>
> $r : ContractRule( dayOfYear >= 121 && dayOfYear <= 273 && season ==<br>
> "undefined")<br>
> then<br>
> modify($r){<br>
> setSeason("summer")<br>
> }<br>
> end<br>
><br>
> rule "Season winter"<br>
> when<br>
> $r : ContractRule( (dayOfYear >= 274 || dayOfYear <= 120) && season ==<br>
> "undefined")<br>
> then<br>
> modify($r){<br>
> setSeason("winter")<br>
> }<br>
> end<br>
><br>
><br>
> rule "On peak hour"<br>
> when<br>
> $r : ContractRule( holiday == false && dayOfWeek >= 1 && dayOfWeek <= 6<br>
> && hourOfDay >= 1400 && hourOfDay <= 2000 &&<br>
> hourType == "undefined")<br>
> then<br>
> modify($r){<br>
> setHourType("onPeak")<br>
> }<br>
><br>
> end<br>
><br>
> rule "Semi peak hour"<br>
> when<br>
> $r : ContractRule( holiday == false && dayOfWeek >= 1 && dayOfWeek <= 6<br>
> && (hourOfDay >= 600 && hourOfDay < 1400 ||<br>
> hourOfDay > 2000 && hourOfDay <= 2200) && hourType == "undefined")<br>
> then<br>
> modify($r){<br>
> setHourType("semiPeak")<br>
> }<br>
> end<br>
><br>
> rule "Off peak hour"<br>
> when<br>
> $r : ContractRule( (holiday == true || dayOfWeek == 7 || hourOfDay < 600<br>
> || hourOfDay > 2200) && hourType == "undefined" )<br>
> then<br>
> modify($r){<br>
> setHourType("offPeak")<br>
> }<br>
> end<br>
><br>
> template contract_rate<br>
> rule "Summer on peak primary rate"<br>
> when<br>
> $r : ContractRule( season == "summer" && hourType == "onPeak" && type ==<br>
> "primary")<br>
> then<br>
> $r.setRate(@{summerOnPeakPrimaryRate});<br>
> end<br>
> end template<br>
><br>
><br>
><br>
><br>
> 2010/11/9 Wolfgang Laun <<a href="mailto:wolfgang.laun@gmail.com">wolfgang.laun@gmail.com</a>><br>
>><br>
>> Seeing the template .drl would help to resolve this. Are all @{parameter}s<br>
>> declared in the template header?<br>
>> -W<br>
>><br>
>> 2010/11/9 Roger Smith <<a href="mailto:rogersmith1711@gmail.com">rogersmith1711@gmail.com</a>><br>
>>><br>
>>><br>
>>> All -<br>
>>><br>
>>> I tried out Drools rule template with a with a proptotype app. Drools is<br>
>>> throwing NullPointerException as below. I would much appreciate if someone<br>
>>> on this list can help.<br>
>>> java.lang.NullPointerException<br>
>>> at<br>
>>> org.drools.template.parser.DefaultTemplateColumn.createCellCondition(DefaultTemplateColumn.java:68)<br>
>>> at<br>
>>> org.drools.template.parser.DefaultTemplateColumn.addCondition(DefaultTemplateColumn.java:91)<br>
>>> at<br>
>>> org.drools.template.parser.DefaultTemplateRuleBase.createColumnConditions(DefaultTemplateRuleBase.java:105)<br>
>>> at<br>
>>> org.drools.template.parser.DefaultTemplateRuleBase.createTemplateRule(DefaultTemplateRuleBase.java:98)<br>
>>> at<br>
>>> org.drools.template.parser.DefaultTemplateRuleBase.getDTRules(DefaultTemplateRuleBase.java:85)<br>
>>> at<br>
>>> org.drools.template.parser.DefaultTemplateRuleBase.<init>(DefaultTemplateRuleBase.java:64)<br>
>>> at<br>
>>> org.drools.template.parser.TemplateDataListener.<init>(TemplateDataListener.java:76)<br>
>>> at<br>
>>> org.drools.template.parser.TemplateDataListener.<init>(TemplateDataListener.java:52)<br>
>>> at<br>
>>> org.drools.template.ObjectDataCompiler.compile(ObjectDataCompiler.java:44)<br>
>>><br>
>>><br>
>>> Here is my code<br>
>>><br>
>>> KnowledgeBuilder kBuilder =<br>
>>> KnowledgeBuilderFactory.newKnowledgeBuilder();<br>
>>> ObjectDataCompiler converter = new ObjectDataCompiler();<br>
>>> InputStream dis = new FileInputStream( new File(<br>
>>> "/home/pranab/Projects/gridx/ct11_1.drl" ) );<br>
>>> if (null == dis){<br>
>>> System.out.println("null rule template stream");<br>
>>> return;<br>
>>> }<br>
>>><br>
>>> Collection<Map<String,Object>> paramMaps = new<br>
>>> ArrayList<Map<String,Object>>();<br>
>>><br>
>>> Map<String,Object> params = new HashMap<String,Object>();<br>
>>><br>
>>> params.put("summerOnPeakPrimaryRate", new Integer(299));<br>
>>> params.put("summerOnPeakSecondaryRate", new Integer(524));<br>
>>> params.put("summerSemiPeakPrimaryRate", new Integer(176));<br>
>>> params.put("summerSemiPeakSecondaryRate", new Integer(305));<br>
>>> params.put("summerOffPeakPrimaryRate", new Integer(139));<br>
>>> params.put("summerOffPeakSecondaryRate", new Integer(243));<br>
>>> params.put("winterOnPeakPrimaryRate", new Integer(249));<br>
>>> params.put("winterOnPeakSecondaryRate", new Integer(438));<br>
>>> params.put("winterSemiPeakPrimaryRate", new Integer(176));<br>
>>> params.put("winterSemiPeakSecondaryRate", new Integer(305));<br>
>>> params.put("winterOffPeakPrimaryRate", new Integer(139));<br>
>>> params.put("winterOffPeakSecondaryRate", new Integer(243));<br>
>>> paramMaps.add(params);<br>
>>><br>
>>> String drl = converter.compile(paramMaps, dis);<br>
>>> Reader rdr = new StringReader( drl );<br>
>>> kBuilder.add( ResourceFactory.newReaderResource(rdr),<br>
>>> ResourceType.DRL);<br>
>>><br>
>>><br>
>>> The line in blue is throwing the exception. This code is very similar to<br>
>>> the example code in Drools Expert guide.<br>
>>><br>
>>> Best,<br>
>>><br>
>>> Roger<br>
>>><br>
>>> _______________________________________________<br>
>>> rules-users mailing list<br>
>>> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>>> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> rules-users mailing list<br>
>> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>><br>
><br>
><br>
> _______________________________________________<br>
> rules-users mailing list<br>
> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
><br>
><br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</div></div></blockquote></div><br></div>