<div><strong>i expect the result is 530,and define the &quot;no-loop=true&quot; in the rules ,but result is 460,why?</strong></div>
<div><strong>--------------------------------------------------------------------------------------------------------------------------------------------------</strong></div>
<div>my java test code:</div>
<div> </div>
<div><font style="BACKGROUND-COLOR: #ffff99">package org.sample;<br> <br>import org.drools.KnowledgeBase;<br>import org.drools.KnowledgeBaseFactory;<br>import org.drools.builder.KnowledgeBuilder;<br>import org.drools.builder.KnowledgeBuilderError;<br>
import org.drools.builder.KnowledgeBuilderErrors;<br>import org.drools.builder.KnowledgeBuilderFactory;<br>import org.drools.builder.ResourceType;<br>import org.drools.io.ResourceFactory;<br>import org.drools.logger.KnowledgeRuntimeLogger;<br>
import org.drools.logger.KnowledgeRuntimeLoggerFactory;<br>import org.drools.runtime.StatefulKnowledgeSession;<br> </font></div>
<div><font style="BACKGROUND-COLOR: #ffff99">public class SalesTest {</font></div>
<div><font style="BACKGROUND-COLOR: #ffff99"> public static final void main(String[] args) {<br>  try {<br>   // load up the knowledge base<br>   KnowledgeBase kbase = readKnowledgeBase();<br>   StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();<br>
   KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, &quot;test&quot;);<br>   // go !<br>   Sales message = new Sales();<br>   message.setName(&quot;sinboy&quot;);<br>   message.setSales(600);<br>
   ksession.insert(message);<br>   ksession.fireAllRules(); <br>   //ksession.dispose();<br>    <br>   System.out.println(&quot;updated:&quot;+message.getName()+&quot;,&quot;+message.getSales());<br>   logger.close();<br>
  } catch (Throwable t) {<br>   t.printStackTrace();<br>  }<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffff99"> private static KnowledgeBase readKnowledgeBase() throws Exception {<br>  KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();<br>  //kbuilder.add(ResourceFactory.newClassPathResource(&quot;Sample.drl&quot;), ResourceType.DRL);<br>
  kbuilder.add(ResourceFactory.newUrlResource(&quot; </font><a href="http://127.0.0.1:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/org.sample/LATEST"><font style="BACKGROUND-COLOR: #ffff99">http://127.0.0.1:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/org.sample/LATEST</font></a><font style="BACKGROUND-COLOR: #ffff99">&quot;), ResourceType.PKG);<br>
  KnowledgeBuilderErrors errors = kbuilder.getErrors();<br>  if (errors.size() &gt; 0) {<br>   for (KnowledgeBuilderError error: errors) {<br>    System.err.println(error);<br>   }<br>   throw new IllegalArgumentException(&quot;Could not parse knowledge.&quot;);<br>
  }<br>  KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();<br>  kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());<br>  return kbase;<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffff99">}</font><br></div>
<div><strong>the print info is:</strong></div>
<div>
<div>fired1:discount,550<br>fired0:discount,530<br>fired1:discount,480<br>fired0:discount,460<br>updated:discount,460</div></div>
<div>---------------------------------------------------------------------</div>
<div>my java model is :</div>
<div> </div>
<div><font style="BACKGROUND-COLOR: #ffcc99">package org.sample;</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99">import java.util.Date;</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99">public class Sales {<br> private String name;<br> private long sales;<br> private Date dateOfSale;<br> private boolean chocolateOnlyCustomer;</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99"> public String getName() {<br>  return name;<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99"> public void setName(String name) {<br>  <a href="http://this.name">this.name</a> = name;<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99"> public long getSales() {<br>  return sales;<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99"> public void setSales(long sales) {<br>  this.sales = sales;<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99"> public Date getDateOfSale() {<br>  return dateOfSale;<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99"> public void setDateOfSale(Date dateOfSale) {<br>  this.dateOfSale = dateOfSale;<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99"> public boolean isChocolateOnlyCustomer() {<br>  return chocolateOnlyCustomer;<br> }</font></div>
<div><font style="BACKGROUND-COLOR: #ffcc99"> public void setChocolateOnlyCustomer(boolean choclateOnlyCustomer) {<br>  this.chocolateOnlyCustomer = chocolateOnlyCustomer;<br> }<br>}</font></div>
<div> </div>
<div>rules:</div>
<div><font style="BACKGROUND-COLOR: #ff9966">dialect &quot;mvel&quot;<br><font color="#ff0000"><strong>no-loop true</strong></font></font></div>
<div><font style="BACKGROUND-COLOR: #ff9966">rule &quot;DiscountRule&quot;    <br>   salience 9<br>when<br>      $fact0:Sales(s:sales&gt;100)<br>then<br>      #Sales fact0=new Sales();<br>      #fact0.setSales(s.getSales()-10);<br>
      #fact0.setName(&quot;discount&quot;);<br>      #insert(fact0); <br>      <br>      modify($fact0){setName(&quot;discount&quot;)} <br>      modify($fact0){setSales(s-20)} <br>      System.out.println(&quot;fired0:&quot;+$fact0.getName()+<br>
                                &quot;,&quot;+$fact0.getSales());<br>end</font></div>
<div><font style="BACKGROUND-COLOR: #ff9966">rule &quot;DiscountRule2&quot;  <br>   salience 18<br>when<br>      $fact1:Sales(s1:sales&gt;500)<br>then       <br>      modify($fact1){setName(&quot;discount&quot;)}<br>      modify($fact1){setSales(s1-50)}<br>
      System.out.println(&quot;fired1:&quot;+$fact1.getName()+<br>                                &quot;,&quot;+$fact1.getSales());<br>end</font></div>
<div><font style="BACKGROUND-COLOR: #ff9966"></font> </div>
<div><font style="BACKGROUND-COLOR: #ffffff"><strong></strong></font> </div>
<div> </div>