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(a)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(a)lists.jboss.org [
mailto:rules-users-bounces@lists.jboss.org<rules-users-bounces@lists.jboss.org>]
*On Behalf Of *Shahad Ahmed
*Sent:* Friday, May 11, 2007 8:34 AM
*To:* rules-users(a)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@lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users