Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Drools Rule depending on Knowledge from JDK Map (not within non-JDK Class)

I'm trying to write the below Rule, which depends on Knowledge provided in the below main that uses just a JDK [library] Map (instead of a Map within a non-library Class). But it doesn't seem to be working...

Main method:

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

I want to compare the value of BMI inside of rule precondition, if this condition is true, so I want to show the message below.

What is wrong?

like image 309
user1182373 Avatar asked Feb 01 '12 10:02

user1182373


1 Answers

You should write something like:

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

It should work :)

like image 90
salaboy Avatar answered Oct 13 '22 22:10

salaboy