<br>     Jarowslaw,<br><br>     Could you please open a JIRA for this. I need to investigate.<br>     Thanks,<br><br>     Edson<br><br><div class="gmail_quote">2009/7/1 Jaroslaw Kijanowski <span dir="ltr">&lt;<a href="mailto:kijanowski@gmail.com">kijanowski@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi,<br>
 I&#39;ve configured my knowledge base to use the EQUALITY assertion behaviour.<br>
When I insert two equal facts into the session, only one gets processed (objects and their fact handles are equal).<br>
However when I insert two equal facts via streams, my rule fires twice (objects are equal, but their fact handles are not). Isn&#39;t equality assertion behaviour supported when using streams?<br>
<br>
Here&#39;s my rule and test class:<br>
<br>
package com.sample<br>
import com.sample.Message;<br>
declare Message<br>
  @role( event )<br>
  @timestamp( time )<br>
end<br>
<br>
rule &quot;r&quot;<br>
when<br>
  Message( $i:i) //from entry-point &quot;myStream&quot;<br>
then<br>
  System.out.println( $i );<br>
end<br>
<br>
+++++++++++++++++++++++++++++++++++++++++<br>
<br>
public class Message {<br>
<br>
        private int i;<br>
        private Date time;<br>
//getters, setters, hashcode, equals, constructor<br>
}<br>
<br>
+++++++++++++++++++++++++++++++++++++++++<br>
<br>
public class DroolsTest {<br>
  public static final void main(String[] args) {<br>
    try {<br>
      KnowledgeBase kbase = readKnowledgeBase();<br>
      StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();<br>
<br>
      //WorkingMemoryEntryPoint stream = ksession.getWorkingMemoryEntryPoint(&quot;myStream&quot;);<br>
<br>
      Date d = new Date();<br>
      Message message1 = new Message(1,d);<br>
      FactHandle fh1 = ksession.insert(message1);<br>
      //FactHandle fh1 = stream.insert(message1);<br>
      Message message2 = new Message(1,d);<br>
      FactHandle fh2 = ksession.insert(message2);<br>
      //FactHandle fh2 = stream.insert(message2);<br>
<br>
      if (message1.equals(message2) &amp;&amp; fh1.equals(fh2)){<br>
        System.out.println(&quot;equal&quot;);<br>
      }<br>
      ksession.fireAllRules();<br>
    } catch (Throwable t) {<br>
      t.printStackTrace();<br>
    }<br>
  }<br>
<br>
  private static KnowledgeBase readKnowledgeBase() throws Exception {<br>
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();<br>
    kbuilder.add(ResourceFactory.newClassPathResource(&quot;Sample.drl&quot;), ResourceType.DRL);<br>
    if (kbuilder.getErrors().size() &gt; 0) {<br>
      throw new IllegalArgumentException(&quot;Could not parse knowledge.&quot;);<br>
    }<br>
    KnowledgeBaseConfiguration kbaseConfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();<br>
    kbaseConfig.setOption(AssertBehaviorOption.EQUALITY);<br>
    kbaseConfig.setOption(EventProcessingOption.STREAM);<br>
    kbaseConfig.setOption(RemoveIdentitiesOption.YES);<br>
<br>
    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(kbaseConfig);<br>
    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());<br>
    return kbase;<br>
  }<br>
}<br>
<br>
+++++++++++++++++++++++++++++++++++++++++<br>
<br>
Thanks,<br>
 Jarek<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><br>
</blockquote></div><br><br clear="all"><br>-- <br>  Edson Tirelli<br>  JBoss Drools Core Development<br>  JBoss by Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>