<div>Hi Wolfgang,</div><div>We were able to get the code to work based on your previous suggestions. Your following recommendation is definitely more elegant and complete. Many thanks for following up. Most grateful! </div>
<div><br></div><div>Roger </div><br><br><div class="gmail_quote">On Thu, Nov 11, 2010 at 12:56 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;">[Note: I see that template parsing is rather wobbly. The JIRA has to<br>
be fixed in<br>
org.drools.template.parser.DefaultTemplateContainer, and I think there are other<br>
&quot;holes&quot; in the parseTemplate method.]<br>
<br>
Roger,<br>
<br>
while my previous suggestion avoids the NPE, it may not be the<br>
adequate solution for your situation. I see that you have several<br>
rules which classify ContractRule w.r.t. season and hourType. These do<br>
not rely on template parameters, and they would be better off in a<br>
separate simple .drl file.<br>
<br>
Now let&#39;s look at your reduced original template<br>
<div class="im"><br>
template contract_rate<br>
  rule &quot;Summer on peak primary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;summer&quot; &amp;&amp; hourType == &quot;onPeak&quot; &amp;&amp;<br>
type == &quot;primary&quot;)<br>
  then<br>
    $r.setRate(@{summerOnPeakPrimaryRate});<br>
  end<br>
end template<br>
<br>
</div>From the other parameter names I can imagine that you have similar<br>
hand-written rules for all<br>
other combinations of these three field values; templating is just<br>
used to insert the rate values<br>
programmatically rather than hand-coded. (I suppose good old<br>
properties would solve this task<br>
quite well!)<br>
<br>
But templating may be used to save you the trouble of writing and<br>
maintaining all the set-rate<br>
rules themselves. (Just imagine of the Contractor comes up with the<br>
notion of adding a rebate<br>
for groups: You&#39;ll have to double your rules manually!)<br>
<br>
Here&#39;s the template to achieve everything with a single rule:<br>
<br>
template header<br>
theSeason<br>
theHour<br>
theType<br>
theRate<br>
<br>
package resource<br>
import resource.ContractRule<br>
template contract_rate<br>
rule &quot;@{theSeason} @{theHour} @{theType} rate&quot;    ### DO NOT INDENT<br>
THIS LINE. ARRGH!<br>
  when<br>
    $r : ContractRule( season == &quot;@{theSeason}&quot; &amp;&amp; hourType ==<br>
&quot;@{theHour}&quot; &amp;&amp; type == &quot;@{theType}&quot;)<br>
  then<br>
    $r.setRate(@{theRate});<br>
  end<br>
end template<br>
<br>
Now you&#39;ll have to use more than one parameter map - one for each such<br>
combination. [[Aside: Adding<br>
the &quot;group&quot; rebate can be done by<br>
* adding the template parameter,<br>
* adding the restriction to the template rule<br>
* extending the rule name<br>
* extend addParamMap<br>
* write the additional addParamMap() calls ]]<br>
<div class="im"><br>
Collection&lt;Map&lt;String,Object&gt;&gt; paramMaps = new ArrayList&lt;Map&lt;String,Object&gt;&gt;();<br>
<br>
</div>  private void addParamMap( String season, String hour, String type, int rate ){<br>
<div class="im">     Map&lt;String,Object&gt; params = new HashMap&lt;String,Object&gt;();<br>
</div>     params.put( &quot;theSeason&quot;, season );<br>
     params.put( &quot;theHour&quot;,   hour );<br>
     params.put( &quot;theType&quot;,   type );<br>
     params.put( &quot;theRate&quot;,   rate );<br>
     paramMaps.add( params );<br>
  }<br>
<br>
    addParamMap( &quot;summer&quot;, &quot;onPeak&quot;,   &quot;primary&quot;,   299 );<br>
    addParamMap( &quot;summer&quot;, &quot;onPeak&quot;,   &quot;secondary&quot;, 524 );<br>
    addParamMap( &quot;summer&quot;, &quot;semiPeak&quot;, &quot;primary&quot;,   176 );<br>
    addParamMap( &quot;summer&quot;, &quot;semiPeak&quot;, &quot;secondary&quot;, 305 );<br>
    addParamMap( &quot;summer&quot;, &quot;offPeak&quot;,  &quot;primary&quot;,   139 );<br>
    addParamMap( &quot;summer&quot;, &quot;offPeak&quot;,  &quot;secondary&quot;, 243 );<br>
    addParamMap( &quot;winter&quot;, &quot;onPeak&quot;,   &quot;primary&quot;,   249 );<br>
    addParamMap( &quot;winter&quot;, &quot;onPeak&quot;,   &quot;secondary&quot;, 438 );<br>
    addParamMap( &quot;winter&quot;, &quot;semiPeak&quot;, &quot;primary&quot;,   176 );<br>
    addParamMap( &quot;winter&quot;, &quot;semiPeak&quot;, &quot;secondary&quot;, 305 );<br>
    addParamMap( &quot;winter&quot;, &quot;offPeak&quot;,  &quot;primary&quot;,   139 );<br>
    addParamMap( &quot;winter&quot;, &quot;offPeak&quot;,  &quot;secondary&quot;, 243 );<br>
<div class="im"><br>
    String drl = converter.compile(paramMaps, dis);<br>
<br>
</div>And here we go: This is the generated DRL text:<br>
<br>
package resource<br>
import resource.ContractRule<br>
<br>
rule &quot;winter offPeak secondary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;winter&quot; &amp;&amp; hourType == &quot;offPeak&quot; &amp;&amp;<br>
type == &quot;secondary&quot;)<br>
  then<br>
    $r.setRate(243);<br>
  end<br>
