<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<STYLE>.hmmessage P {
        PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
BODY.hmmessage {
        FONT-SIZE: 10pt; FONT-FAMILY: Tahoma
}
</STYLE>

<META content="MSHTML 6.00.2900.3132" name=GENERATOR></HEAD>
<BODY class=hmmessage>
<DIV dir=ltr align=left><SPAN class=218345314-11042008><FONT face=Arial 
color=#0000ff>I am confident Drools supports what you are looking for; did you 
try update() - or modify() - in the "then" part of the rule (and not in Java as 
you code snippet)?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=218345314-11042008><FONT face=Arial 
color=#0000ff></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=218345314-11042008><FONT face=Arial 
color=#0000ff>Can you explain more the need for the "computed" flag on the 
fact?&nbsp;Is the value of a property set sometimes whilst calculated at other 
times?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=218345314-11042008><FONT face=Arial 
color=#0000ff></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=218345314-11042008><FONT face=Arial 
color=#0000ff>Stick with both Drools and the group - we'll get you to where you 
want to be.</FONT></SPAN></DIV><BR>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma><B>From:</B> rules-users-bounces@lists.jboss.org 
  [mailto:rules-users-bounces@lists.jboss.org] <B>On Behalf Of </B>Jonathan 
  Guéhenneux<BR><B>Sent:</B> 11 April 2008 15:41<BR><B>To:</B> Rules Users 
  List<BR><B>Subject:</B> RE: [rules-users] Synch Business Object / Working 
  Memory<BR></FONT><BR></DIV>
  <DIV></DIV>First, thank you for yours answers which are very clear. Your 
  solution will probably work. I'm just desapointed that there is no way to 
  synchronized the shadow with the object. That would be great for my 
  work.<BR><BR>
  <BLOCKQUOTE>
    <HR>
    Subject: RE: [rules-users] Synch Business Object / Working Memory<BR>Date: 
    Fri, 11 Apr 2008 14:57:52 +0100<BR>From: manstis1@ford.com<BR>To: 
    rules-users@lists.jboss.org<BR><BR>
    <META content="Microsoft SafeHTML" name=Generator>
    <STYLE>.ExternalClass .EC_hmmessage P {
        PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.EC_hmmessage {
        FONT-SIZE: 10pt; FONT-FAMILY: Tahoma
}
</STYLE>

    <DIV dir=ltr align=left><FONT face=Arial color=#0000ff><SPAN 
    class=EC_008434813-11042008>Do you need ruleflow? Perhaps this is too simple 
    and I misunderstood.</SPAN></FONT></DIV>
    <DIV dir=ltr align=left><FONT face=Arial color=#0000ff><SPAN 
    class=EC_008434813-11042008></SPAN></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>package com.sample;</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>public class Test {</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>&nbsp;&nbsp;&nbsp; private Integer 
    a;<BR>&nbsp;&nbsp;&nbsp; private Integer b;<BR>&nbsp;&nbsp;&nbsp; private 
    Integer c;</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>&nbsp;&nbsp;&nbsp; public Integer getA() 
    {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
    a;<BR>&nbsp;&nbsp;&nbsp; }</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>&nbsp;&nbsp;&nbsp; public Integer getB() 
    {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
    b;<BR>&nbsp;&nbsp;&nbsp; }</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>&nbsp;&nbsp;&nbsp; public Integer getC() 
    {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
    c;<BR>&nbsp;&nbsp;&nbsp; }</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>&nbsp;&nbsp;&nbsp; public void setA(Integer a) 
    {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.a = 
    a;<BR>&nbsp;&nbsp;&nbsp; }</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>&nbsp;&nbsp;&nbsp; public void setB(Integer b) 
    {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.b = 
    b;<BR>&nbsp;&nbsp;&nbsp; }</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>&nbsp;&nbsp;&nbsp; public void setC(Integer c) 
    {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.c = 
    c;<BR>&nbsp;&nbsp;&nbsp; }</SPAN></FONT></DIV>
    <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
    <DIV dir=ltr align=left><FONT face="Courier New" color=#0000ff><SPAN 
    class=EC_008434813-11042008>}</SPAN></FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face="Courier New" color=#0000ff>package com.sample</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face="Courier New" color=#0000ff>import 
    com.sample.Test<BR>&nbsp;<BR>rule "rule 1"<BR>&nbsp;&nbsp;&nbsp; salience 
    90<BR>&nbsp;&nbsp;&nbsp; when<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    a : Test( a != null, b == null )<BR>&nbsp;&nbsp;&nbsp; 
    then<BR>&nbsp;&nbsp;&nbsp; &nbsp;System.out.println("setting b to 
    10");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    a.setB(10);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    update(a);<BR>end</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face="Courier New" color=#0000ff>rule "rule 
    2"<BR>&nbsp;&nbsp;&nbsp; salience 80<BR>&nbsp;&nbsp;&nbsp; 
    when<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a : Test( b : b != null, 
    c == null )<BR>&nbsp;&nbsp;&nbsp; then<BR>&nbsp;&nbsp;&nbsp; 
    &nbsp;System.out.println("setting c to b x 
    5");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.setC(b * 
    5);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    update(a);<BR>end</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face="Courier New" color=#0000ff>rule "rule 
    3"<BR>&nbsp;&nbsp;&nbsp; salience 70<BR>&nbsp;&nbsp;&nbsp; 
    when<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a : Test( c != null 
    )<BR>&nbsp;&nbsp;&nbsp; then<BR>&nbsp;&nbsp;&nbsp; 
    &nbsp;System.out.println("c = " + a.getC());<BR>end<BR></FONT></DIV>
    <DIV><FONT face="Courier New" color=#0000ff></FONT>&nbsp;</DIV>
    <DIV><BR></DIV>
    <BLOCKQUOTE style="MARGIN-RIGHT: 0px">
      <DIV class=EC_OutlookMessageHeader lang=en-us dir=ltr align=left>
      <HR>
      <FONT face=Tahoma><B>From:</B> rules-users-bounces@lists.jboss.org 
      [mailto:rules-users-bounces@lists.jboss.org] <B>On Behalf Of </B>Jonathan 
      Guéhenneux<BR><B>Sent:</B> 11 April 2008 13:23<BR><B>To:</B> Rules Users 
      List<BR><B>Subject:</B> RE: [rules-users] Synch Business Object / Working 
      Memory<BR></FONT><BR></DIV>
      <DIV></DIV>Indeed, it works but I will have to use such booleans for a lot 
      of rules.<BR><BR>Cause my rule flow is <SPAN 
      class=EC_def-example>schematically</SPAN> :<BR><BR>compute A<BR>compute 
      B(A)<BR>compute C(B)<BR>...<BR><BR>Perhaps I may create several ruleflows, 
      one per independant computing?<BR><BR>
      <BLOCKQUOTE>
        <HR>
        Subject: RE: [rules-users] Synch Business Object / Working 
        Memory<BR>Date: Fri, 11 Apr 2008 12:11:32 +0100<BR>From: 
        manstis1@ford.com<BR>To: rules-users@lists.jboss.org<BR><BR>
        <STYLE>.ExternalClass .EC_hmmessage P {
        PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.EC_hmmessage {
        FONT-SIZE: 10pt; FONT-FAMILY: Tahoma
}
</STYLE>

        <DIV dir=ltr align=left><SPAN class=EC_EC_694480211-11042008><FONT 
        face=Arial color=#0000ff>I was thinking something more like 
        this:-</FONT></SPAN></DIV>
        <DIV dir=ltr align=left><SPAN class=EC_EC_694480211-11042008><FONT 
        face=Arial color=#0000ff></FONT></SPAN>&nbsp;</DIV>
        <DIV dir=ltr align=left><SPAN class=EC_EC_694480211-11042008><FONT 
        color=#960000><FONT color=#960000></FONT>
        <P align=left><FONT color=#960000><FONT face="Courier New" 
        color=#0000ff>package com.sample</FONT></FONT></P>
        <P align=left><FONT color=#960000><FONT face="Courier New" 
        color=#0000ff>import com.sample.Test<BR>&nbsp;<BR>rule "rule 1 - 
        1"<BR>&nbsp;&nbsp;&nbsp; salience 90<BR>&nbsp;&nbsp;&nbsp; 
        when<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a : 
        Test(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;computed == 
        "false",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        c &lt; 
        15,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        d &gt;= 75)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        <BR>&nbsp;&nbsp;&nbsp; then<BR>&nbsp;&nbsp;&nbsp; 
        &nbsp;System.out.println("setting e to 
        0");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        a.setE(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        update(a);<BR>end</FONT></FONT></P>
        <P align=left><FONT color=#960000><FONT face="Courier New" 
        color=#0000ff></FONT></FONT>&nbsp;</P>
        <P align=left><FONT color=#960000><FONT face="Courier New" 
        color=#0000ff>rule "rule 1 - 2"<BR>&nbsp;&nbsp;&nbsp; salience 
        10<BR>&nbsp;&nbsp;&nbsp; 
        when<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a : 
        Test(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        computed == 
        "false",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        c &lt; 
        15,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        d &gt;= 75)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        <BR>&nbsp;&nbsp;&nbsp; then<BR>&nbsp;&nbsp;&nbsp; 
        &nbsp;System.out.println("setting e to 
        1");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        a.setE(1);<BR>end<BR></FONT></FONT></P></FONT><FONT color=#960000>
        <P align=left><FONT face=Arial color=#0000ff><SPAN 
        class=EC_EC_694480211-11042008>Note rule "rule 1 - 2" deliberately uses 
        the same patterns as rule "rule 1 - 
        1".</SPAN></FONT></P></FONT></SPAN></DIV>
        <DIV>&nbsp;</DIV>
        <DIV><FONT face="Courier New" color=#0000ff>package 
        com.sample;</FONT></DIV>
        <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
        <DIV><FONT face="Courier New" color=#0000ff>public class&nbsp;<SPAN 
        class=EC_EC_694480211-11042008>Test</SPAN> {<BR>&nbsp;&nbsp;&nbsp; 
        <BR>&nbsp;&nbsp;&nbsp; private boolean computed 
        =false;<BR>&nbsp;&nbsp;&nbsp; private int c=0;<BR>&nbsp;&nbsp;&nbsp; 
        private int d=80;<BR>&nbsp;&nbsp;&nbsp; private int e;</FONT></DIV>
        <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
        <DIV><FONT face="Courier New" color=#0000ff>&nbsp;&nbsp;&nbsp; public 
        String getComputed(){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        if(computed)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        return "true";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
        "false";<BR>&nbsp;&nbsp;&nbsp; }</FONT></DIV>
        <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
        <DIV><FONT face="Courier New" color=#0000ff>&nbsp;&nbsp;&nbsp; public 
        int getC() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
        c;<BR>&nbsp;&nbsp;&nbsp; }</FONT></DIV>
        <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
        <DIV><FONT face="Courier New" color=#0000ff>&nbsp;&nbsp;&nbsp; public 
        int getD() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
        d;<BR>&nbsp;&nbsp;&nbsp; }</FONT></DIV>
        <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
        <DIV><FONT face="Courier New" color=#0000ff>&nbsp;&nbsp;&nbsp; public 
        void setE(int e){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.e = 
        e;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; computed = 
        true;<BR>&nbsp;&nbsp;&nbsp; }</FONT></DIV>
        <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
        <DIV><FONT face="Courier New" color=#0000ff>}<BR></FONT></DIV>
        <DIV><SPAN class=EC_EC_694480211-11042008><FONT face=Arial 
        color=#0000ff>Rule "rule 1 - 1" is the only rule to run (and runs once); 
        the second activatino being cancelled due to the update to 
        "computed".&nbsp;Here's the audit view:-</FONT></SPAN></DIV>
        <DIV><SPAN class=EC_EC_694480211-11042008><FONT face=Arial 
        color=#0000ff></FONT></SPAN>&nbsp;</DIV><FONT face="Courier New" 
        color=#0000ff>&lt;object-stream&gt;<BR>&nbsp; 
        &lt;list&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;activationId&gt;rule 1 - 1 
        [1]&lt;/activationId&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;rule&gt;rule 1 - 1&lt;/rule&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;declarations&gt;a=com.sample.Test@67126712(1)&lt;/declarations&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;type&gt;4&lt;/type&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;/org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;activationId&gt;rule 1 - 2 
        [1]&lt;/activationId&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;rule&gt;rule 1 - 2&lt;/rule&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;declarations&gt;a=com.sample.Test@67126712(1)&lt;/declarations&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;type&gt;4&lt;/type&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;/org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;org.drools.audit.event.ObjectLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;factId&gt;1&lt;/factId&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;objectToString&gt;com.sample.Test@67126712&lt;/objectToString&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;type&gt;1&lt;/type&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;/org.drools.audit.event.ObjectLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;activationId&gt;rule 1 - 1 
        [1]&lt;/activationId&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;rule&gt;rule 1 - 1&lt;/rule&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;declarations&gt;a=com.sample.Test@67126712(1)&lt;/declarations&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;type&gt;6&lt;/type&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;/org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;activationId&gt;rule 1 - 2 
        [1]&lt;/activationId&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;rule&gt;rule 1 - 2&lt;/rule&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;declarations&gt;a=com.sample.Test@67126712(1)&lt;/declarations&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;type&gt;5&lt;/type&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;/org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;org.drools.audit.event.ObjectLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;factId&gt;1&lt;/factId&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;objectToString&gt;com.sample.Test@67126712&lt;/objectToString&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;type&gt;2&lt;/type&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;/org.drools.audit.event.ObjectLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;activationId&gt;rule 1 - 1 
        [1]&lt;/activationId&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;rule&gt;rule 1 - 1&lt;/rule&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;declarations&gt;a=com.sample.Test@67126712(1)&lt;/declarations&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        &lt;type&gt;7&lt;/type&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;/org.drools.audit.event.ActivationLogEvent&gt;<BR>&nbsp; 
        &lt;/list&gt;<BR>&lt;/object-stream&gt;</FONT> 
        <DIV><SPAN class=EC_EC_694480211-11042008></SPAN>&nbsp;</DIV>
        <DIV><BR></DIV>
        <BLOCKQUOTE style="MARGIN-RIGHT: 0px">
          <DIV class=EC_EC_OutlookMessageHeader lang=en-us dir=ltr align=left>
          <HR>
          <FONT face=Tahoma><B>From:</B> rules-users-bounces@lists.jboss.org 
          [mailto:rules-users-bounces@lists.jboss.org] <B>On Behalf Of 
          </B>Jonathan Guéhenneux<BR><B>Sent:</B> 11 April 2008 
          11:33<BR><B>To:</B> Rules Users List<BR><B>Subject:</B> RE: 
          [rules-users] Synch Business Object / Working 
          Memory<BR></FONT><BR></DIV>
          <DIV></DIV>Ok, I think I understood well. I modified my business code, 
          now I call if<BR><BR>(wm != null)<BR>&nbsp;&nbsp;&nbsp; 
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
          wm.update(wm.getFactHandle(this), this);<BR><BR>each time a properties 
          is modified.<BR><BR>But it is worse. Rules that sould be activated 
          only once actually loop, even if I add the no-loop clause.<BR><BR>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.<BR><BR>Sorry, but I find hard to say it in 
          english because even in french, it's not very clear ;)<BR>
          <BLOCKQUOTE>
            <HR>
            Subject: RE: [rules-users] Synch Business Object / Working 
            Memory<BR>Date: Fri, 11 Apr 2008 10:39:41 +0100<BR>From: 
            manstis1@ford.com<BR>To: rules-users@lists.jboss.org<BR><BR>
            <STYLE>.ExternalClass .EC_hmmessage P {
        PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.EC_hmmessage {
        FONT-SIZE: 10pt; FONT-FAMILY: Tahoma
}
</STYLE>

            <DIV dir=ltr align=left><SPAN 
            class=EC_EC_EC_208223809-11042008><FONT face=Arial color=#0000ff>In 
            essence, yes. Have a look at "update" in the manual (and a read on 
            Shadow Facts will probably be useful too).</FONT></SPAN></DIV><BR>
            <BLOCKQUOTE style="MARGIN-RIGHT: 0px">
              <DIV class=EC_EC_EC_OutlookMessageHeader lang=en-us dir=ltr 
              align=left>
              <HR>
              <FONT face=Tahoma><B>From:</B> rules-users-bounces@lists.jboss.org 
              [mailto:rules-users-bounces@lists.jboss.org] <B>On Behalf Of 
              </B>Jonathan Guéhenneux<BR><B>Sent:</B> 11 April 2008 
              10:24<BR><B>To:</B> Rules Users List<BR><B>Subject:</B> RE: 
              [rules-users] Synch Business Object / Working 
              Memory<BR></FONT><BR></DIV>
              <DIV></DIV>yes, i made a mistake. its a.setE(...) and not 
              c.setE(...).<BR><BR>I don't call update. If I dont call update, 
              properties of an object are just read one time for all 
              rules?<BR><BR><BR>
              <BLOCKQUOTE>
                <HR>
                Subject: RE: [rules-users] Synch Business Object / Working 
                Memory<BR>Date: Fri, 11 Apr 2008 09:47:43 +0100<BR>From: 
                manstis1@ford.com<BR>To: rules-users@lists.jboss.org<BR><BR>
                <STYLE>.ExternalClass .EC_hmmessage P {
        PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.EC_hmmessage {
        FONT-SIZE: 10pt; FONT-FAMILY: Tahoma
}
</STYLE>

                <DIV dir=ltr align=left><SPAN 
                class=EC_EC_EC_EC_287464408-11042008><FONT face=Arial 
                color=#0000ff>I guess the example is a simplification as "c" (in 
                RHS) has not been bound to a fact.</FONT></SPAN></DIV>
                <DIV dir=ltr align=left><SPAN 
                class=EC_EC_EC_EC_287464408-11042008><FONT face=Arial 
                color=#0000ff></FONT></SPAN>&nbsp;</DIV>
                <DIV dir=ltr align=left><SPAN 
                class=EC_EC_EC_EC_287464408-11042008><FONT face=Arial 
                color=#0000ff>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.</FONT></SPAN></DIV><BR>
                <BLOCKQUOTE style="MARGIN-RIGHT: 0px">
                  <DIV class=EC_EC_EC_EC_OutlookMessageHeader lang=en-us dir=ltr 
                  align=left>
                  <HR>
                  <FONT face=Tahoma><B>From:</B> 
                  rules-users-bounces@lists.jboss.org 
                  [mailto:rules-users-bounces@lists.jboss.org] <B>On Behalf Of 
                  </B>Jonathan Guéhenneux<BR><B>Sent:</B> 11 April 2008 
                  09:34<BR><B>To:</B> Rules Users List<BR><B>Subject:</B> 
                  [rules-users] Synch Business Object / Working 
                  Memory<BR></FONT><BR></DIV>
                  <DIV></DIV>Hi,<BR><BR>I have two rules :<BR><BR>rule "rule 1 - 
                  1"<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; salience 
                  90<BR>&nbsp;&nbsp;&nbsp; ruleflow-group 
                  "rfg1"<BR>&nbsp;&nbsp;&nbsp; when<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; a : A(<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; eComputed == 
                  "false",<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; c &lt; 15,<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; d &gt;= 
                  75)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  <BR>&nbsp;&nbsp;&nbsp; then<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; c.setE(0);<BR>end<BR><BR><BR><BR>rule "rule 
                  1 - 2"<BR><BR>&nbsp;&nbsp;&nbsp; salience 
                  10<BR>&nbsp;&nbsp;&nbsp; ruleflow-group 
                  "rfg1"<BR>&nbsp;&nbsp;&nbsp; when<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; a : A(<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; eComputed == 
                  "false",<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; c &gt;= 15,<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; d &gt;= 
                  75)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  <BR>&nbsp;&nbsp;&nbsp; then<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; c.setE(1);<BR>end<BR><BR><BR><BR>and part 
                  of the corresponding business code :<BR><BR>public class A 
                  {<BR><BR>&nbsp;&nbsp;&nbsp; ...<BR><BR>&nbsp;&nbsp;&nbsp; 
                  public String getEComputed(){<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp; if(eComputed)<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 
                  &nbsp;&nbsp; return "true";<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 
                  else<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; return 
                  "false";<BR>&nbsp;&nbsp;&nbsp; }<BR><BR>&nbsp;&nbsp;&nbsp; 
                  ...<BR><BR>&nbsp;&nbsp;&nbsp; public void setE(int 
                  e){<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.e = 
                  e;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; eComputed = 
                  true;<BR>&nbsp;&nbsp;&nbsp; }<BR><BR>&nbsp;&nbsp;&nbsp; 
                  ...<BR><BR>}<BR><BR><BR><BR>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.<BR>While debugging, I noticed the getEComputed method was 
                  only called once. I suppose that I should write this 
                  :<BR><BR><BR>rule "rule 1 - 1"<BR>&nbsp;&nbsp;&nbsp; 
                  <BR>&nbsp;&nbsp;&nbsp; salience 90<BR>&nbsp;&nbsp;&nbsp; 
                  ruleflow-group "rfg1"<BR>&nbsp;&nbsp;&nbsp; 
                  when<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; a : 
                  A(<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  eComputed == "false",<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; c &lt; 15,<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; d &gt;= 
                  75)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  <BR>&nbsp;&nbsp;&nbsp; then<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; c.setE(0);<BR>&nbsp;&nbsp;&nbsp; &nbsp; 
                  &nbsp; c.setEComputed("true);<BR>end<BR><BR><BR><BR>rule "rule 
                  1 - 2"<BR><BR>&nbsp;&nbsp;&nbsp; salience 
                  10<BR>&nbsp;&nbsp;&nbsp; ruleflow-group 
                  "rfg1"<BR>&nbsp;&nbsp;&nbsp; when<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; a : A(<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; eComputed == 
                  "false",<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; c &gt;= 15,<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; d &gt;= 
                  75)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
                  <BR>&nbsp;&nbsp;&nbsp; then<BR>&nbsp;&nbsp;&nbsp; 
                  &nbsp;&nbsp;&nbsp; c.setE(1);<BR>&nbsp;&nbsp;&nbsp; &nbsp; 
                  &nbsp; c.setEComputed("true);<BR>end<BR><BR>But I would prefer 
                  another solution. Thanks for help.<BR><BR>
                  <HR>
                  Plus de 15 millions de français utilisent Windows Live 
                  Messenger ! <A href="http://www.windowslive.fr/messenger/" 
                  target=_blank>Téléchargez Messenger, c'est gratuit !</A> 
                </BLOCKQUOTE></BLOCKQUOTE><BR>
              <HR>
              Plus de 15 millions de français utilisent Windows Live Messenger ! 
              <A href="http://www.windowslive.fr/messenger/" 
              target=_blank>Téléchargez Messenger, c'est gratuit !</A> 
            </BLOCKQUOTE></BLOCKQUOTE><BR>
          <HR>
          Tous vos amis discutent sur Messenger, et vous ? <A 
          href="http://www.windowslive.fr/messenger/" target=_blank>Téléchargez 
          Messenger, c'est gratuit !</A> </BLOCKQUOTE></BLOCKQUOTE><BR>
      <HR>
      Tous vos amis discutent sur Messenger, et vous ? <A 
      href="http://www.windowslive.fr/messenger/" target=_blank>Téléchargez 
      Messenger, c'est gratuit !</A> </BLOCKQUOTE></BLOCKQUOTE><BR>
  <HR>
  Discutez gratuitement avec vos amis en vidéo ! <A 
  href="http://www.windowslive.fr/messenger/" target=_new>Téléchargez Messenger, 
  c'est gratuit !</A> </BLOCKQUOTE></BODY></HTML>