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@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@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