2012-02-01 9 views
8

Sono principiante in questo framework e sto cercando di utilizzare una mappa anziché una classe Java.Drools and Maps

Il mio esempio si presenta così:

metodo Main:

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 

voglio confrontare il valore di BMI all'interno della regola precondizione, se questo condizione è vera, quindi voglio mostrare il messaggio qui sotto.

Cosa c'è che non va?

risposta

12

Si dovrebbe scrivere qualcosa di simile:

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

Dovrebbe funzionare :)

+0

+1, anche avevo bisogno di aiuto con gli attributi per i quali le proprietà non funzionano bene. – aitchnyu

+0

Elenchi e mappe a 5.8.3.3.8 (qui [5.8.3] (http://docs.jboss.org/drools/release/5.4.0.Beta2/drools-expert-docs/html/ch05.html # d0e4051)) – aitchnyu