2012-02-01 4 views
8

Je suis débutant dans ce cadre et j'essaie d'utiliser une carte au lieu de la classe Java.Drools et cartes

Mon exemple ressemble à ça:

méthode principale:

Map<String, Float> mapa = new HashMap<String, Float>(); 
mapa.put("Height", (float)1.73); 
mapa.put("Weight", (float)79.0); 
mapa.put("BMI", mapa.get("Weight")/
       (mapa.get("Height") * mapa.get("Height"))); 
ksession.insert(mapa); 

rule.drl:

rule "Low BMI" 
    when 
     $map : (Map(values("BMI")) < 18.0) 
    then 
     System.out.println("You have a low BMI"); 
end 

Je veux comparer la valeur de l'IMC à l'intérieur de la condition sine qua non de la règle, si cela la condition est vraie, donc je veux montrer le message ci-dessous.

Qu'est-ce qui ne va pas?

Répondre

12

Vous devriez écrire quelque chose comme:

when 
    $map: Map(this["BMI"] < 18) 
then 

Il devrait fonctionner :)

+0

+1, même je avais besoin d'aide avec des attributs dont les propriétés DonT bien. – aitchnyu

+0

Listes et cartes au 5.8.3.3.8 (ici [5.8.3] (http://docs.jboss.org/drools/release/5.4.0.Beta2/drools-expert-docs/html/ch05.html # d0e4051)) – aitchnyu