<br>
rule &quot;winter offPeak primary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;winter&quot; &amp;&amp; hourType == &quot;offPeak&quot; &amp;&amp;<br>
type == &quot;primary&quot;)<br>
  then<br>
    $r.setRate(139);<br>
  end<br>
<br>
rule &quot;winter semiPeak secondary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;winter&quot; &amp;&amp; hourType == &quot;semiPeak&quot; &amp;&amp;<br>
type == &quot;secondary&quot;)<br>
  then<br>
    $r.setRate(305);<br>
  end<br>
<br>
rule &quot;winter semiPeak primary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;winter&quot; &amp;&amp; hourType == &quot;semiPeak&quot; &amp;&amp;<br>
type == &quot;primary&quot;)<br>
  then<br>
    $r.setRate(176);<br>
  end<br>
<br>
rule &quot;winter onPeak secondary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;winter&quot; &amp;&amp; hourType == &quot;onPeak&quot; &amp;&amp;<br>
type == &quot;secondary&quot;)<br>
  then<br>
    $r.setRate(438);<br>
  end<br>
<br>
rule &quot;winter onPeak primary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;winter&quot; &amp;&amp; hourType == &quot;onPeak&quot; &amp;&amp;<br>
type == &quot;primary&quot;)<br>
  then<br>
    $r.setRate(249);<br>
  end<br>
<br>
rule &quot;summer offPeak secondary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;summer&quot; &amp;&amp; hourType == &quot;offPeak&quot; &amp;&amp;<br>
type == &quot;secondary&quot;)<br>
  then<br>
    $r.setRate(243);<br>
  end<br>
<br>
rule &quot;summer offPeak primary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;summer&quot; &amp;&amp; hourType == &quot;offPeak&quot; &amp;&amp;<br>
type == &quot;primary&quot;)<br>
  then<br>
    $r.setRate(139);<br>
  end<br>
<br>
rule &quot;summer semiPeak secondary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;summer&quot; &amp;&amp; hourType == &quot;semiPeak&quot; &amp;&amp;<br>
type == &quot;secondary&quot;)<br>
  then<br>
    $r.setRate(305);<br>
  end<br>
<br>
rule &quot;summer semiPeak primary rate&quot;<br>
  when<br>
    $r : ContractRule( season == &quot;summer&quot; &amp;&amp; hourType == &quot;semiPeak&quot; &amp;&amp;<br>
type == &quot;primary&quot;)<br>
  then<br>
    $r.setRate(176);<br>
  end<br>
<br>
rule &quot;summer onPeak secondary rate&quot;<br>
<div class="im">  when<br>
    $r : ContractRule( season == &quot;summer&quot; &amp;&amp; hourType == &quot;onPeak&quot; &amp;&amp;<br>
</div>type == &quot;secondary&quot;)<br>
  then<br>
    $r.setRate(524);<br>
  end<br>
<br>
rule &quot;summer onPeak primary rate&quot;<br>
<div class="im">  when<br>
    $r : ContractRule( season == &quot;summer&quot; &amp;&amp; hourType == &quot;onPeak&quot; &amp;&amp;<br>
type == &quot;primary&quot;)<br>
  then<br>
