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@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@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
 
 

_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users

 

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users