sort

Dieser Ausdruck erstellt eine neue Liste, indem die Einträge einer vorhandenen Liste in einer angegebenen Reihenfolge sortiert werden.

Ein Ausdruck sort gibt Folgendes an:

Der Ausdruck sortorder gibt eines oder mehrere Elemente sortitem an, die jeweils den zu sortierenden Eintrag sowie die Sortierreihenfolge (aufsteigend oder absteigend) angeben.

Die Elemente sortitem sind mit dem höchstwertigsten Element an erster Stelle aufgeführt. Jedes Element sortitem wird nur dann ausgewertet, wenn zwei sortierte Einträge bei höherwertigen Elementen sortitem identisch sind.

Innerhalb jedes Elements sortitem können Sie mit dem Ausdruck "current" (siehe current) auf den sortierten Listeneintrag verweisen. Normalerweise verweist jedes Element sortitem auf ein Attribut oder eine Berechnung im Listeneintrag des Ausdrucks "current" (siehecurrent).

Falls zwei (oder mehr) Einträge in der Liste im Hinblick auf alle Elemente sortitem identisch sind, werden sie in derselben relativen Reihenfolge wie in der Quellenliste zurückgegeben.

Das Verhalten des Ausdrucks sort ähnelt der SQL-Klausel 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>

    <!-- Arranges the members in order of age (oldest to youngest);
         for members which are the same age, the members are
         arranged in alphabetical order by first name. -->
    <Attribute name="sortedMembers">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <sort>
          <list>
            <reference attribute="members"/>
          </list>
          <sortorder>
            <sortitem direction="descending">
              <!-- The age of the person in the list -->
              <reference attribute="age">
                <current/>
              </reference>
            </sortitem>
            <!-- The first name of the person in the list -->
            <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>