[rules-users] Synch Business Object / Working Memory

Jonathan Guéhenneux jojolemariole at hotmail.com
Fri Apr 11 05:23:47 EDT 2008


yes, i made a mistake. its a.setE(...) and not c.setE(...).

I don't call update. If I dont call update, properties of an object are just read one time for all rules?


Subject: RE: [rules-users] Synch Business Object / Working Memory
Date: Fri, 11 Apr 2008 09:47:43 +0100
From: manstis1 at ford.com
To: rules-users at lists.jboss.org










I guess the example is a simplification as "c" (in RHS) has not 
been bound to a fact.
 
Anyway, that aside, do you call "update" to ensure WM knows of 
changes to facts otherwise properties need to be "time-constant" which in your 
example they are not.


  
  
  From: rules-users-bounces at lists.jboss.org 
  [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Jonathan 
  Guéhenneux
Sent: 11 April 2008 09:34
To: Rules Users 
  List
Subject: [rules-users] Synch Business Object / Working 
  Memory


  Hi,

I have two rules :

rule "rule 1 - 
  1"
    
    salience 
  90
    ruleflow-group "rfg1"
    
  when
        a : A(
    
          eComputed == 
  "false",
            c < 
  15,
            d >= 
  75)        
    
  then
        
  c.setE(0);
end



rule "rule 1 - 2"

    
  salience 10
    ruleflow-group "rfg1"
    
  when
        a : A(
    
          eComputed == 
  "false",
            c >= 
  15,
            d >= 
  75)        
    
  then
        
  c.setE(1);
end



and part of the corresponding business code 
  :

public class A {

    
  ...

    public String 
  getEComputed(){
       
  if(eComputed)
          return 
  "true";
       else
    
        return "false";
    
  }

    ...

    public void setE(int 
  e){
        this.e = e;
    
      eComputed = true;
    
  }

    ...

}



so, I expected that if 
  the first rule is activated, the second won't be. But according to my tests, 
  the two rule can be fired on the same object A.
While debugging, I noticed 
  the getEComputed method was only called once. I suppose that I should write 
  this :


rule "rule 1 - 1"
    
  
    salience 90
    ruleflow-group 
  "rfg1"
    when
        a : 
  A(
            eComputed == 
  "false",
            c < 
  15,
            d >= 
  75)        
    
  then
        c.setE(0);
    
      c.setEComputed("true);
end



rule "rule 1 - 
  2"

    salience 10
    ruleflow-group 
  "rfg1"
    when
        a : 
  A(
            eComputed == 
  "false",
            c >= 
  15,
            d >= 
  75)        
    
  then
        c.setE(1);
    
      c.setEComputed("true);
end

But I would prefer another 
  solution. Thanks for help.


  
  Plus de 15 millions de français utilisent Windows Live Messenger ! Téléchargez Messenger, 
  c'est gratuit ! 

_________________________________________________________________
Créez votre disque dur virtuel Windows Live SkyDrive, 5Go de stockage gratuit !
http://www.windowslive.fr/skydrive/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080411/ea0301e4/attachment.html 


More information about the rules-users mailing list