2012-02-01 33 views
8

Tôi là người mới bắt đầu trong khuôn khổ này và tôi đang cố gắng sử dụng bản đồ thay vì lớp Java.Drools and Maps

dụ của tôi trông như thế:

phương pháp chính:

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 

tôi muốn so sánh giá trị của chỉ số BMI bên trong quy tắc điều kiện tiên quyết, nếu điều này điều kiện là đúng, vì vậy tôi muốn hiển thị thông báo bên dưới.

Có gì sai?

Trả lời

12

Bạn nên viết một cái gì đó như:

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

Nó sẽ làm việc :)

+0

+1, thậm chí tôi cần sự giúp đỡ với các thuộc tính mà các thuộc tính không làm việc tốt. – aitchnyu

+0

Danh sách và bản đồ ở 5.8.3.3.8 (đây là [5.8.3] (http://docs.jboss.org/drools/release/5.4.0.Beta2/drools-expert-docs/html/ch05.html # d0e4051)) – aitchnyu