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

15,711

You should write something like:

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

It should work :)

Share:
15,711
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin about 2 years

    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?

  • Jesvin Jose
    Jesvin Jose over 12 years
    +1, even I needed help with attributes for which properties dont work well.
  • Jesvin Jose
    Jesvin Jose over 12 years
    Lists and maps at 5.8.3.3.8 (here is 5.8.3 )