Thomas,<br>as far as I understood, I don&#39;t have to use update(p), to update it :) After using update method, there is infinite loop in my rules (I am talking about DRL).<br><br># this method doesn&#39;t change CProduct object<br>
rule &quot;Case A&quot;<br>
salience 1<br>
activation-group &quot;g1&quot;<br>
    when<br>
        p : CProduct( name == &quot;A&quot; )<br>
    then<br>
        System.out.println(&quot;Special product: &quot; + p.getName());<br>
end<br><br># this method doesn&#39;t change CProduct object<br>rule &quot;Case B&quot;<br>
salience 1<br>
activation-group &quot;g1&quot;<br>
    when<br>
        p : CProduct( name == &quot;B&quot; )<br>
    then<br>
        System.out.println(&quot;Special product: &quot; + p.getName());<br>
end<br><br># this method changes CProduct object<br>rule &quot;Case general&quot;<br>
salience 0<br>
activation-group &quot;g1&quot;<br>
    when<br>
        p : CProduct(  )<br>
    then<br>        p.setValue(1000);   # changes object&#39;s value<br>                                    # I don&#39;t use update()<br>
        System.out.println(&quot;Normal product: &quot; + p.getName());<br>
end<br><br># this method changes CProduct object<br>rule &quot;New rule&quot;<br>salience 0          # lower salience<br>activation-group &quot;g1&quot;<br>    when<br>        p : CProduct(  )<br>    then<br>        p.setValue(-1);      # I change object&#39;s value<br>
                                   # I don&#39;t use update()<br>        System.out.println(p.getName() + &quot; &quot; + p.getValue());    <br>end<br><br>In program, I use StatelessKnowledgeSession and execute method to use rules on CProduct. And.... All normal products (name != A &amp;&amp; name != B) have value 1000. Not -1. I don&#39;t use update function.<br>
<br>So: I use rules that update my object, but I don&#39;t get what am I to watch out... For each object my activation-group fires only one rule. Rule &quot;New rule&quot; never fires.<br><br>Thanks,<br>tom.<br><br><br><br>
<div class="gmail_quote">2010/7/28 Swindells, Thomas <span dir="ltr">&lt;<a href="mailto:TSwindells@nds.com">TSwindells@nds.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">






<div link="blue" vlink="purple" lang="EN-GB">
<div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">There are two other solutions if you do need the p:</span></p>
<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"><span>1.<span style="font: 7pt &quot;Times New Roman&quot;;">      
</span></span></span><span style="font-size: 11pt; color: rgb(31, 73, 125);">Change your condition to be “name matches $param”, this will match as a regular expressions. Your general case can then be “.*”.</span></p>
<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"><span>2.<span style="font: 7pt &quot;Times New Roman&quot;;">      
</span></span></span><span style="font-size: 11pt; color: rgb(31, 73, 125);">Merge your  p:CProduct across two columns. Have a condition of “this != $param” for the first column and give all the rows in this column the value
 of null. Your second column can be name and then be missing in the general clause. For the general clause this will evaluate to:
</span></p>
<p class="MsoNormal"></p><div class="im">rule &quot;Case general&quot;<br>
salience 0<br>
activation-group &quot;g1&quot;<br>
    when<br></div>
        p : CProduct( this != null  )<div class="im"><br>
    then<br>
        System.out.println(&quot;Normal product: &quot; + p.getName());<br>
end<span style="font-size: 11pt; color: rgb(31, 73, 125);"></span></div>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">which obviously will always evaluate to true for any CProduct.</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">The other general thing you need to watch out for with a spreadsheet of this form is if you have any rules which update CProduct as these rules would then
 be re-evaluated and re-executed again.  In particular if you have any rules of a lower salience that update the name then the activation group doesn’t stop a different rule from being fired – activation groups are only mutually exclusive at a given point in
 time when the activation occurs, they don’t prevent different later re-activations.</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">Thomas</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>
