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] *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.0
development path.
Thanks
Shahad
------------------------------------------------------------------------
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users