[rules-users] Synch Business Object / Working Memory

Jonathan Guéhenneux jojolemariole at hotmail.com
Fri Apr 11 06:32:46 EDT 2008


Ok, I think I understood well. I modified my business code, now I call if

(wm != null)
            wm.update(wm.getFactHandle(this), this);

each time a properties is modified.

But it is worse. Rules that sould be activated only once actually loop, even if I add the no-loop clause.

I understand why they loop, assuming update = (rectact + insert), but I dont get a solution to my problem. I just want to notify an object changement in order to read again the properties, but I dont want to restart the ruleflow.

Sorry, but I find hard to say it in english because even in french, it's not very clear ;)
Subject: RE: [rules-users] Synch Business Object / Working Memory
Date: Fri, 11 Apr 2008 10:39:41 +0100
From: manstis1 at ford.com
To: rules-users at lists.jboss.org










In essence, yes. Have a look at "update" in the manual (and a read 
on Shadow Facts will probably be useful too).


  
  
  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 10:24
To: Rules Users 
  List
Subject: RE: [rules-users] Synch Business Object / Working 
  Memory


  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 ! 

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

_________________________________________________________________
Recevez tous vos e-mails sur un seul compte ! Créez une adresse Hotmail !
http://www.windowslive.fr/hotmail/default.asp
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080411/d9c1d8db/attachment.html 


More information about the rules-users mailing list