[rules-users] Using Hashmap in drl files......

Edson Tirelli tirelli at post.com
Thu Nov 6 08:13:43 EST 2008


   The problem is not the "hashmap". Just read the error message:

[9,0]: unknown:9:0 mismatched token: [@122,385:388='then',<61>,9:0];
expecting type RIGHT_PAREN

   You are missing a ) in your last condition, before the "then".

   Having said that, your rule seems wrong to me:

* you should use a top level eval in the second condition
* you could benefit from the MVEL syntax to simplify your condition syntax
* there is no "eval" in the consequence. Just write plain code there.

rule xyz
dialect "mvel"
when
        $a : RuleAttributes()
        eval( ($a.values["AdultFare"] - $a.values["InfantFare"]) <
($a.values["ChildFare"] + $a.values["InfantFare"] ) )
then
        $a.values["GrossFare"] = 500;
end

   I did not tested, but should work fine.

   []s
   Edson


2008/11/6 Nikhil_dev <k.nikhil at verchaska.com>

>
> Below is the drl file
>
> package com.vtech.ruleengine.module.rulemanagermodule
> import com.vtech.ruleengine.module.rulemanagermodule.RuleAttributes;
> import java.util.Map;
> rule  "Rule_dec_1"
> dialect "mvel"
> when
>         $a : RuleAttributes()
>         m :  RuleAttributes ( eval( ($a.getValues().get("AdultFare") -
> $a.getValues().get("InfantFare")) < ($a.getValues().get("ChildFare") +
> $a.getValues().get("InfantFare") ) )
> then
>         eval($a.getValues().put("GrossFare", 500))
> end
>
>
> Follwing is the way i am using drrols
>
>                final StatefulSession ruleStateSession =
> ruleBase.newStatefulSession();
>
>                ruleStateSession.addEventListener( new
> DebugAgendaEventListener()
> );
>                ruleStateSession.addEventListener( new
> DebugWorkingMemoryEventListener() );
>
>                RuleAttributes objRuleattri = new
> RuleAttributes((HashMap<String, Object>)_hmListBean);
>
>                ruleStateSession.insert(objRuleattri);
>
>                ruleStateSession.fireAllRules();
>
> Note : RuleAttributes is a class where i set getter and setter for hashmap
>
> Below is the error message that i get :
>
> [9,0]: unknown:9:0 mismatched token: [@122,385:388='then',<61>,9:0];
> expecting type RIGHT_PAREN
> ERROR 1 ::getCause::: null
> ERROR 2 ::getLocalizedMessage::: Unable to compile drl
> ERROR 3 ::getMessage::: Unable to compile drl
> ERROR 4 ::toString::: java.lang.RuntimeException: Unable to compile drl
> Gross VAlue ::::: 0
> java.lang.RuntimeException: Unable to compile drl
>
> It will be very helpful is anyone of you rectify my mistake or tell me any
> other way to use Hashmap in drl file.
> I am using hashmap, since variable in my application varies hence cannot
> define fixed Bean structure.
>
>
>
> -----
> Regards,
> :working:Nikhil
> --
> View this message in context:
> http://www.nabble.com/Using-Hashmap-in-drl-files......-tp20355904p20355904.html
> Sent from the drools - user mailing list archive at Nabble.com.
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
 Edson Tirelli
 JBoss Drools Core Development
 JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20081106/8a935775/attachment.html 


More information about the rules-users mailing list