[rules-users] Rule problem

Femke De Backere femmyke at gmail.com
Mon May 4 12:33:43 EDT 2009


Ok! I will give it a try! I expect the plain java class to win, but I  
need to do the tests for my thesis ;).

Femke

Op 4-mei-09, om 17:11 heeft Greg Barton het volgende geschreven:

>
> Well, approach this systematically, then: Create a new Drools  
> project in Eclipse and replace the DroolsTest.java and Sample.drl  
> with the ones I sent before.  What results do you get?  If they are  
> correct, modify the project one step at a time until the problem is  
> uncovered.
>
> One place to focus on: you're using rule flows.  I have no idea how  
> that could cause a false positive result like you've seen, but you  
> never know.
>
> Finally, if you're comparing performance of rules vs plain java,  
> plain java will easily win in this case.  The rule of thumb is this:  
> if you can easily write a plain non-rules algorithm it will  
> outperform the rules solution.
>
> --- On Mon, 5/4/09, Femke De Backere <femmyke at gmail.com> wrote:
>
>> From: Femke De Backere <femmyke at gmail.com>
>> Subject: Re: [rules-users] Rule problem
>> To: "Rules Users List" <rules-users at lists.jboss.org>
>> Date: Monday, May 4, 2009, 6:53 AM
>> I'm using this:
>> package bmi
>>
>> import bmi.DroolsTest.BMIClass;
>>
>> rule "Overgewicht"
>> 	ruleflow-group "BMIrules"
>> 	when
>> 		bmiClass : BMIClass($bmi: bmi >= 25, bmi < 30)
>> 	then
>> 		System.out.println("U heeft overgewicht: " +
>> $bmi);
>> end
>>
>> rule "Obesitas"
>> 	ruleflow-group "BMIrules"
>> 	when
>> 		bmiClass : BMIClass($bmi : bmi >= 30)
>> 	then
>> 		System.out.println("U heeft obesitas: " +
>> $bmi);
>> end
>>
>>
>> rule "Ondergewicht"
>> 	ruleflow-group "BMIrules"
>> 	when
>> 		bmiClass : BMIClass($bmi : bmi < 18.5)
>> 	then
>> 		System.out.println("U heeft ondergewicht: " +
>> $bmi);
>> end
>>
>>
>> rule "Normaal"
>> 	ruleflow-group "BMIrules"
>> 	when
>> 		bmiClass : BMIClass($bmi : bmi >= 18.5, bmi < 25)
>> 	then
>> 		System.out.println("U heeft een normaal gewicht:
>> " + $bmi);
>> end
>>
>> But in essence it is the same as Greg's. I get outputs
>> as:
>>
>> U heeft ondergewicht: 25.0
>> U heeft overgewicht: 25.0
>>
>> But I really don't see the problem.
>>
>> Femke
>>
>> Op 4-mei-09, om 13:25 heeft Wolfgang Laun het volgende
>> geschreven:
>>
>>> I cannot reproduce your findings.
>>> Which bmi values cause the firing of two rules?
>>> Are you using exactly the same .drl file Greg sent?
>>> -W
>>>
>>> 2009/5/4 Femke De Backere <femmyke at gmail.com>
>>> Thanks for the answer! But I sometimes get 2 rules
>> that are correct,
>>> and that is impossible. I embedded Greg's
>> DroolsTest class in my
>>> class (I am doing some test on performance and
>> studying the
>>> difference between performance with a plain java
>> class), and it
>>> still doesn't work, and I really don't see
>> why. Anyone any
>>> suggestions, in attachement, my class.
>>>
>>> Thx,
>>>
>>> Femke
>>>
>>>
>>>
>>>
>>> Op 4-mei-09, om 02:47 heeft Greg Barton het volgende
>> geschreven:
>>>
>>> Try the attached code.
>>>
>>> --- On Sun, 5/3/09, Femke De Backere
>> <femmyke at gmail.com> wrote:
>>>
>>> From: Femke De Backere <femmyke at gmail.com>
>>> Subject: Re: [rules-users] Rule problem
>>> To: "Rules Users List"
>> <rules-users at lists.jboss.org>
>>> Date: Sunday, May 3, 2009, 6:18 PM
>>> Thx for the answer. I tried this but I doesn't
>> seem to
>>> work. For a BMI of 20, i get the result
>>> "ondergewicht", and it should be
>>> "normal".
>>>
>>> Op 4-mei-09, om 01:04 heeft Ingomar Otter het volgende
>>> geschreven:
>>>
>>> Femke,
>>> The "Overgewicht| rule matches for _two_ BMIClass
>>> facts, one with bmi >- 25 and one for BMIClass
>> <30.
>>> If you want to apply multiple  constraints to a single
>>> fact you have to list them as such:
>>>
>>> rule "Overgewicht"
>>>       when
>>>               bmiClass : BMIClass(bmi >= 25
>> && bmi
>>> <30)
>>>       then
>>>               System.out.println("U heeft
>>> overgewicht");
>>> end
>>>
>>>
>>> Cheers,
>>> Ingomar
>>>
>>>
>>> Am 04.05.2009 um 00:48 schrieb Femke De Backere:
>>>
>>> Hi!
>>>
>>> I want to make en BMI rule application, so I need
>>> to test the BMI values. But in rule
>> "Overgewicht"
>>> and "Normaal", I need to use an AND, but it
>>> doesn't seem to work in any way I tried.
>>>
>>> Does anybody see the problem? The rest of the
>>> application is based on de sample project (created
>> when
>>> making a new Drools project).
>>>
>>> Thx,
>>>
>>> Femke
>>>
>>> package bmi
>>>
>>> import bmi.DroolsTest.BMIClass;
>>>
>>> rule "Overgewicht"
>>>       when
>>>               bmiClass : BMIClass(bmi >= 25)
>>>               bmiClass : BMIClass(bmi < 30)
>>>       then
>>>               System.out.println("U heeft
>>> overgewicht");
>>> end
>>>
>>> rule "Obesitas"
>>>       when
>>>               bmiClass : BMIClass($bmi : bmi >=
>> 30)
>>>       then
>>>               System.out.println("U heeft
>>> obesitas");
>>> end
>>>
>>> rule "Ondergewicht"
>>>       when
>>>               bmiClass : BMIClass($bmi : bmi <
>> 18.5)
>>>       then
>>>               System.out.println("U heeft
>>> ondergewicht");
>>> end
>>>
>>> rule "Normaal"
>>>       when
>>>               bmiClass : BMIClass(bmi >= 18.5)
>>>               bmiClass : BMIClass(bmi < 25)
>>>       then
>>>               System.out.println("U heeft een
>> normaal
>>> gewicht");
>>>
>>> end
>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>>
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>> <
>>> DroolsTest
>>>
>> .java><Sample.drl>_______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users




More information about the rules-users mailing list