Ok, I'm still working on that, I'll publish my solution asap. In the meantime
it turns out our requirements need something more than that. We have an
ordered list of beans (items) and we have to be able to modify a specific
subset of the list (adding a discount). Now I tried to solve this problem by
working directly on the list of items. But I can't understand why this
doesn't work:
when
$itemList : ArrayList() from collect( Item( category == "VIDEO" ) )
then
ItemDiscount disc = new ItemDiscount(10);
$myFirstItem = (Item)$itemList.get(0);
$mySecondItem = (Item)$itemList.get(1);
$myFirstItem.addDiscount(disc);
$mySecondItem.addDiscount(disc);
After executing this rule it's like nothing happened! I mean no discount has
been added to the two items! The problem seems to be related to extracting
items from the list. Apparently, every time we get an item from the list, it
looses its link with the original item (I don't know if it's a copy of the
original item or whatever), so that every update doesn't affect the original
item any more. But of course that's what we're interested in! We want to
modify original items in the rule session. Am I missing something? Or Is it
a bug?
Regards,
CG
Edson Tirelli-3 wrote:
Please, share with us! Send to the list!
Edson
2007/8/21, pentarious <cristiano.giuffrida(a)gmail.com>:
>
>
> I found an interesting implementation to do that. If anyone is interested
> I
> could share my solution.
>
> Regards,
>
> CG
>
>
> Mark Proctor wrote:
> >
> > There is no supported way to do this. You could use an inline-eval
> > against a global, but that is very clunkey. However it does seem like a
> > good feature idea for a future release, open a jira and I'll look into
> > getting it included.
> >
> > Mark
> > pentarious wrote:
> >> Does anyone know a method to limit the number of results from a
> collect
> >> statement? I was just wondering how to do something like this:
> >> $myList : List() from collect( MyObject(myField == "something") )
> limit
> 3
> >> //it should put in $myList just the first 3 objects retrieved
> >> I'm quite sure there is nothing in Drools which can natively support
> >> something like that. So, how to do that, if needed? I tried this, but
> it
> >> seems not to be working (I can't understand why, though):
> >> $myList : List() from collect( MyObject(myField == "something") )
> >> $myObject : MyObject() from $myList
> >> eval( $myList.indexOf($myObject) < 3 )
> >> Indeed, it doesn't work because the link beetween $myList and
> $myObject
> >> seems to be released during any execution of the rule (In fact
> >> $myList.contains($myObject) returns false! Again, I can't understand
> >> why...)
> >>
> >> Any advice would be really appreciated!
> >>
> >> Regards,
> >>
> >> CG
> >>
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
> --
> View this message in context:
>
http://www.nabble.com/How-to-limit-results-from-a-collect-statement-tf423...
> Sent from the drools - user mailing list archive at
Nabble.com.
>
> _______________________________________________
> 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 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
View this message in context:
http://www.nabble.com/How-to-limit-results-from-a-collect-statement-tf423...
Sent from the drools - user mailing list archive at
Nabble.com.