Felipe, Thanks. I'm working on it.
BTW, I forgot to mention, what you are doing to control rules is a not a good way to do it. You should try agenda-group+lock-on-active rule attributes instead. Look at the conway's game of life as an example, and maybe help us document the feature... :) []s Edson 2007/7/3, Felipe Piccolini <[EMAIL PROTECTED]>:
Edson, Thanks for the reply... it is nasty... Jira created... http://jira.jboss.com/jira/browse/JBRULES-966 Thanks PD: duplicated email because I forgot to cut the huge-company-signature... :) On 03-07-2007, at 14:18, Edson Tirelli wrote: Felipe, Ok, this is a nasty damn bug. :( I'm working on a solution for it right now. May I ask you please to open a JIRA for it and attach your code bellow? Thank you, Edson 2007/7/3, Felipe Piccolini <[EMAIL PROTECTED]>: > > I know I already asked this in a previous email, but no answer and > diferent subject... so I'll ask again > > I have an issue using update in 2 rules that update the same object... a > loop is created even when I try to > avoid the loop adding an extra condition to each rule... Im inserting an > ArrayList as a fact too, so I can check > the extra condition... > > Can anyone tell me how to fix this? > > Consider this: > //-------RULES----------------------------- > package cl.bluesoft.test > > #list any import classes here. > import java.util.List > import java.util.ArrayList > > import cl.bluesoft.test.rules.Fact > > #declare any global variables here > > rule "test update A" > salience 699 > no-loop > when > $f : Fact($n: number > 0) > $list: ArrayList( this excludes "key1") > then > System.out.println("A-fact number1:"+$f.getNumber()+ " list 1:"+$list); > $list.add( "key1"); > $f.setNumber($n + 1); > update ($f); > update ($list); > System.out.println("A-fact number2:" +$f.getNumber()+" list 2:" > +$list); > end > > > rule "test update B" > salience 699 > no-loop > when > $f : Fact($n: number > 1) > $list: ArrayList( this excludes "key2" ) > then > System.out.println( "B-fact number1:"+$f.getNumber()+" list 1:" > +$list); > $list.add("key2" ); > $f.setNumber($n + 1); > update ($f); > update ($list); > System.out.println("B-fact number2:" +$f.getNumber()+" list 2:"+$list); > end > > //-------FACT----------------------------- > public class Fact implements Serializable { > private static final long serialVersionUID = 331627137981862975L; > > private int number; > > public Fact(int number){ > this.number = number; > } > > public Fact(){ > this(0); > } > > /** > * @return the number > */ > public int getNumber() { > return number; > } > > /** > * @param number the number to set > */ > public void setNumber(int number) { > this.number = number; > } > > } > > //------TEST--------- > public class TestUpdateFact implements Serializable { > > private static final long serialVersionUID = -574789596641083743L; > > /** > * @param args > */ > public static void main(String[] args) { > RuleBase ruleBase = RuleBaseFactory.newRuleBase(); > Package pkg = builder.getPackage(); > .... > WorkingMemory session = ruleBase.getStatefulSession(); > ...etc etc... > > List list = new ArrayList(); > > Fact fact1 = new Fact(1); > > session.fireAllRules(); > > ....etc, etc... > > } > > } > > //--------OUTPUT------------ > A-fact number1:1 list 1:[] > A-fact number2:2 list 2:[key1] > B-fact number1:2 list 1:[key1] > B-fact number2:3 list 2:[key1, key2] > A-fact number1:3 list 1:[key1, key2] > A-fact number2:4 list 2:[key1, key2, key1] > B-fact number1:4 list 1:[key1, key2, key1] > B-fact number2:5 list 2:[key1, key2, key1, key2] > A-fact number1:5 list 1:[key1, key2, key1, key2] > A-fact number2:6 list 2:[key1, key2, key1, key2, key1] > B-fact number1:6 list 1:[key1, key2, key1, key2, key1] > B-fact number2:7 list 2:[key1, key2, key1, key2, key1, key2] > A-fact number1:7 list 1:[key1, key2, key1, key2, key1, key2] > A-fact number2:8 list 2:[key1, key2, key1, key2, key1, key2, key1] > B-fact number1:8 list 1:[key1, key2, key1, key2, key1, key2, key1] > > .... for ever..... > > So I have a loop... only when I use update and both rules... condition > about the > list not containing "key1" and "key2" seems not properly chequed... I > dont know... > > Can somebody help me? Am I missing something here? > > Thanks. > > > * Felipe Piccolini M.* > [EMAIL PROTECTED] > > > > > > _______________________________________________ > rules-users mailing list > [EMAIL PROTECTED] > https://lists.jboss.org/mailman/listinfo/rules-users > > -- Edson Tirelli Software Engineer - JBoss Rules Core Developer Office: +55 11 3529-6000 Mobile: +55 11 9287-5646 JBoss, a division of Red Hat @ www.jboss.com _______________________________________________ rules-users mailing list [EMAIL PROTECTED] https://lists.jboss.org/mailman/listinfo/rules-users *Felipe Piccolini M.* [EMAIL PROTECTED] _______________________________________________ rules-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-dev
-- Edson Tirelli Software Engineer - JBoss Rules Core Developer Office: +55 11 3529-6000 Mobile: +55 11 9287-5646 JBoss, a division of Red Hat @ www.jboss.com
_______________________________________________ rules-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-dev
