sort

지정된 정렬 순서에 따라 기존 목록의 구성원을 정렬하여 새 목록을 작성합니다.

sort 표현식은 다음을 지정합니다.

sortorder는 각각 정렬할 항목과 정렬 순서(오름차순 또는 내림차순)를 지정하는 하나 이상의 sortitem을 지정합니다.

sortitem은 가장 중요한 항목을 가장 먼저 나열합니다. 정렬할 두 항목이 동일한 경우에 한해서만 보다 중요한 sortitem을 구분하기 위해 sortitem이 평가됩니다.

sortitem에서 current를 사용하여 정렬 중인 목록 항목을 참조할 수 있습니다. 일반적으로 각 sortitemcurrent 목록 항목의 일부 속성 또는 계산을 참조합니다.

sortitem과 관련하여 목록에 있는 두 개 이상의 항목이 동일한 경우 소스 목록의 상대적 순서와 동일한 순서로 리턴됩니다.

sort 표현식의 동작은 SQL의 ORDER BY절과 비슷합니다.

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

    <Attribute name="members">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- 구성원을 나이 순서로(최고령자에서 최연소자 순으로) 배열합니다.
         나이가 같은 구성원은 이름을 사용하여
         알파벳순으로 배열합니다. -->
    <Attribute name="sortedMembers">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <sort>
          <list>
            <reference attribute="members"/>
          </list>
          <sortorder>
            <sortitem direction="descending">
              <!-- 목록에 있는 개인의 나이 -->
              <reference attribute="age">
                <current/>
              </reference>
            </sortitem>
            <!-- 목록에 있는 개인의 이름 -->
            <sortitem direction="ascending">
              <reference attribute="firstName">
                <current/>
              </reference>
            </sortitem>
          </sortorder>
        </sort>
      </derivation>
    </Attribute>

  </Class>

  <Class name="Person">

    <Initialization>
      <Attribute name="firstName">
        <type>
          <javaclass name="String"/>
        </type>
      </Attribute>
      <Attribute name="age">
        <type>
          <javaclass name="Integer"/>
        </type>
      </Attribute>
    </Initialization>

  </Class>

</RuleSet>