Shahad,
 
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.
 
I'm not really up to speed on the LEAPS feature and whether it is being obsoleted...
 
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. 
 
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.
 
There may be other issues from a performance perspective, but ultimately, I think that this workaround is very doable. 
 
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.
 
Regards,
 
Dave


From: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Shahad Ahmed
Sent: Friday, May 11, 2007 8:34 AM
To: rules-users@lists.jboss.org
Subject: [rules-users] Sequential rules algorithm

Does anyone know if there's an efficient way of replicating the Ilog JRules sequential algorithm in Drools?
 
From a (over simplified) users perspective, the JRules 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.
 
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.
 
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.
 
Thanks
Shahad