Michael,
No-loop applies only to the rule triggering itself again in a loop.
So, with the same salience, I would guess (didn't tested) bellow rules
would execute:
R2
R1
R3
Remember, this is non-determinist and could also fire like:
R1
R2
R3
R1
The differences are due to conflict resolution strategies that may be
different.
Having different saliences as the commented ones, I would guess
(didn't tested) that they would fire:
R1
R2
R1
R3
Read about conflict resolution and you will get a few tips on it.
[]s
Edson
Anstis, Michael (M.) wrote:
Hi,
I've noticed some "interesting" behaviour with the use of no-loop and
salience that I wonder if anybody can explain to me?
Given the following rules:-
*package* drools.debug
*rule* "Rule 1- (Fired)"
//salience 500
*no-loop** true*
*when*
$m : Machine ( )
*then*
System.out.println("DEBUG [Rule 1-]---> Do nothing!");
*end*
*rule* "Rule 1a (Fired)"
//salience 400
*no-loop** true*
*when*
$m : Machine ( )
*then*
System.out.println("DEBUG [Rule 1a]---> Setting
Attribute(\"TEST3\") on Machine");
Attribute a =* new* Attribute("TEST1", 100);
$m.setAttribute(a);
* modify*($m);
* assert*(a);
*end*
*rule* "Rule 1b (Fired)"
//salience 300
*no-loop** true*
*when*
$a : Attribute( name == "TEST1" )
$m : Machine ( attribute == $a )
*then*
System.out.println("DEBUG [Rule 1b]---> Found!");
*end*
Assuming only one Machine Fact is present in Working Memory and the
salience lines above are commented out "Rule 1- (Fired)", "Rule 1a
(Fired)" and "Rule 1b (Fired)" are activated and fired once (and once
only). If however the salience values are uncommented rule "Rule 1-
(Fired)" is fired twice (even though it is has the "no-loop"
attribute). If the salience statements remain but have the same value
then the rules only fire once as well (as I'd expect). It appears that
"no-loop" only applies to rules with the same salience. Is this
correct? Can somebody provide some reason as to why this occurs as it
is different to what I'd expect?
With kind regards,
Mike
------------------------------------------------------------------------
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3124-6000
Mobile: +55 11 9218-4151
JBoss, a division of Red Hat @
www.jboss.com