<div style="border-width: medium medium medium 1.5pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color blue; padding: 0cm 0cm 0cm 4pt;">
<div>
<div style="border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; padding: 3pt 0cm 0cm;">
<p class="MsoNormal"><b><span style="font-size: 10pt;" lang="EN-US">From:</span></b><span style="font-size: 10pt;" lang="EN-US"> <a href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a> [mailto:<a href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a>]
<b>On Behalf Of </b>Mauricio Salatino<br>
<b>Sent:</b> 28 July 2010 04:58<br>
<b>To:</b> Rules Users List<br>
<b>Subject:</b> Re: [rules-users] General rules in spreadsheet.</span></p>
</div>
</div><div><div></div><div class="h5">
<p class="MsoNormal"> </p>
<p class="MsoNormal" style="margin-bottom: 12pt;">you can remove p, because in the spreadsheet you are not using it..
<br>
in the rules you use p to print the type of the product but in the spreadsheet you are hardcoding the value in the &quot;what to print&quot; column</p>
<div>
<p class="MsoNormal">2010/7/27 tom ska &lt;<a href="mailto:tiberium.linux@gmail.com" target="_blank">tiberium.linux@gmail.com</a>&gt;</p>
<p class="MsoNormal" style="margin-bottom: 12pt;">Hello,<br>
I want to use StatelessSession with spreadsheet. I wrote few rules in DRL, but I cant do it in spreadsheet. First I want to present rules and class that is used by rules:<br>
<br>
public class CProduct {<br>
<br>
    private String name;<br>
    private int value;<br>
<br>
    public CProduct ()<br>
    {<br>
        name = &quot;empty&quot;;<br>
        value = 0;<br>
    }<br>
    <br>
    public CProduct (String name, int value)<br>
    {<br>
        <a href="http://this.name" target="_blank">this.name</a> = name;<br>
        this.value = value;<br>
    }<br>
        <br>
    public String getName() {<br>
        return name;<br>
    }<br>
    public void setName(String name) {<br>
        <a href="http://this.name" target="_blank">this.name</a> = name;<br>
    }<br>
    public int getValue() {<br>
        return value;<br>
    }<br>
    public void setValue(int value) {<br>
        this.value = value;<br>
    }    <br>
}<br>
<br>
Rules:<br>
<br>
rule &quot;Case A&quot;<br>
salience 1<br>
activation-group &quot;g1&quot;<br>
    when<br>
        p : CProduct( name == &quot;A&quot; )<br>
    then<br>
        System.out.println(&quot;Special product: &quot; + p.getName());<br>
end<br>
<br>
rule &quot;Case B&quot;<br>
salience 1<br>
activation-group &quot;g1&quot;<br>
    when<br>
        p : CProduct( name == &quot;B&quot; )<br>
    then<br>
        System.out.println(&quot;Special product: &quot; + p.getName());<br>
end<br>
<br>
rule &quot;Case general&quot;<br>
salience 0<br>
activation-group &quot;g1&quot;<br>
    when<br>
        p : CProduct(  )<br>
    then<br>
        System.out.println(&quot;Normal product: &quot; + p.getName());<br>
end<br>
<br>
Using stateLessSession, salience, and activation-group I can determine, that only one rule is going to be fired for each CProduct. And with salience param, I can determine priority (it is important to get special products first).<br>

