지정된 정렬 순서에 따라 기존 목록의 구성원을 정렬하여 새 목록을 작성합니다.
sort 표현식은 다음을 지정합니다.
정렬할 기존 목록(영향을 받지 않는 목록)입니다.
목록을 정렬하는 순서입니다.
sortorder는 각각 정렬할 항목과 정렬 순서(오름차순 또는 내림차순)를 지정하는 하나 이상의 sortitem을 지정합니다.
sortitem은 가장 중요한 항목을 가장 먼저 나열합니다. 정렬할 두 항목이 동일한 경우에 한해서만 보다 중요한 sortitem을 구분하기 위해 sortitem이 평가됩니다.
각 sortitem에서 current를 사용하여 정렬 중인 목록 항목을 참조할 수 있습니다. 일반적으로 각 sortitem은 current 목록 항목의 일부 속성 또는 계산을 참조합니다.
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>