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

Reply via email to