Now I am going to write those rules in spreadsheet. But I can&#39;t define rule &quot;Case general&quot;.<br>
<br>
</p>
<table style="width: 476pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="635">
<tbody>
<tr style="min-height: 9pt;">
<td style="width: 125pt; padding: 0cm; min-height: 9pt;" width="167">
<p class="MsoNormal"> </p>
</td>
<td style="width: 79pt; padding: 0cm; min-height: 9pt;" width="105">
<p class="MsoNormal">CONDITION</p>
</td>
<td style="width: 114pt; padding: 0cm; min-height: 9pt;" width="152">
<p class="MsoNormal">ACTION</p>
</td>
<td style="width: 118pt; padding: 0cm; min-height: 9pt;" width="157">
<p class="MsoNormal">ACTIVATION-GROUP</p>
</td>
<td style="width: 40pt; padding: 0cm; min-height: 9pt;" width="53">
<p class="MsoNormal">PRIORITY</p>
</td>
</tr>
<tr style="min-height: 18.75pt;">
<td style="padding: 0cm; min-height: 18.75pt;">
<p class="MsoNormal"> </p>
</td>
<td style="padding: 0cm; min-height: 18.75pt;">
<p class="MsoNormal">p:CProduct</p>
</td>
<td style="padding: 0cm; min-height: 18.75pt;">
<p class="MsoNormal"> </p>
</td>
<td style="padding: 0cm; min-height: 18.75pt;">
<p class="MsoNormal"> </p>
</td>
<td style="padding: 0cm; min-height: 18.75pt;">
<p class="MsoNormal"> </p>
</td>
</tr>
<tr style="min-height: 29.25pt;">
<td style="width: 125pt; padding: 0cm; min-height: 29.25pt;" width="167">
<p class="MsoNormal"> </p>
</td>
<td style="width: 79pt; padding: 0cm; min-height: 29.25pt;" width="105">
<p class="MsoNormal">name</p>
</td>
<td style="width: 114pt; padding: 0cm; min-height: 29.25pt;" width="152">
<p class="MsoNormal">System.out.println(&quot;$param&quot;);</p>
</td>
<td style="width: 118pt; padding: 0cm; min-height: 29.25pt;" width="157">
<p class="MsoNormal"> </p>
</td>
<td style="width: 40pt; padding: 0cm; min-height: 29.25pt;" width="53">
<p class="MsoNormal"> </p>
</td>
</tr>
<tr style="min-height: 22.5pt;">
<td style="width: 125pt; padding: 0cm; min-height: 22.5pt;" width="167">
<p class="MsoNormal">Rules names</p>
</td>
<td style="width: 79pt; padding: 0cm; min-height: 22.5pt;" width="105">
<p class="MsoNormal">Product name</p>
</td>
<td style="width: 114pt; padding: 0cm; min-height: 22.5pt;" width="152">
<p class="MsoNormal">what to print</p>
</td>
<td style="width: 118pt; padding: 0cm; min-height: 22.5pt;" width="157">
<p class="MsoNormal"> </p>
</td>
<td style="width: 40pt; padding: 0cm; min-height: 22.5pt;" width="53">
<p class="MsoNormal"> </p>
</td>
</tr>
<tr style="min-height: 28.5pt;">
<td style="padding: 0cm; min-height: 28.5pt;">
<p class="MsoNormal">Case A</p>
</td>
<td style="padding: 0cm; min-height: 28.5pt;">
<p class="MsoNormal">A </p>
</td>
<td style="padding: 0cm; min-height: 28.5pt;">
<p class="MsoNormal">Special A</p>
</td>
<td style="padding: 0cm; min-height: 28.5pt;">
<p class="MsoNormal">G1</p>
</td>
<td style="padding: 0cm; min-height: 28.5pt;">
<p class="MsoNormal">1</p>
</td>
</tr>
<tr style="min-height: 21.75pt;">
<td style="padding: 0cm; min-height: 21.75pt;">
<p class="MsoNormal">Case B</p>
</td>
<td style="padding: 0cm; min-height: 21.75pt;">
<p class="MsoNormal">B</p>
</td>
<td style="padding: 0cm; min-height: 21.75pt;">
<p class="MsoNormal">Special B</p>
</td>
<td style="padding: 0cm; min-height: 21.75pt;">
<p class="MsoNormal">G1</p>
</td>
<td style="padding: 0cm; min-height: 21.75pt;">
<p class="MsoNormal">1</p>
</td>
</tr>
<tr style="min-height: 46.5pt;">
<td style="padding: 0cm; min-height: 46.5pt;">
<p class="MsoNormal">General case</p>
</td>
<td style="padding: 0cm; min-height: 46.5pt;"></td>
<td style="padding: 0cm; min-height: 46.5pt;">
<p class="MsoNormal">normal</p>
</td>
<td style="padding: 0cm; min-height: 46.5pt;">
<p class="MsoNormal">G1</p>
</td>
<td style="padding: 0cm; min-height: 46.5pt;">
<p class="MsoNormal">0</p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin-bottom: 12pt;"><br>
But when I am going to use the spreadsheet, I get this error:<br>
<br>
&quot;p cannot be resolved&quot;<br>
<br>
Problem disappears, when I fill &quot;Product name&quot; in &quot;General case&quot;.<br>
<br>
But I want it to be empty, because I want to fire rule &quot;General case&quot; when rules &quot;Case A&quot; &amp; &quot;Case B&quot; won&#39;t fire for any object&#39;s name.<br>
<br>
Thanks, Tom.<br>
<br>
<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a></p>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<br>
-- <br>
 - CTO @ <a href="http://www.plugtree.com" target="_blank">http://www.plugtree.com</a>  <br>
 - MyJourney @ <a href="http://salaboy.wordpress.com" target="_blank">http://salaboy.wordpress.com</a><br>
 - Co-Founder @ <a href="http://www.jbug.com.ar" target="_blank">http://www.jbug.com.ar</a><br>
 <br>
 - Salatino &quot;Salaboy&quot; Mauricio -</p>
</div></div></div>
</div>
<br>
<hr>
<font color="Gray" face="Arial" size="1"><br>
**************************************************************************************<br>
This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the <a href="mailto:postmaster@nds.com" target="_blank">postmaster@nds.com</a> and delete it from your system as well as any copies. The content of e-mails as well as traffic data
 may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary.<br>
<br>
NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00<br>
**************************************************************************************<br>
</font>
</div>

<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br>