[rules-users] Sequential rules algorithm

Hamu, Dave Dave.Hamu at Avnet.com
Fri May 11 11:54:34 EDT 2007


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 at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Shahad Ahmed
Sent: Friday, May 11, 2007 8:34 AM
To: rules-users at 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
 
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070511/c1d6751f/attachment.html 


More information about the rules-users mailing list