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