[rules-users] Rule problem

Femke De Backere femmyke at gmail.com
Mon May 4 19:00:44 EDT 2009


I have another little problem. I try to do the same with a ruleflow  
(and BMI rules in ruleflow group) and my ruleflow starts running and  
the rules are triggered, but I get no system.out.println(...) and mijn  
flow doesn't continue to the next node.

Any suggestions?

Femke

Op 4-mei-09, om 23:30 heeft Greg Barton het volgende geschreven:

>
> I wonder if there's some way to introduce strictfp into the drl.  
> (I'm not even sure if that would even solve the problem.  But I  
> figure it'd get you in the ballpark.)  But I think it would be  
> useful to be able to inject strictfp into the declarations of any  
> generated drools classes.
>
> --- 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, 4:11 PM
>> I solved the problem by removing every double in the
>> sample.drl. How
>> van I fix the double problem if I really wanted to :)? In
>> this case it
>> is unnecassary but there must be a solution?
>>
>> Thanks for all the help!
>>
>> Femke
>>
>> Op 4-mei-09, om 21:48 heeft Wolfgang Laun het volgende
>> geschreven:
>>
>>> Don't use doubles. Try the same thing, scaling the
>> random weights
>>> with 10 (or 100) convert to int, and use suitably
>> scaled integer
>>> limits for your weight classes.
>>>
>>> I'm not at all sure, what various JVM versions
>> and/or Rand
>>> generators could produce.
>>>
>>> The javadoc for java.lang.Math is an indicator that
>> things might not
>>> be as simple as they ought to be.
>>>
>>> I could reproduce the problem this afternoon, but now
>> I can't any
>>> more, on the same machine, same JVM and same Drools
>> version.
>>>
>>> -W
>>>
>>>
>>> 2009/5/4 Femke De Backere <femmyke at gmail.com>
>>> So, I did as you suggested, with the following as
>> result:
>>> BMI of 10 U heeft ondergewicht: 10
>>> BMI of 30 U heeft ondergewicht: 30
>>> BMI of 30 U heeft obesitas: 30
>>> BMI of 20 U heeft ondergewicht: 20
>>>
>>> So, I really don't get it, I used exactly the same
>> code as you.
>>>
>>> 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
>>>
>>>
>>> _______________________________________________
>>> 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