[rules-users] NESTED LOOPS Possible
Wolfgang Laun
wolfgang.laun at gmail.com
Sat Jul 21 04:21:20 EDT 2012
On 21/07/2012, salt <writemesaltworth at gmail.com> wrote:
> Hi Laune,
>
> Thanks for your comments. But i am not allowed to use eval() as that also
> might have performance issues.
Who forbids this? Bah.
> Actually this is my problem,
>
> $order:Order() Transaction() from $order.transaction
>
> if the list contains A,B,C,D,E,F
Not very lucid.
>
> Please let me know whether nested loops are possible.
There are no "loops" in DRL in the sense you appear to be thinking,
i.e., procedurally.
Here's how to do it:
function boolean cd( List list, Integer c, Integer d ){
int cPos = list.indexOf( c );
return cPos != -1 ? list.subList(cPos+1, list.size()).indexOf d)
!= -1 : false;
}
rule cd
when
$l: List()
Pair( $c: c, $d: d )
eval( cd( $l, $c, $d ) )
then
end
This takes, on the average, 0.000014s (2.80GHz) per evaluation for
random combinations of elements that are actually in the list (and a
little less if one or both aren't contained). List length doesn't
really matter; for a list with 1000 elements the average is 0.000016s.
-W
>
> Thanks for your support.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/NESTED-LOOPS-Possible-tp4018811p4018814.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
More information about the rules-users
mailing list