our conflict resolution strategy is salience+ lifo. That means the last created Activation fires first. For Activations created for the same working memory action the lifo would be considered arbitrary - however the implementation dictates that assertion order does affect the join attempts and thus the activation order - this is how we get Miss Manners to work in Drools 3.0. This is written up in detail at the end of the Drools 3.0 manual.

Mark
Paul Smith wrote:
I'm trying to understand the differences between how Drools 3.0 decides if a
rule is to fire or not and how Drools 2 did it. In drools 2 part of the
decision was down to the <parameter> node in the drl xml that listed the
objects applicable for that rule. In drools 3 there isn't one. From what I
can gather it seems to be a case of what ojbects are evaluated in the 'when'
(LHS). Is this the case? If so is the order that you assert the objects into
working memory important? ie) does it have to correspond to the order that
you evaluate them in the rule eg)

rule "Country code must be entered"

    when
        Object1(attr1 == "1")
        Object2(attr1 == "1")
    then
        System.out.println("do something");
end

must be asserted into working memory in the order Objec1, Object2 or is it
unimportant?


Reply via email to