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