<br>&nbsp;&nbsp; Sorry, my mistake. &quot;this&quot; is a reserved word in java (duh!!), and so you need to use your own binding:<br><br>m : Message( $message1 : message )<br>mdup : Message($message2:message==$message1,eval(mdup != m) )
<br><br>&nbsp;&nbsp; You can&#39;t use mvel dialect, because in MVEL the operators &quot;==&quot; and &quot;!=&quot; will call the equals() method anyway.<br>&nbsp;&nbsp; Other than that, it is working just fine for me:<br><br>rule &quot;Find duplicates&quot;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; salience 10<br>&nbsp;&nbsp;&nbsp; when<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $f1 : Message( $m1 : message )<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $f2 : Message( $m2 : message == $m1, eval( $f1 != $f2 ) )<br>&nbsp;&nbsp;&nbsp; then<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( &quot;FIRED DUPLICATE:&quot; );
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( &quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f1 = &quot;+$f1+&quot; [ message=&quot;+$m1+&quot; ]&quot;&nbsp; );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( &quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f2 = &quot;+$f2+&quot; [ message=&quot;+$m2+&quot; ]&quot;&nbsp; );<br>end
<br><br>rule &quot;Find differents&quot;<br>&nbsp;&nbsp;&nbsp; when<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $f1 : Message( $m1 : message )<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $f2 : Message( $m2 : message != $m1 )<br>&nbsp;&nbsp;&nbsp; then<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( &quot;FIRED DIFFERENT:&quot; );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( &quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f1 = &quot;+$f1+&quot; [ message=&quot;+$m1+&quot; ]&quot; );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( &quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f2 = &quot;+$f2+&quot; [ message=&quot;+$m2+&quot; ]&quot;&nbsp; );<br>end<br><br>
&nbsp;&nbsp;&nbsp; The code to insert facts is:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Message message1 = new Message();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message1.setMessage(&nbsp; &quot;Hello World&quot; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; workingMemory.insert( message1 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Message message2 = new Message();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message2.setMessage(&nbsp; &quot;Hello World&quot; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; workingMemory.insert( message2 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Message message3 = new Message();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message3.setMessage(&nbsp; &quot;Hello Bob&quot; );
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; workingMemory.insert( message3 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; workingMemory.fireAllRules();&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; And the result is:<br><br>FIRED DUPLICATE:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f1 = com.sample.DroolsTest$Message@1b06041 [ message=Hello World ]
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f2 = com.sample.DroolsTest$Message@1a001ff [ message=Hello World ]<br>FIRED DUPLICATE:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f1 = com.sample.DroolsTest$Message@1a001ff [ message=Hello World ]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f2 = com.sample.DroolsTest$Message@1b06041
 [ message=Hello World ]<br>FIRED DIFFERENT:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f1 = com.sample.DroolsTest$Message@1c6572b [ message=Hello Bob ]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f2 = com.sample.DroolsTest$Message@1b06041 [ message=Hello World ]<br>FIRED DIFFERENT:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f1 = 
com.sample.DroolsTest$Message@1b06041 [ message=Hello World ]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f2 = com.sample.DroolsTest$Message@1c6572b [ message=Hello Bob ]<br>FIRED DIFFERENT:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f1 = com.sample.DroolsTest$Message@1c6572b [ message=Hello Bob ]
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f2 = com.sample.DroolsTest$Message@1a001ff [ message=Hello World ]<br>FIRED DIFFERENT:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f1 = com.sample.DroolsTest$Message@1a001ff [ message=Hello World ]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $f2 = com.sample.DroolsTest$Message@1c6572b
 [ message=Hello Bob ]<br><br>&nbsp;&nbsp;&nbsp; []s<br>&nbsp;&nbsp;&nbsp; Edson<br><br><div><span class="gmail_quote">2007/11/14, Sikkandar Nawabjan &lt;<a href="mailto:Sikkandar.Nawabjan@ust-global.com">Sikkandar.Nawabjan@ust-global.com</a>&gt;:</span>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">i just use this sort of rule<br><br>rule &quot;Hello World&quot;<br><br>dialect &quot;mvel&quot;
<br><br>when<br><br>m : Message( $message1 : message )<br><br>mdup : Message($message2:message==$message1,eval(this!=m) )<br><br>then<br><br>System.out.println(&quot;Rule Fired1111&quot;+m +&quot;::&quot;+mdup );<br><br>System.out.println
(&quot;Rule Fired&quot;+$message1 +&quot;::&quot;+$message2 );<br><br>end<br><br><br><br>if i put rule parameter dialect &quot;MVEL&quot;&nbsp;&nbsp;the error &quot;this should be used in static context&quot; is gone. But now the rule is firing whatever may be the data
<br><br>i assert 2 objects with message Hello and Hello11111.<br><br>still the rule is firing(2 times).<br><br>Thanks and regs,<br><br>basha<br><br><br><br><br>Message: 1<br>Date: Wed, 14 Nov 2007 09:48:02 -0200<br>From: &quot;Edson Tirelli&quot; &lt;
<a href="mailto:tirelli@post.com">tirelli@post.com</a>&gt;<br>Subject: Re: [rules-users] RE: how to find duplicate inlineeval<br>To: &quot;Rules Users List&quot; &lt;<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org
</a>&gt;<br>Message-ID:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="mailto:e6dd5ba30711140348p6da77e64kdac90cd313b5aa80@mail.gmail.com">e6dd5ba30711140348p6da77e64kdac90cd313b5aa80@mail.gmail.com</a>&gt;<br>Content-Type: text/plain; charset=&quot;iso-8859-1&quot;
<br><br>&nbsp;&nbsp; Sorry, you lost me. What is the error message?<br>&nbsp;&nbsp; Can you send us a self contained test showing the problem you are having?<br><br>&nbsp;&nbsp; []s<br>&nbsp;&nbsp; Edson<br><br>2007/11/14, Sikkandar Nawabjan &lt;<a href="mailto:Sikkandar.Nawabjan@ust-global.com">
Sikkandar.Nawabjan@ust-global.com</a>&gt;:<br>&gt;<br>&gt; Edson,<br>&gt;<br>&gt; As you said i used inline eval. But am getting erroe message like this<br>&gt; can&#39;t be used in static <a href="http://context.am">context.am
</a> using statelesssession to assert my<br>&gt; objects.<br>&gt;<br>&gt; i also put eval(this!=obj1) as follows.<br>&gt;<br>&gt;&nbsp;&nbsp; $obj1:Object1($id:id,$name:name)<br>&gt;&nbsp;&nbsp; $obj2:Object1(id==$id,$name:name==$name, eval( this!=$obj1
<br>&gt; ))&nbsp;&nbsp;eval($obj2!=&nbsp;&nbsp;$obj1)<br>&gt;<br>&gt; Though my references are different the rule is not firing<br>&gt;<br>&gt;<br>&gt; Thanks and Regs<br>&gt;<br>&gt; Basha<br>&gt;<br>&gt; From: <a href="mailto:rules-users-bounces@lists.jboss.org">
rules-users-bounces@lists.jboss.org</a> on behalf of Edson Tirelli<br>&gt; Sent: Tue 11/13/2007 9:35 PM<br>&gt; To: Rules Users List<br>&gt; Subject: Re: [rules-users] RE: how to find duplicate<br>&gt;<br>&gt;<br>&gt;<br>
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;Sikkandar,<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;The only way to check for identity is to use an inline eval and use<br>&gt; java code to check that:<br>&gt;<br>&gt; when<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj1:Object1($id:id,$name:name)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj2:Object1(id==$id,$name:name==$name, eval( this!=$obj1 ))
<br>&gt; then<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;Another option is to configure your rulebase to not allow the same<br>&gt; object to be matched by more than one pattern in your rules. To do that you<br>&gt; can either set a system property:
<br>&gt;<br>&gt; drools.removeIdentities = true<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Or you can use drools API:<br>&gt;<br>&gt; RuleBaseConfiguration conf = new RuleBaseConfiguration();<br>&gt; conf.setRemoveIdentities( true );<br>&gt; RuleBase rulebase = 
RuleBaseFactory.newRuleBase( conf );<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; If you do that, your rule can be written as this:<br>&gt;<br>&gt; when<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj1:Object1($id:id,$name:name)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj2:Object1(id==$id,$name:name==$name)
<br>&gt; then<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;Since the engine will never allow the same fact to simultaneously match<br>&gt; both patterns.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;[]s<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;Edson<br><br><br><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">https://lists.jboss.org/mailman/listinfo/rules-users
</a><br><br><br></blockquote></div><br><br clear="all"><br>-- <br>&nbsp;&nbsp;Edson Tirelli<br>&nbsp;&nbsp;Software Engineer - JBoss Rules Core Developer<br>&nbsp;&nbsp;Office: +55 11 3529-6000<br>&nbsp;&nbsp;Mobile: +55 11 9287-5646<br>&nbsp;&nbsp;JBoss, a division of Red Hat @ 
<a href="http://www.jboss.com">www.jboss.com</a>