[rules-users] Sequential rules algorithm

Shahad Ahmed shahad.ahmed2 at gmail.com
Fri May 11 15:30:34 EDT 2007


Yes, it's really the performance I'm interested in emulating. The idea of
using salience and a semaphore (activation-group) will mimic the behavior,
but I suspect not the performance.

Most of applications I've developed using Ilog JRules involve fairly complex
ruleflows (i.e. with may sub-flows) which use a mixture of both RETE and the
sequential algorithm in the same ruleflow. In most cases we don't have to
control the execution order for each rule, but only a subset, and it's nice
to be able to do that within the overall framework of the rules engine and
it's unified modelling, ruleflow and BRMS GUI tools. Increasingly, clients
want to add rules evaluation into real-time customer facing systems where
performance is critical - hence my focus on performance. Consequently, I
think the addition of a sequential mode would be a valuable addition to
JBoss Rules.

I'm actively evaluating how to add such a sequential mode into Drools, as
for me it is an important part of the overall jigsaw of features that will
convince me to use Drools in future commercial projects. If anyone else is
interested, please let me know:)

Regards,
Shahad


On 5/11/07, Mark Proctor <mproctor at codehaus.org> wrote:
>
> I mean't emulate the performance advantange, not the behaviour. Btw it's
> JBoss Rules, or for shorthand JBossRules/JBRules, think ilog might get upset
> if we start calling ourselves JRules :)
>
> I don't believe that sequential mode in either Advisor of JRules is aimed
> at allowing you to specify the fine grained order of each rule execution,
> although ofcourse you could do this with salience, instead its more about
> fast performance execution - there is no agenda, less state stored and no
> support for first order logic - which is a very common use case for decision
> based services. As always if you need to control the execution order of each
> and every rule, you probably shouldn't be using a rule engine.
>
> Mark
> Hamu, Dave wrote:
>
>  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<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.0development path.
>
> Thanks
> Shahad
>
>
>
> ------------------------------
>
> _______________________________________________
> rules-users mailing listrules-users at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070511/0d1c0a4d/attachment.html 


More information about the rules-users mailing list