correct, 5 objects, and "m" would be bound to the first one. Also, it would
happen for all the combinations of the 5 messages (probably not exactly what
you want !).

I have updated the wiki (wiki is being edited as more and more doco goes
into the manual). As always, feel free to add to the wiki, corrections,
notes, gotchas etc... it all helps !

Michael.

On 4/18/06, Yuesong Wang <[EMAIL PROTECTED]> wrote:
>
> Thanks for the replies. I'm just pointing out a
> difference in behavior. What Edson said explained why.
> Given that explanation though, I'm afraid this example
> rule from the wiki is no longer what it is meant to
> demonstrate:
>
> rule "Hello World"
>   when
>     m : Message(list contains "hello")
>     Message(message == "hola")
>     Message(number > 40)
>     Message(birthday > "10-Jul-1974")
>     Message(message matches ".*ho.*")
>   then
>     System.out.println("hello world " +
> m.getMessage());
>     m.setFired(true);
> end
>
> If I understand it correctly, for this rule to fire,
> five Message objects need to be inserted.
>
> I agree with Michael that eval can be used as a
> workaround.
>
> Yuesong
>
> --- Michael Neale <[EMAIL PROTECTED]> wrote:
>
> > OK I thought this may cause an issue.
> >
> > As Yuesong said, it was handy to be able to spread
> > conditions across lines
> > (sentences in DSLs) as it made it more readable. Now
> > when we do that, it
> > won't work.
> > So what do we do? Allow the identity cross product?
> > In simple cases, yes it does make things easier, but
> > I think in practice,
> > the benefit of removing the cross product will save
> > people a lot of hassle.
> >
> > The case Yuesong mentions is valid though, as in you
> > may want to just keep
> > adding "stand alone" constraints to a fact. But in
> > that case, (with RC1) if
> > you added one more Message to working memory, then
> > suddenly you would see
> > "wierd" behaviour (as you are getting all possible
> > matches). Hence I think
> > that removing the cross products is probably the
> > most desirable behaviour.
> > And also, it is possible to do what is required by
> > Yuesong via a work around
> > with "eval" adding more constraints - its not
> > optimal (it is a work around)
> > but in simple cases it may be fine.
> > As always if we get enough pressure, we can make
> > this configurable
> > behaviour. But from Drools 2.x experience, we get a
> > LOT of confusion over
> > the cross product stuff, and this saves a lot of
> > hassle.
> >
> >
> > On 4/18/06, Edson Tirelli
> > <[EMAIL PROTECTED]> wrote:
> > >
> > >    Actually, there is one thing that changed and
> > might affect this use
> > > case:
> > > it is the filter on identity cross product.
> > >
> > >    Before RC2, if you had a Rule with 2 columns of
> > the same type, like the
> > > rule you wrote bellow, every object in the working
> > memory of that type,
> > > would try to match against itself. So, for
> > instance, if you had asserted
> > > two
> > > messages (m1 and m2) in the working memory for
> > this rule, the activations
> > > would be:
> > >
> > > [m1, m1]
> > > [m1, m2]
> > > [m2, m1]
> > > [m2, m2]
> > >
> > >    In RC2, we added an identity removal constraint
> > to not allow identity
> > > activations like [m1, m1] and [m2, m2].
> > >
> > >    So, what is probably happening to you is that
> > you are asserting a
> > > single
> > > message object in the working memory. Before RC2,
> > it would create an
> > > activation for [m1, m1] and now it does not
> > creates anymore.
> > >    As Mark said, this is probably and error when
> > writing the rule, as the
> > > rule should have only one column, not two. A
> > better way to write this rule
> > > would be:
> > >
> > >    rule "Hello World"
> > >      when
> > >        m : Message( status == Message.HELLO,
> > message == "Hello World" )
> > >      then
> > >        System.out.println( "fired" );
> > >    end
> > >
> > >     This way, each single message object asserted
> > into working memory that
> > > matches the constraints, will cause an activation.
> > >
> > >    []s
> > >    Edson
> > >
> > >
> > > ----- Original Message -----
> > > From: "Mark Proctor" <[EMAIL PROTECTED]>
> > > To: <user@drools.codehaus.org>
> > > Sent: Monday, April 17, 2006 4:26 PM
> > > Subject: Re: [drools-user] RC2
> > >
> > >
> > > >   package com.sample
> > > >   import com.sample.DroolsTest.Message;
> > > >   rule "Hello World"
> > > >     when
> > > >       m : Message( status == Message.HELLO )
> > > >       Message( message == "Hello World" )
> > > >     then
> > > >       System.out.println( "fired" );
> > > >   end
> > > >
> > > > That's filtering on two columns, its like doing
> > this in SQL:
> > > > select * from Message, Message
> > > > Not what most people want. This hasn't changed
> > in any of the releases
> > > > in Drools 3.0
> > > >
> > > > Mark
> > > >
> > > > Yuesong Wang wrote:
> > > > > Thanks for the great job on RC2. Solved a lot
> > of my
> > > > > problem :)
> > > > >
> > > > > The following rule, however, does not work in
> > RC2
> > > > > anymore...
> > > > >
> > > > >   package com.sample
> > > > >   import com.sample.DroolsTest.Message;
> > > > >   rule "Hello World"
> > > > >     when
> > > > >       m : Message( status == Message.HELLO )
> > > > >       Message( message == "Hello World" )
> > > > >     then
> > > > >       System.out.println( "fired" );
> > > > >   end
> > > > >
> > > > > So the field constraints have to be in the
> > sample
> > > > > column? like
> > > > >
> > > > >   m:Message(status==0, message=="Hello World")
> > > > >
> > > > > That is probably no good, especially for
> > someone who
> > > > > wants to use DSL and map individul conditions
> > to
> > > > > separate sentences.
> > > > >
> > > > > Yuesong
> > > > >
> > > > >
> > __________________________________________________
> > > > > Do You Yahoo!?
> > > > > Tired of spam?  Yahoo! Mail has the best spam
> > protection around
> > > > > http://mail.yahoo.com
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > No virus found in this incoming message.
> > > > Checked by AVG Free Edition.
> > > > Version: 7.1.385 / Virus Database: 268.4.2/314 -
> > Release Date: 16/4/2006
> > > >
> > > >
> > >
> > >
> >
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>

Reply via email to