</div>    $r.setRate(299);<br>
  end<br>
<div><div></div><div class="h5"><br>
-W<br>
<br>
2010/11/10 Roger Smith &lt;<a href="mailto:rogersmith1711@gmail.com">rogersmith1711@gmail.com</a>&gt;:<br>
&gt; Wolfgang -<br>
&gt; Thank you!!<br>
&gt;<br>
&gt; On Wed, Nov 10, 2010 at 11:07 AM, Wolfgang Laun &lt;<a href="mailto:wolfgang.laun@gmail.com">wolfgang.laun@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; If you move the<br>
&gt;&gt;  template contract_rate<br>
&gt;&gt; up in front of the first rule &quot;holiday july 4th&quot; the NPE is gone. I<br>
&gt;&gt; haven&#39;t been able to validate the (presumably) generated rule set, but<br>
&gt;&gt; you should be able to do that now.<br>
&gt;&gt;<br>
&gt;&gt; Nevertheless, this warrants a JIRA, which I&#39;ll create forthwith. Also,<br>
&gt;&gt; the docs should indicate what is permitted up front, preceding the<br>
&gt;&gt; &quot;template&quot; statement.<br>
&gt;&gt;<br>
&gt;&gt; -W<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 2010/11/10 Roger Smith &lt;<a href="mailto:rogersmith1711@gmail.com">rogersmith1711@gmail.com</a>&gt;:<br>
&gt;&gt; &gt; Wolfgang,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I have enclosed the template. For debugging purpose, I have removed all<br>
&gt;&gt; &gt; but<br>
&gt;&gt; &gt; one rule.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Roger<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; - O -<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; template header<br>
&gt;&gt; &gt; summerOnPeakPrimaryRate<br>
&gt;&gt; &gt; summerOnPeakSecondaryRate<br>
&gt;&gt; &gt; summerSemiPeakPrimaryRate<br>
&gt;&gt; &gt; summerSemiPeakSecondaryRate<br>
&gt;&gt; &gt; summerOffPeakPrimaryRate<br>
&gt;&gt; &gt; summerOffPeakSecondaryRate<br>
&gt;&gt; &gt; winterOnPeakPrimaryRate<br>
&gt;&gt; &gt; winterOnPeakSecondaryRate<br>
&gt;&gt; &gt; winterSemiPeakPrimaryRate<br>
&gt;&gt; &gt; winterSemiPeakSecondaryRate<br>
&gt;&gt; &gt; winterOffPeakPrimaryRate<br>
&gt;&gt; &gt; winterOffPeakSecondaryRate<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; package tradex.contract.sde<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; import tradex.process.ruler.server.ContractRule<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; rule &quot;holiday july 4th&quot;<br>
&gt;&gt; &gt; when<br>
&gt;&gt; &gt;   $r : ContractRule( year == 2010 &amp;&amp; month == 7 &amp;&amp; day == 4 &amp;&amp; holiday<br>
&gt;&gt; &gt; ==<br>
&gt;&gt; &gt; false)<br>
&gt;&gt; &gt; then<br>
&gt;&gt; &gt;   modify($r){<br>
&gt;&gt; &gt;     setHoliday(true)<br>
&gt;&gt; &gt;   }<br>
&gt;&gt; &gt; end<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; rule &quot;holiday xmas&quot;<br>
&gt;&gt; &gt; when<br>
&gt;&gt; &gt;   $r : ContractRule( year == 2010 &amp;&amp; month == 12 &amp;&amp; day == 25 &amp;&amp; holiday<br>
&gt;&gt; &gt; ==<br>
&gt;&gt; &gt; false)<br>
&gt;&gt; &gt; then<br>
&gt;&gt; &gt;   modify($r){<br>
&gt;&gt; &gt;     setHoliday(true)<br>
&gt;&gt; &gt;   }<br>
&gt;&gt; &gt; end<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; rule &quot;Season summer&quot;<br>
&gt;&gt; &gt; when<br>
&gt;&gt; &gt;   $r : ContractRule( dayOfYear &gt;= 121 &amp;&amp; dayOfYear &lt;= 273 &amp;&amp; season ==<br>
&gt;&gt; &gt; &quot;undefined&quot;)<br>
&gt;&gt; &gt; then<br>
&gt;&gt; &gt;   modify($r){<br>
&gt;&gt; &gt;     setSeason(&quot;summer&quot;)<br>
&gt;&gt; &gt;   }<br>
&gt;&gt; &gt; end<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; rule &quot;Season winter&quot;<br>
&gt;&gt; &gt; when<br>
&gt;&gt; &gt;   $r : ContractRule( (dayOfYear &gt;= 274 || dayOfYear &lt;= 120) &amp;&amp; season ==<br>
&gt;&gt; &gt; &quot;undefined&quot;)<br>
&gt;&gt; &gt; then<br>
&gt;&gt; &gt;   modify($r){<br>
&gt;&gt; &gt;     setSeason(&quot;winter&quot;)<br>
&gt;&gt; &gt;   }<br>
&gt;&gt; &gt; end<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; rule &quot;On peak hour&quot;<br>
&gt;&gt; &gt; when<br>
&gt;&gt; &gt;   $r : ContractRule( holiday == false &amp;&amp; dayOfWeek &gt;= 1 &amp;&amp; dayOfWeek &lt;=<br>
&gt;&gt; &gt; 6<br>
&gt;&gt; &gt; &amp;&amp; hourOfDay &gt;= 1400 &amp;&amp; hourOfDay &lt;= 2000 &amp;&amp;<br>
&gt;&gt; &gt;   hourType == &quot;undefined&quot;)<br>
&gt;&gt; &gt; then<br>
&gt;&gt; &gt;   modify($r){<br>
&gt;&gt; &gt;     setHourType(&quot;onPeak&quot;)<br>
&gt;&gt; &gt;   }<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; end<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; rule &quot;Semi peak hour&quot;<br>
&gt;&gt; &gt; when<br>
&gt;&gt; &gt;   $r : ContractRule( holiday == false &amp;&amp; dayOfWeek &gt;= 1 &amp;&amp; dayOfWeek &lt;=<br>
&gt;&gt; &gt; 6<br>
&gt;&gt; &gt; &amp;&amp; (hourOfDay &gt;= 600 &amp;&amp; hourOfDay &lt; 1400 ||<br>
&gt;&gt; &gt;   hourOfDay &gt; 2000 &amp;&amp; hourOfDay &lt;= 2200) &amp;&amp; hourType == &quot;undefined&quot;)<br>
&gt;&gt; &gt; then<br>
&gt;&gt; &gt;   modify($r){<br>
&gt;&gt; &gt;     setHourType(&quot;semiPeak&quot;)<br>
&gt;&gt; &gt;   }<br>
&gt;&gt; &gt; end<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; rule &quot;Off peak hour&quot;<br>
&gt;&gt; &gt; when<br>
&gt;&gt; &gt;   $r : ContractRule( (holiday == true ||  dayOfWeek == 7  || hourOfDay &lt;<br>
&gt;&gt; &gt; 600<br>
&gt;&gt; &gt; || hourOfDay &gt; 2200) &amp;&amp; hourType == &quot;undefined&quot; )<br>
&gt;&gt; &gt; then<br>
&gt;&gt; &gt;   modify($r){<br>
&gt;&gt; &gt;     setHourType(&quot;offPeak&quot;)<br>
&gt;&gt; &gt;   }<br>
&gt;&gt; &gt; end<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; template contract_rate<br>
&gt;&gt; &gt;   rule &quot;Summer on peak primary rate&quot;<br>
&gt;&gt; &gt;   when<br>
&gt;&gt; &gt;     $r : ContractRule( season == &quot;summer&quot; &amp;&amp; hourType == &quot;onPeak&quot; &amp;&amp;<br>
&gt;&gt; &gt; type ==<br>
&gt;&gt; &gt; &quot;primary&quot;)<br>
&gt;&gt; &gt;   then<br>
&gt;&gt; &gt;     $r.setRate(@{summerOnPeakPrimaryRate});<br>
&gt;&gt; &gt;   end<br>
&gt;&gt; &gt; end template<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 2010/11/9 Wolfgang Laun &lt;<a href="mailto:wolfgang.laun@gmail.com">wolfgang.laun@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Seeing the template .drl would help to resolve this. Are all<br>
&gt;&gt; &gt;&gt; @{parameter}s<br>
&gt;&gt; &gt;&gt; declared in the template header?<br>
&gt;&gt; &gt;&gt; -W<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 2010/11/9 Roger Smith &lt;<a href="mailto:rogersmith1711@gmail.com">rogersmith1711@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; All -<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; I tried out Drools rule template with a with a proptotype app. Drools<br>
&gt;&gt; &gt;&gt;&gt; is<br>
&gt;&gt; &gt;&gt;&gt; throwing NullPointerException as below. I would much appreciate if<br>
&gt;&gt; &gt;&gt;&gt; someone<br>
&gt;&gt; &gt;&gt;&gt; on this list can help.<br>
&gt;&gt; &gt;&gt;&gt; java.lang.NullPointerException<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.parser.DefaultTemplateColumn.createCellCondition(DefaultTemplateColumn.java:68)<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.parser.DefaultTemplateColumn.addCondition(DefaultTemplateColumn.java:91)<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.parser.DefaultTemplateRuleBase.createColumnConditions(DefaultTemplateRuleBase.java:105)<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.parser.DefaultTemplateRuleBase.createTemplateRule(DefaultTemplateRuleBase.java:98)<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.parser.DefaultTemplateRuleBase.getDTRules(DefaultTemplateRuleBase.java:85)<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.parser.DefaultTemplateRuleBase.&lt;init&gt;(DefaultTemplateRuleBase.java:64)<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.parser.TemplateDataListener.&lt;init&gt;(TemplateDataListener.java:76)<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.parser.TemplateDataListener.&lt;init&gt;(TemplateDataListener.java:52)<br>
&gt;&gt; &gt;&gt;&gt;     at<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; org.drools.template.ObjectDataCompiler.compile(ObjectDataCompiler.java:44)<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Here is my code<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;         KnowledgeBuilder kBuilder =<br>
&gt;&gt; &gt;&gt;&gt; KnowledgeBuilderFactory.newKnowledgeBuilder();<br>
&gt;&gt; &gt;&gt;&gt;         ObjectDataCompiler converter = new ObjectDataCompiler();<br>
&gt;&gt; &gt;&gt;&gt;         InputStream dis = new FileInputStream( new File(<br>
&gt;&gt; &gt;&gt;&gt; &quot;/home/pranab/Projects/gridx/ct11_1.drl&quot; ) );<br>
&gt;&gt; &gt;&gt;&gt;         if (null == dis){<br>
&gt;&gt; &gt;&gt;&gt;           System.out.println(&quot;null rule template stream&quot;);<br>
&gt;&gt; &gt;&gt;&gt;           return;<br>
&gt;&gt; &gt;&gt;&gt;         }<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;         Collection&lt;Map&lt;String,Object&gt;&gt; paramMaps = new<br>
&gt;&gt; &gt;&gt;&gt; ArrayList&lt;Map&lt;String,Object&gt;&gt;();<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;         Map&lt;String,Object&gt; params = new HashMap&lt;String,Object&gt;();<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;summerOnPeakPrimaryRate&quot;, new Integer(299));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;summerOnPeakSecondaryRate&quot;, new Integer(524));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;summerSemiPeakPrimaryRate&quot;, new Integer(176));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;summerSemiPeakSecondaryRate&quot;, new Integer(305));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;summerOffPeakPrimaryRate&quot;, new Integer(139));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;summerOffPeakSecondaryRate&quot;, new Integer(243));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;winterOnPeakPrimaryRate&quot;, new Integer(249));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;winterOnPeakSecondaryRate&quot;, new Integer(438));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;winterSemiPeakPrimaryRate&quot;, new Integer(176));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;winterSemiPeakSecondaryRate&quot;, new Integer(305));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;winterOffPeakPrimaryRate&quot;, new Integer(139));<br>
&gt;&gt; &gt;&gt;&gt;         params.put(&quot;winterOffPeakSecondaryRate&quot;, new Integer(243));<br>
&gt;&gt; &gt;&gt;&gt;         paramMaps.add(params);<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;         String drl = converter.compile(paramMaps, dis);<br>
&gt;&gt; &gt;&gt;&gt;         Reader rdr = new StringReader( drl );<br>
&gt;&gt; &gt;&gt;&gt;         kBuilder.add( ResourceFactory.newReaderResource(rdr),<br>
&gt;&gt; &gt;&gt;&gt; ResourceType.DRL);<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; The line in blue is throwing the exception. This code is very similar<br>
&gt;&gt; &gt;&gt;&gt; to<br>
&gt;&gt; &gt;&gt;&gt; the example code in Drools Expert guide.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Best,<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Roger<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt; &gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt; &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;&gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; rules-users mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&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;&gt;<br>
&gt;&gt; &gt;<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; &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;<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>
</div></div></blockquote></div><br>