[jboss-jira] [JBoss JIRA] (DROOLS-1245) Document limitation of (legacy) Accumulate CE Alternate Syntax: single function with return type

Matteo Mortari (JIRA) issues at jboss.org
Tue Aug 2 12:21:00 EDT 2016


Matteo Mortari created DROOLS-1245:
--------------------------------------

             Summary: Document limitation of (legacy) Accumulate CE Alternate Syntax: single function with return type
                 Key: DROOLS-1245
                 URL: https://issues.jboss.org/browse/DROOLS-1245
             Project: Drools
          Issue Type: Enhancement
          Components: docs
    Affects Versions: 6.4.0.Final
            Reporter: Matteo Mortari
            Assignee: Matteo Mortari


Document limitations and common pitfalls:

h2. from+accumulate does not iterate

This does NOT iterate over the elements of the accumulate function:

{code:java}
rule R when
  $theFrom : Object() from accumulate(MyPerson( $val : name ); 
                                          collectList( $val ) )
then
  list.add($theFrom);
end
{code}

and in fact the binded $theFrom : Object() is the List returned by the collect list.

While normally the "from" iterates over the element of list/iterable collections.

{code:java}
rule R1 when
    $list : List( )
    $s : Integer() from $list
then
    out.add($s);
end
{code}

h2. limited scope of compile-time checks
Compile-time checks are performed for Accumulate Functions returning a single result.
Compile-time checks are NOT performed for iterable Accumulate Functions, the case when the accumulate function returns a collection.
With ref to DROOLS-1243.

For instance this fails at compilation:

{code:java}
rule R when
  $theFrom : BigDecimal() from accumulate(MyPerson( $val : age ); 
                                          sum( $val ) )
then
  list.add($theFrom);
end
{code}

but the following does passes compilation:

{code:java}
rule R when
  $theFrom : String() from accumulate(MyPerson( $val : name ); 
                                          collectList( $val ) )
then
  list.add($theFrom);
end
{code}

only to fail later at runtime with CCE:


{code:java}
Caused by: java.lang.ClassCastException: java.util.Collections$UnmodifiableRandomAccessList cannot be cast to java.lang.String

{code}




--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list