2012-02-01 15 views
8

Soy principiante en este marco y estoy tratando de usar un mapa en lugar de la clase Java.Drools y Maps

Mi ejemplo se ve así:

método principal:

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 

quiero comparar el valor del índice de masa corporal dentro de precondición regla, si esta la condición es verdadera, entonces quiero mostrar el mensaje a continuación.

¿Qué pasa?

Respuesta

12

Usted debe escribir algo como:

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

Se debe trabajar :)

+0

1, aún necesitaba ayuda con los atributos de las propiedades que no funcionan bien. – aitchnyu

+0

Listas y mapas en 5.8.3.3.8 (aquí está [5.8.3] (http://docs.jboss.org/drools/release/5.4.0.Beta2/drools-expert-docs/html/ch05.html # d0e4051)) – aitchnyu