int nFired = kSession.fireAllRules( 1 );
boolean success = nFired == 1;
-W
2011/5/19 Martin, Matthias <martin(a)adesso.de>
Hello,
in our project we’ve to know, which rules have already been checked,
regardless whether or not the rule gets activated and hence put on the
agenda. Is there any possibility to affect the order, in which the drools
engine reads and checks the LHS of rules? I suppose the assignment of a
salience value has no effect on the load order and is rather a mechanism for
conflict resolving, when a rule is about to be fired.
Background for this demand explained in an nutshell:
We use salience for conflict resolving. The conflicting rule with the
highest salience value should be fired, but the others with minor salience
values mustn’t! In our scenario it can occur, that two (or more) rules might
conflict at runtime. Therefore we want to perceive, which rule for which
fact has already been checked, actually if it gets never activated on the
agenda.
Example:
rule “morespecific”
salience 100
when myObj(variant = Variants.SPECIFIC_1 && fee < 10)
then….
end
rule “general”
salience 30
when myObj(fee < 100)
then….
end
If I set the value for variant to Variants.SPECIFIC_1 and the fee value to
30, for example, the first rule will never make it to the agenda but the
second one does and is actually getting fired because it doesn’t care about
the variants value and 30 is less 100.
We want to perceive the already performed check for “morespecific” for a
specific object und halt the execution of “general”.
Any suggestions are welcome!
Regards,
Matthias Martin
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users