<div>Dave,</div>
<div> </div>
<div>Thanks for the suggestions. I think giving each rule in the sequence the same activation-group (I may have incorrectly said agenda-group in my original email) would be a bit like the semaphore you described. When one rule in an activation-group fires then all the other rules in the group are disabled. I'll give this a try and see what the performance is like.
</div>
<div> </div>
<div>I'm actively looking into what would be involved in adding a sequential mode to Drools. I've been using commercial rules engines like Ilog JRules in various projects for a couple of years, but the latest addition to Drools such as a BRMS and Ruleflow (with GUI) has definitely made me take Drools much more seriously as a "contender" in the business rules space.
</div>
<div> </div>
<div>Regards,</div>
<div>Shahad<br> </div>
<div> </div>
<div><span class="gmail_quote">On 5/11/07, <b class="gmail_sendername">Hamu, Dave</b> <<a href="mailto:Dave.Hamu@avnet.com">Dave.Hamu@avnet.com</a>> wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">Shahad,</font></span></div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2"></font></span> </div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">In addition to using salience, you would also need to use a semaphore. I am not sure JBoss (Mark P., et. al.) have implemented a "sequential mode" which is a feature that is provided by both JRules and Blaze Advisor (among others); however, that would be a nice feature to add to the rules engine. It seems that without massive changes to the product, they could allow a rule-base to be loaded with a "sequential-mode" property in which case, the RETE engine would be disabled.
</font></span></div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2"></font></span> </div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">I'm not really up to speed on the LEAPS feature and whether it is being obsoleted... </font></span></div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2"></font></span> </div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">However, I just read Mark's response and I respectfully disagree... I believe that you can simulate sequential processing with salience and a semaphore. Basically, if the rules in question have a salience order and the working memory is changed using a semaphore construct, then any subsequent rules beyond the first rule that fires would not execute.
</font></span></div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2"></font></span> </div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">So, if I understand the issue that you have, say that there are many thousands of rules, but you want them evaluated in a specific order. Once the first rule fires, you can mark the data as processed and preclude the execution of any additional rules.
</font></span></div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2"></font></span> </div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">There may be other issues from a performance perspective, but ultimately, I think that this workaround is very doable. </font></span></div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2"></font></span> </div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">On the other hand, I applaud Mark's suggestion to have a member of the JRules community take the lead on a sequential-mode algorithm for JRules
4.0... I have been a fan of the Drools/JRules project since the 1.x days and I have witness this project evolve from an intriguing tool-kit to a impressive product and I think that your suggestion is fantastic. Providing this additional feature will further position JRules as a leading contender in the Business Rules space.
</font></span></div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2"></font></span> </div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">Regards,</font></span></div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2"></font></span> </div>
<div dir="ltr" align="left"><span><font face="Arial" color="#0000ff" size="2">Dave</font></span></div><br>
<div lang="en-us" dir="ltr" align="left">
<hr>
<font face="Tahoma" size="2"><b>From:</b> <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a> [mailto:<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">
rules-users-bounces@lists.jboss.org</a>] <b>On Behalf Of </b>Shahad Ahmed<br><b>Sent:</b> Friday, May 11, 2007 8:34 AM<br><b>To:</b> <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-users@lists.jboss.org" target="_blank">
rules-users@lists.jboss.org</a><br><b>Subject:</b> [rules-users] Sequential rules algorithm<br></font><br> </div>
<div><span class="e" id="q_1127bdbe701719f9_1">
<div></div>
<div>Does anyone know if there's an efficient way of replicating the Ilog JRules sequential algorithm in Drools?</div>
<div> </div>
<div>From a (over simplified) users perspective, the <font style="BACKGROUND-COLOR: #ffff00">JRules </font>sequential algorithm takes an ordered list of rules and fires the first rule in the sequence with a valid IF condition. You can also specify a maximum number of rules in a sequence that may fire. If you have a large number of simple rules to be fired in sequence (often precondition validating rules in a complex ruleflow), then the sequential algorithm gives a significant performance gain over the RETE algorithm in JRules.
</div>
<div> </div>
<div>I can see how you might order a set of rules by salience and give then the same agenda group. Then I assume you will get the equivalent "behaviour" to the Ilog sequential algorithm described above. However, before I try this out, I thought I'd ask if anyone has a view on the performance of this approach; and whether there would be anything to be gained by adding a similar sequential algorithm to Drools.
</div>
<div> </div>
<div>I've seen a few Blog posts in the past that suggest that the Ilog sequential algorithm is similar to LEAPS, but I don't know if that's accurate - also LEAPS will no longer be supported on Drools 4.0 development path.
</div>
<div> </div>
<div>Thanks</div>
<div>Shahad</div>
<div> </div>
<div> </div></span></div></div><br>_______________________________________________<br>rules-users mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org
</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" 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>