Neil,

Thank you for your answer. 
You had right. My mistake was that I was calling modify(fact) each time 
after I set the theft assessment.

Best regards,
                     Oana      

Neil Goldman <[EMAIL PROTECTED]> wrote:     Oana,
   Although your example used a superclass/subclass  relationship, the problem 
is not due to that relationship,  You could just  as well have written two CAR 
rules :
   "if a car's price is <20000, then risk  of  theft is low"
  
   "if a car has the stealth radar avoidance option,  then risk of theft is 
high"
  
 You might be upset by the infinite loop, but there is no  way to know how you 
would like to assess the theft risk of a car that satisfies  BOTH conditions.
  
 Here are two ways you might deal with this.   
  
 a) maybe neither of  these conditions is really  sufficient to determine the 
theft risk, but simply to influence that risk.   The "then" part of the rule 
should just increment/decrement a value the  accumulates the net risk. But 
don't have the increment/decrement also tell  drools that the CAR was modified. 
  
 b) maybe the rules are TOTALLY ORDERED in your analytical  model, and the 
first rule that applies is the only one that matters.  You  can use SALIENCE in 
drools to capture ordering. If all the rules are in a single  activation group, 
then only the highest salience match will actually run (at  least, that is my 
understanding).  Again, you must not tell drools that the  CAR has been 
modified just because you set its theft  assessment.
  
  
  
  

  
---------------------------------
 From: [EMAIL PROTECTED]  [mailto:[EMAIL PROTECTED] On Behalf Of nicolae  oana
Sent: Friday, February 16, 2007 2:11 AM
To:  [email protected]
Subject: [rules-users] Subclasses matche  superclasses problem.


 
Hi everybody,

I have a class Car which is superclass for class  ConvertibleCar, two rules 
(described below) and a ConvertibleCar fact in working  memory that causes both 
rules to fire, resulting this way an unwanted change to  the car`s attribute 
and an infinite loop. 

How do I evitate this problem:  the specialization class fact to not match its 
superclass column in a rule?  

ConvertibleCar car =new ConvertibleCar(10000);

rule  "rule-1"
    when 
        $car:Convertible()
    then
    $car.setPotentialTheftRating("high");
end

rule  "rule-2"
    when 
        $car:Car(price<20000)
    then
    $car.setPotentialTheftRating("low");
end

Best regards,  Oana


  

---------------------------------
 The fish are biting.
Get  more visitors on your site using Yahoo!  Search 
Marketing._______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users


 
---------------------------------
Don't get soaked.  Take a quick peak at the forecast 
 with theYahoo! Search weather shortcut.
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to