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@gmail.com> wrote:
From: Femke De Backere <femmyke@gmail.com>
Subject: Re: [rules-users] Rule problem
To: "Rules Users List" <rules-users@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@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@gmail.com> wrote:
From: Femke De Backere <femmyke@gmail.com>
Subject: Re: [rules-users] Rule problem
To: "Rules Users List"
<rules-users@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@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
<
DroolsTest
.java><Sample.drl>_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users