<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7656.0">
<TITLE>Re: [rules-users] Using Drools as a glorified Hashmap</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Hey Daniel,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">My suggest</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">ion</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas"> was that a single default rule</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas"> could be fired to indicate that the prescription was invalid if all the matching rules failed to create a valid match.&nbsp; </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Example:</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule 1</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule</FONT> <FONT FACE="Consolas">2</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule</FONT> <FONT FACE="Consolas">3</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule</FONT> <FONT FACE="Consolas">4</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule</FONT> <FONT FACE="Consolas">5</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule</FONT> <FONT FACE="Consolas">6</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule</FONT> <FONT FACE="Consolas">7</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule</FONT> <FONT FACE="Consolas">8</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT> <FONT FACE="Consolas">Match Rule</FONT> <FONT FACE="Consolas">9</FONT><FONT FACE="Consolas">, Salience 50, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">No</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">Match Rule 1</FONT><FONT FACE="Consolas">, Salience</FONT> <FONT FACE="Consolas">0, Activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Activation-group allows only one rule to fire from all the rules sharing that activation-group.&nbsp; By putting a positive salience (priority) on</FONT><FONT FACE="Consolas"> all the match rules, if any one of them matches, that</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8217;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">s all that can fire per the activation-group.&nbsp; However, if the No Match rule is fire</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">d</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">, that means that the prescription was no</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">t</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas"> matched by any of the match rules.&nbsp; It is a default.&nbsp; The rule can be as s</FONT><FONT FACE="Consolas">imple as:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Rule</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">No Match</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">s</FONT><FONT FACE="Consolas">alience 0</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">activation-group</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">Match Rules</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">When</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">&nbsp;</FONT> <FONT FACE="Consolas">E</FONT><FONT FACE="Consolas">val(</FONT><FONT FACE="Consolas">true) // Always true</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Then</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">&nbsp; Do your</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">no match</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas"> logic</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">E</FONT><FONT FACE="Consolas">nd</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">The activation-group is doing your</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">heavy lifting</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">, so to speak</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8230;</FONT></SPAN><SPAN LANG="en-us">.</SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">jp</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us">------------------------------------------------------------------------------------------------------------</SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Message: 3</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Date: Wed, 19 May 2010 06:20:39 -0700 (PDT)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">From: djb &lt;dbrownell83@hotmail.com&gt;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Subject: Re: [rules-users] Using Drools as a glorified Hashmap</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">To: rules-users@lists.jboss.org</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Message-ID: &lt;1274275239719-829059.post@n3.nabble.com&gt;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Content-Type: text/plain; charset=us-ascii</FONT></SPAN></P>
<BR>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Hi John, Wolfgang,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Thanks</FONT><FONT FACE="Consolas"> for your suggestions.&nbsp; Though I didn't use either of your suggestions</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">as described, it helped me work it out.&nbsp; I added tokens describing the</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">prescriptions, then as they are matched (using RETE), the tokens are</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">retracted. Then any tokens left over are inva</FONT><FONT FACE="Consolas">lid.&nbsp; It is probably as fast as</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">a HashMap.&nbsp; I don't think John's solution would have worked, because no</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">single rule can determine whether a prescription is invalid.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Regards,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Daniel</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">-- </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">View this message in context:</FONT></SPAN><SPAN LANG="en-us"> </SPAN><A HREF="http://drools-java-rules-engine.46999.n3.nabble.com/Using-Drools-as-a-glorified-Hashmap-tp825851p829059.html"><SPAN LANG="en-us"><U><FONT COLOR="#0000FF" FACE="Consolas">http://drools-java-rules-engine.46999.n3</FONT><FONT COLOR="#0000FF" FACE="Consolas">.nabble.com/Using-Drools-as-a-glorified-Hashmap-tp825851p829059.html</FONT></U></SPAN><SPAN LANG="en-us"></SPAN></A><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Sent from the Drools - User mailing list archive at Nabble.com.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

</BODY>
</HTML>