<!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: Using Drools as a glorified Hashmap</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">How many match rules do you have?&nbsp; You could always set a single</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8220;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">invalid</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8221;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas"> rule with a low sa</FONT><FONT FACE="Consolas">lience (at least lower than your match rules) that is always true and sets the flag</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas"> that it is invalid.&nbsp; Then put all the rules into the same activation-group so that only one can fire.&nbsp; If the invalid flag is set, that means that the</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8216;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">no match</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8217;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas"> rule was</FONT><FONT FACE="Consolas"> the only one that could have fired.&nbsp; If it matches, the activation-group will prevent the</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Consolas">&#8216;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">no match</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas">&#8217;</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Consolas"> rule from firing</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">------------------------------</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: Tue, 18 May 2010 02:56:21 -0700 (PDT)</FONT></SPAN></P>

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

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Subject: [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;1274176581461-825851.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 Drools users,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">I've got a situation where I've got a list of Drug codes which can only be</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">used for certain prescription codes.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">The traditional method for implementing this is to simply pre-load the</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">values in a static Hashmap.&nbsp; Then if get() returns null, it is not a val</FONT><FONT FACE="Consolas">id</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">combination.&nbsp; O(1), blazingly fast. </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">The issue with using Drools for this, is that Drools can match a code to a</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">code, and mark it as valid, but cannot call it invalid, as another rule may</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">still be relevant.&nbsp; Therefore, using Drools for this would requi</FONT><FONT FACE="Consolas">re marking</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">combinations as valid, and afterwards, doing a linear traversal of the</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">prescriptions to see if there are any combinations that are not valid.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Is this the case?&nbsp; I would like to try implement it in Drools just for the</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">sake of consistency, but it</FONT><FONT FACE="Consolas"> seems a bit of a hack.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Consolas">Thanks,</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-tp825851p825851.html"><SPAN LANG="en-us"><U><FONT COLOR="#0000FF" FACE="Consolas">http://drools-java-rules-engine.46999.n3.nabble.com/Using-Drools-as-a-glorified-Hashmap-tp825851p825851.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>
<BR>

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

</BODY>
</HTML>