filter

Dieser Ausdruck erstellt eine neue Liste mit allen Einträgen aus einer vorhandenen Liste, die die Filterbedingung erfüllen.

Der Ausdruck filter enthält Folgendes:

Der Ausdruck listitemexpression enthält normalerweise eine oder mehrere Berechnungen, die auf das Element "current" (siehe current) in der Liste angewendet werden.

Die relative Reihenfolge der Listeneinträge in der gefilterten Liste behält die relative Reihenfolge der Listeneinträge in der ursprünglichen Liste bei. Falls keiner der Einträge in der Liste die Filterbedingung erfüllt, wird eine leere Liste zurückgegeben.

<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_filter"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">
  <Class name="Person">

    <Attribute name="age">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- The spouse of this person, or
      null if unmarried -->
    <Attribute name="spouse">
      <type>
        <ruleclass name="Person"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- The children of this person -->
    <Attribute name="children">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>



  </Class>



  <Class name="Household">

    <!-- All the people in the household -->
    <Attribute name="members">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- All the adults in the household -->
    <Attribute name="adultMembers">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <reference attribute="members"/>
          </list>
          <listitemexpression>
            <compare comparison=">=">
              <reference attribute="age">
                <current/>
              </reference>
              <Number value="18"/>
            </compare>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>

    <!-- All the lone parents in the household -->
    <Attribute name="loneParents">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <reference attribute="members"/>
          </list>
          <listitemexpression>
            <all>
              <fixedlist>
                <listof>
                  <javaclass name="Boolean"/>
                </listof>
                <members>

                  <!-- No spouse -->
                  <equals>
                    <reference attribute="spouse">
                      <current/>
                    </reference>
                    <null/>
                  </equals>
                  <!-- At least one child -->
                  <not>
                    <property name="isEmpty">
                      <object>
                        <reference attribute="children">
                          <current/>
                        </reference>
                      </object>
                    </property>
                  </not>
                </members>
              </fixedlist>
            </all>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>

  </Class>

</RuleSet>