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