filter

기존 목록에 있는 항목 중 필터 조건에 맞는 모든 항목을 포함하는 새 목록을 작성합니다.

filter 표현식에는 다음이 포함되어 있습니다.

일반적으로 listitemexpression에는 목록의 current 항목에 적용될 하나 이상의 계산이 포함되어 있습니다.

필터된 결과에 있는 목록 항목의 상대적 순서는 원래 목록에 있는 목록 항목의 상대적 순서를 유지합니다. 목록의 항목이 필터 조건에 맞지 않으면 비어 있는 목록이 리턴됩니다.

<?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>

    <!-- 이 개인의 배우자 또는
      미혼인 경우 null -->
    <Attribute name="spouse">
      <type>
        <ruleclass name="Person"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- 이 개인의 자녀 -->
    <Attribute name="children">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>



  </Class>



  <Class name="Household">

    <!-- 가정의 모든 사람 -->
    <Attribute name="members">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- 가정의 모든 성인 -->
    <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>

    <!-- 가정의 모든 편부모 -->
    <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>

                  <!-- 배우자 없음 -->
                  <equals>
                    <reference attribute="spouse">
                      <current/>
                    </reference>
                    <null/>
                  </equals>
                  <!-- 한 명 이상의 자녀 -->
                  <not>
                    <property name="isEmpty">
                      <object>
                        <reference attribute="children">
                          <current/>
                        </reference>
                      </object>
                    </property>
                  </not>
                </members>
              </fixedlist>
            </all>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>

  </Class>

</RuleSet>