[rules-dev] Re: [rules-users] Problem with update(fact)

Edson Tirelli tirelli at post.com
Tue Jul 3 16:40:32 EDT 2007


   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 <felipe.piccolini at bluesoft.cl>:
>
> 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 <felipe.piccolini at bluesoft.cl>:
> >
> > 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.*
> > felipe.piccolini at bluesoft.cl
> >
> >
> >
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > 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
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>                                                                         *Felipe
> Piccolini M.*
> felipe.piccolini at bluesoft.cl
>
>
>
>
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20070703/0af69a81/attachment.html 


More information about the rules-dev mailing list