[rules-users] Shadow fact problem?

Edson Tirelli tirelli at post.com
Thu Mar 15 08:07:36 EDT 2007


   Michael,

   Sorry, I missed your previous message... why are you moving the check 
into the consequence? As you already realized, that is not  a good 
solution...
   Did you tried your original rule in trunk? Bug is still there?

    []s
    Edson

Anstis, Michael (M.) wrote:

>Sorry to push Edson,
>
>The performance degradation from having the "parental check" in the RHS
>versus the LHS is (expectedly) terrific. We have thousands of
>"attributes" relating to different parent objects and having the rule
>activate for every combination is causing performance problems. Moving
>the RHS into a LHS "eval" would be no better either.
>
>On a different matter, I have successfully installed the source with
>Maven (thanks Mark) and can debug trunk in Eclipse at home!
>
>With kind regards,
>
>Mike
>
>-----Original Message-----
>From: Anstis, Michael (M.) 
>Sent: 14 March 2007 12:28
>To: 'Rules Users List'
>Subject: RE: [rules-users] Shadow fact problem?
>
>OK, Edson, I will try to check it out (I'm having problems accessing
>subversion from work so will try from home).
>
>Whilst trying to implement a workaround though I may have discovered
>another problem (which might have been fixed too):-
>
>rule "A"
>when
>	MaterialEntry ( $m : material )
>	$a2 : Attribute( name ==
>Constants.ATTRIBUTES_MATERIAL_LOCK_PRESSURE, $mlp : number, parent == $m
>)
>	$a3 : Attribute( name ==
>Constants.ATTRIBUTES_MATERIAL_LOCK_PRESSURE_MODIFIER, $lpm : number,
>parent == $m )
>then
>	System.out.println("Rule A"); //<-- Never fires
>end
>
>rule "B"
>when
>	MaterialEntry ( $m : material )
>	$a2 : Attribute( name ==
>Constants.ATTRIBUTES_MATERIAL_LOCK_PRESSURE, $mlp : number )
>	$a3 : Attribute( name ==
>Constants.ATTRIBUTES_MATERIAL_LOCK_PRESSURE_MODIFIER, $lpm : number )
>Then
>	if($a2.getParent() == $m && $a3.getParent() == $m) {
>		System.out.println("Rule B"); //<-- Fires
>	}
>end
>
>If the check for "parent" being equal across $m, $a2 and $a3 is in the
>LHS the rule doesn't activate. However if check is in the RHS the rule
>is OK.
>
>Any thoughts or views (Edson)?
>
>Thanks,
>
>Mike 
>
>-----Original Message-----
>From: rules-users-bounces at lists.jboss.org
>[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Edson Tirelli
>Sent: 13 March 2007 22:57
>To: Rules Users List
>Subject: Re: [rules-users] Shadow fact problem?
>
>
>   Mike,
>
>   Yes, that is a "shadow fact unwanted side-effect" (nice name for a 
>bug hm? :) ), but I remember fixing something similar as part of another
>
>ticket I was working on. Is it possible for you to verify if the problem
>
>is happening in trunk?
>   If it is still hapenning, let me know and I will fix it.
>
>   Thank you,
>       Edson
>
>Anstis, Michael (M.) wrote:
>
>  
>
>>Hi,
>>
>>I am running 3.1-M1 and have (by way of example) two simple rules; A 
>>and B as follows:-
>>
>>      *rule* "A"
>>      *when*
>>              $a1 : Attribute ( name == Constants.ATTRIBUTES_A, $pa :
>>      number )
>>              $a2 : Attribute ( name == Constants.ATTRIBUTES_B, $nc :
>>      number )
>>              $p : Process ( attributesList* contains* $a1,
>>      attributesList* contains* $a2 )
>>      *then*
>>             * double* txy = doSomeMaths($pa, $nc, $p);
>>              Attribute a =* new* Attribute(Constants.ATTRIBUTES_C,
>>    
>>
>txy);
>  
>
>>              $p.addAttribute(a);
>>             * assertLogical*(a);
>>             * modify*($p);
>>              System.out.println("Rule 'A' fired");
>>      *end*
>>                             
>>      *rule* "B"
>>      *when*
>>              $a1 : Attribute ( name == Constants.ATTRIBUTES_C, $txy :
>>      number)
>>              $p : Process( attributesList* contains* $a1 )    
>>                              // <-- Line causing rule not to activate
>>
>>      *then*
>>             * double* m = doSomeMoreMaths($txy, $p);
>>              System.out.println("Rule 'B' fired");
>>      *end*
>>
>>Process exposes an ArrayList of Attribute objects (each having a 
>>name\value pair).
>>
>>When the content of the ArrayList held by Process is added to (Rule 
>>'A') the next rule (Rule 'B') is not being activated.
>>
>>Can anybody provide any insight into how best a workaround can be 
>>engineered?
>>
>>With kind regards,
>>
>>Mike
>>
>>-----------------------------------------------------------------------
>>    
>>
>-
>  
>
>>_______________________________________________
>>rules-users mailing list
>>rules-users at lists.jboss.org
>>https://lists.jboss.org/mailman/listinfo/rules-users
>> 
>>
>>    
>>
>
>
>  
>


-- 
 Edson Tirelli
 Software Engineer - JBoss Rules Core Developer
 Office: +55 11 3124-6000
 Mobile: +55 11 9218-4151
 JBoss, a division of Red Hat @ www.jboss.com





More information about the rules-users mailing list