Liste sortieren

Prev Next


Wertauflöser - Kurzfassung

Zweck: Sortiert die Einträge einer als Eingabewert vorliegenden Liste aufsteigend oder absteigend. Optional können hierarchische Sortierkriterien definiert werden, deren Wert-Konfiguration auf alle Listeneinträge angewendet wird.

Tooltip

  • Verwendung: Der Liste sortieren-Wertauflöser sortiert die Einträge einer als Eingabewert vorliegenden Liste unter Berücksichtigung der konfigurierten Parameter. Der Rückgabewert ist immer eine neue Listeninstanz, die alle Einträge aus dem Eingabewert entsprechend der Sortierreihenfolge auflistet.

  • Parameter: Folgende Parameter können optional für eine unbestimmte Anzahl von Sortierkriterien verwendet werden, die hierarchisch mit absteigender Priorität angewendet werden:

    • Der optionale Parameter Vergleichswert kann verwendet werden, um zu definieren, wie für die gegebenen Listeneinträge ein Vergleichswert ermittelt werden soll, der dann anstelle des Listeneintrags zum Sortieren verwendet wird.

    • Die Option Aufsteigend ist per Standard ausgewählt. Sie muss abgewählt werden, um absteigend zu sortieren.

  • Hinweise:

    • Falls kein Eingabewert anliegt, lautet der Rückgabewert $null.

    • Falls der Eingabewert keine Liste ist, wird als Rückgabewert eine Liste erstellt, die als einzigen Eintrag den Eingabewert enthält.

images/download/attachments/169634132/image-2025-3-5_16-18-38-version-1-modificationdate-1741187917982-api-v2.png

Der Liste sortieren-Wertauflöser sortiert die Einträge einer als Eingabewert vorliegenden Liste unter Berücksichtigung von einem oder mehreren hierarchischen Sortierkriterien mit folgenden Parametern:

  • Der optionale Parameter Vergleichswert definiert einen Wertauflöser, der je Listeneintrag angewendet wird, um den für die Sortierung ausschlaggebenden Wert zu ermitteln.

  • Die Option Aufsteigend (per Standard ausgewählt) definiert die Richtung der Sortierung. Sie kann abgewählt werden, wenn eine absteigende Sortierung gewünscht wird.

Der Rückgabewert ist immer eine neue Listeninstanz, die alle Einträge aus dem Eingabewert entsprechend der Sortierreihenfolge auflistet.

Sonderfälle:

  • Falls als Eingabewert "Kein Wert" ($null) vorliegt, lautet auch der Rückgabewert "Kein Wert" ($null).

  • Falls als Eingabewert eine leere Liste ([]) vorliegt, ist auch der Rückgabewert eine leere Liste ([]).

  • Fall als Eingabewert ein Wert vorliegt, der nicht "Kein Wert" ($null) aber auch keine Liste ist, dann wird als Rückgabewert eine Liste mit diesem Wert als einzigem Eintrag erzeugt.

Konfiguration

Über den optionalen Parameter Vergleichswert kann ein Wertauflöser definiert werden, der auf jeden Eintrag im Eingabewert angewendet wird, um einen Vergleichswert für die Sortierung zu ermitteln.

  • Ohne Wertauflöser (Standard) wird der komplette Listeneintrag als Vergleichswert verwendet.

images/download/attachments/169634132/image-2025-3-5_16-28-40-version-1-modificationdate-1741188520403-api-v2.png

Die Option Aufsteigend ist per Standard ausgewählt, was eine aufsteigende Sortierung nach dem Vergleichswert bewirkt.

Wird eine absteigende Sortierung gewünscht, muss die Option Aufsteigend abgewählt werden.

Initial sieht die Konfiguration des Liste sortieren-Wertauflösers ein einziges Sortierkriterium vor.

  • Per Klick auf das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg -Symbol können weitere Sortierkriterien hinzugefügt werden, die eine Hierarchie mit absteigender Priorität aufspannen.

  • Per Klick auf das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/forbidden.svg -Symbol ("Mülltonne") können bestehende Sortierkriterien aus einer Hierarchie entfernt werden, solange mindestens ein Sortierkriterium übrig bleibt.

Der Screenshot rechts zeigt eine Konfiguration mit zwei Suchkriterien:

  • Die Liste wird zunächst absteigend nach dem Wert im created-Feld der Listeneinträge sortiert.

  • Für Einträge, die in diesem Feld übereinstimmen, greift das nachrangige, zweite Suchkriterium, das sich auf das name-Feld der Listeneinträge bezieht und Aufsteigend sortiert.

images/download/attachments/169634132/image-2025-3-5_16-35-18-version-1-modificationdate-1741188917815-api-v2.png

HINWEIS◄ Soweit die Konfiguration in einem Kontext vorgenommen wird, der eine Baumansicht beinhaltet, können ihn dieser Sortierkriterien per Darg & Drop neu angeordnet werden, um deren Priorität in der Hierarchie anzupassen.

  • Im Screenshot rechts ist ein Ausschnitt der Baumansicht zu sehen, in dem das Element sortItems markiert ist, das die Liste der Sortierkriterien darstellt.

  • Die beiden Kind-Elemente mit der Bezeichnung SortedListeItem repräsentieren die Sortierkriterien, wie auch aus deren aufgeklappter Struktur ersichtlich ist. Diese Reihenfolge dieser Elemente im sortItems-Knoten kann per Drag & Drop geändert werden.

images/download/attachments/169634132/image-2025-3-5_16-34-51-version-1-modificationdate-1741188891385-api-v2.png

Beispiele

Einfacher Anwendungsfall: Simple Werte sortieren

Im folgenden Beispiel soll eine Liste von simplen Werten (in JSON-Notation: [1,8,6,null]) in absteigender Sortierung ausgegeben werden.

Laufzeitbeispiel:

images/download/attachments/169634132/image-2025-3-5_16-55-19-version-1-modificationdate-1741190119420-api-v2.png

Konfiguration:

Im Kontext einer Ausführen mit-Ereignisaktion wird zunächst die zwecks Demonstration statisch definierte Liste wie rechts abgebildet als Bezugsobjekt für die folgenden Ereignisaktionen definiert:

  • Aus dem statischen Text (s. Statische Werte) in JSON-Notation wird über den Objekt aus JSON erzeugen-Wertauflöser ein Listenobjekt erzeugt.

    Im Aktionsblock wir deine Hinweis anzeigen (Popup)-Ereignisaktion ausgeführt, die als Text der Meldung die sortierte Liste definiert:

    • Der Liste sortieren-Wertauflöser definiert keinen Vergleichswert, sodass die Listeneinträge direkt sortiert werden.

    • Die Option Aufsteigend wurde abgewählt, damit die Einträge absteigend sortiert werden.

images/download/attachments/169634132/image-2025-3-5_16-54-53-version-1-modificationdate-1741190094261-api-v2.png

Variante:

Ausgehend vom vorherigen Beispiel sollen die statisch definierten Listeneinträge nun in zufälliger Reihenfolge ausgegeben werden.

Konfiguration: (Als Anpassung innerhalb der vorherigen Konfiguration)

Im Liste sortieren-Wertauflöser wird nun ein Vergleichswert über den Zufälliger Long-Wert-Wertauflöser definiert. Dieser Wertauflöser "würfelt" einen Wert aus dem Wertebereich für den Datentyp Long, was eine zufällige Sortierung ergibt.

HINWEIS◄ Die Option Aufsteigend kann wahlweise aus- oder abgewählt werden. Da die Sortierung zufällig ist, beeinflusst dies zwar die Reihenfolge der Einträge im konkreten Fall. Auf das zufällige Sortieren insgesamt hat das ausnahmsweise aber keinen Einfluss. Effektiv erscheint die Reihenfolge im Rückgabewert immer zufällig.

images/download/attachments/169634132/image-2025-3-5_16-56-18-version-1-modificationdate-1741190178564-api-v2.png

Typischer Anwendungsfall: Eine Liste von Objekten nach einem bestimmten Feld sortieren

Innerhalb einer Ereignisbehandlung verweist Variable (stakeholders) auf eine Liste von Firmen/Mandanten, die an einem Geschäftsobjekt beteiligt sind. Beim Speichern von Änderungen soll der Benutzer über die beteiligten Firmen informiert werden.

Dabei soll für jede beteiligte Firma eine eigene Benachrichtigung erscheinen, die ausgewählte Adressmerkmale der Firma nach einem einheitlichen Schema wiedergibt.

Konkret sollen die Firmen durch eine Serie von Benachrichtigungen des Typs "Info" in alphabetischer Reihenfolge nach dem Feld "Name" (address.name1) aufgelistet werden.

Laufzeitbeispiel:

images/download/attachments/169634132/image-2025-3-5_17-3-37-version-1-modificationdate-1741190617424-api-v2.png

Konfiguration:

Auf die Variable stakeholders wird hier im Kontext einer Ausführen mit-Ereignisaktion zugegriffen. Das Bild rechts zeigt nur die Ereignisaktionen im Aktionsblock und (ganz oben) den Datentyp des Rückgabewerts der Variablen: Firmenkonto[]. Für die Ereignisaktionen steht als Bezugsobjekt also eine Liste der beteiligten Firmen zur Verfügung.

  • Die Für jeden Eintrag wiederholen (Schleife)-Ereignisaktion soll über die beteiligten Firmen im Eingabewert in alphabetischer Reihenfolge iterieren. Als Wertauflöser für Einträge kommt daher der Liste sortieren-Wertauflöser zum Einsatz:

    • Im Vergleichswert wird zunächst per Objekt-Feld-Wertauflöser auf das Feld "Name" in der Firmenadresse (address.name1) zugegriffen, nach dem sortiert werden soll.

    • Der verkettete In Großbuchstaben-Wertauflöser stellt dabei sicher, dass die "alphabetische Reihenfolge" ohne Berücksichtigung der Groß-/Kleinschreibung eingehalten wird. Sonst würden Firmennamen in Kleinbuchstaben (s. "fast-or-furious Ltd." in unserem Beispiel) nach allen in Großbuchstaben angezeigt.

      ANMERKUNG◄ Man könnte hier alternativ auch den In Kleinbuchstaben-Wertauflöser verwenden. Es geht ausschließlich um eine Gleichbehandlung von A-Z gegenüber a-z.

  • Innerhalb der Schleife wird für jedes Firmenkonto eine Hinweis anzeigen (Popup)-Ereignisaktion ausgeführt, in der ausgewählte Daten des Firmenkontos aufbereitet werden:

    • Als Titel wird dasselbe Feld verwendet, nach dem bereits sortiert wurde. Die Groß-/Kleinschreibung soll hier wie in der Adresse gepflegt beibehalten werden.

    • Für die Meldung selbst werden hier zwei Adressmerkmale (city und countryCode) aus dem Firmenkonto im Kontext über einen Vorlage-Wertauflöser mit Literalzeichen ("/") kombiniert.

      ANMERKUNG◄ Dasselbe Ergebnis ließe sich auch durch eine einfache Textverkettung erzielen. Mit zunehmender Anzahl der anzuzeigenden Felder ist eine Aufbereitung der Daten per Vorlage-Wertauflöser allerdings ggf. übersichtlicher und wartungsfreundlicher.

images/download/attachments/169634132/image-2025-3-5_17-2-38-version-1-modificationdate-1741190558372-api-v2.png

Besonderer Anwendungsfall: Mehrstufige Sortierung

Die Sortierung der Firmen im vorigen Beispiel soll nun so angepasst werden, dass zunächst nach dem Länderkennzeichen (countryCode) und erst danach nach dem Firmennamen sortiert wird.

Laufzeitbeispiel: (für dieselbe Liste von beteiligten Firmen wie oben)

images/download/attachments/169634132/image-2025-3-6_10-3-55-version-1-modificationdate-1741251835338-api-v2.png

Konfiguration:

Um eine mehrstufige Sortierung zu erreichen, muss innerhalb der bestehenden Konfiguration nur ein zusätzliches Sortierkriterium (per images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg ) für das Feld "Land" (countryCode) hinzugefügt werden.

HINWEIS◄ Wie der Screenshot rechts zeigt, sollte dieses an erster Stelle der Liste positioniert sein. Da s Hinzufügen per images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg fügt allerdings immer einen Nachfolger hinzu, sodass ein neues "Top-Kriterium" nur durch nachträgliches Verschieben in der Baumansicht (s. "Konfiguration") oder aufwändigere Interaktionen platziert werden kann.

images/download/attachments/169634132/image-2025-3-6_7-38-27-version-1-modificationdate-1741243107560-api-v2.png

WICHTIG◄ Der Objekt-Feld-Wertauflöser für das "Land" (countryCode) liefert einen Wert aus der Dynamischen Aufzählung für den Typ Land, der hier direkt als Sortierkriterium genutzt wird.

Anhand der Sortierung für das oberste Kriterium "Land" im konkreten Beispiel (DE < IE < IT) könnte man annehmen, dass der "Name" (name) des Aufzählungswerts den Ausschlag für die Sortierung gibt. Tatsächlich ist diese Annahme aber nicht zutreffend!

Die Sortierreihenfolge für Aufzählungswerte ist abhängig vom Ausführungskontext (Server/Client) unterschiedlich geregelt:

  • Im Server-Kontext wird nach dem "Ordinal" (Long-Wert) aus der Aufzählung numerisch sortiert.

  • Im Client-Kontext wird nach dem "Name" (String-Wert) aus der Aufzählung alphanumerisch sortiert.

Für die im Beispiel referenzierten Länder - "Deutschland" (DE/82), "Irland" (IE/106) und "Italien" (IT/109) - ergibt sich zufällig immer dieselbe Reihenfolge, egal ob nach "Name" oder "Ordinal" sortiert wird. Sogar die Lokalisierung ergäbe zufällig dieselbe Sortierung.

Für eine Liste mit den Ländern "Deutschland" (DE/28), "Österreich" (AT/14) und Schweiz (CH/215) sähe das anders aus:

  • Sortierung nach "Ordinal": "Österreich" (AT/14) < "Deutschland" (DE/28) < Schweiz (CH/215)

  • Sortierung nach "Name": "Österreich" (AT/14) < Schweiz (CH/215) < "Deutschland" (DE/28)

  • Sortierung nach Lokalisierung: "Deutschland" (DE/28) < "Österreich" (AT/14) < Schweiz (CH/215)

Für eine stabile Sortierung mit Werten aus Dynamischen Aufzählungen sollte man daher dringend explizit entscheiden, wie diese Werte eingebunden werden sollen.

Der Screenshot rechts zeigt eine Variante der obigen Konfiguration, in der für das erste Sortierkriterium das Feld "Name" (name) des Land-Werts aus dem Adressfeld "Land" (address.countryCode) des Firmenkontos gelesen wird.

Der verkettete In Großbuchstaben-Wertauflöser stellt sicher, dass die Sortierung ohne Unterscheidung der Groß-/Kleinschreibung im Feld "Name" erfolgt. Dass in der Aufzählung alle Namen in Großbuchstaben hinterlegt sind, ist ebenfalls nur eine "verletzliche" Konvention.

ANMERKUNG◄ In der Konfiguration rechts wurde im Objekt-Feld-Wertauflöser der Datenfeldpfad ausgewählt, der direkt zum Namen des Aufzählungswerts führt:

  • address.countryCode.name

Derselbe Effekt kann mit einer Verkettung von zwei oder drei Objekt-Feld-Wertauflösern erzielt werden.

images/download/attachments/169634132/image-2025-3-6_8-58-12-version-1-modificationdate-1741247892298-api-v2.png

Die Variante im Screenshot rechts sieht der vorherigen recht ähnlich, verzichtet aber darauf, Feld "Name" (name) des Land-Werts aus dem Adressfeld "Land" (address.countryCode) direkt zu adressieren.

Der verkettete In Großbuchstaben-Wertauflöser erkennt, dass der Eingabewert (Typ Land) kein String ist und gibt stattdessen dessen String-Abbild in Großbuchstaben als Sortierkriterium weiter.

  • Im Server-Kontext gilt der "Name" (name) als String-Abbild und die Sortierung stimmt mit dem vorherigen Beispiel überein.

  • Im Client-Kontext wird nach der Lokalisierung für das Land (für die Aktuelle Sprache und in Großbuchstaben) sortiert, was zu abweichenden Ergebnissen führen kann.

images/download/attachments/169634132/image-2025-3-6_9-5-26-version-1-modificationdate-1741248325801-api-v2.png

Die etwas aufwändigere Konfiguration im Screenshot rechts zielt darauf ab, sowohl im Server-Kontext als auch im Client-Kontext eine Sortierung nach der Lokalisierung für das in der Adresse referenzierte Land für die Aktuelle Sprache in Großbuchstaben (also ohne Berücksichtigung der Groß-/Kleinschreibung) zu erzwingen:

  • Der Wert aus Sprachverwaltung-Wertauflöser zieht die relevante Lokalisierung mit folgenden Parametern heran:

    • Bundle: Der Bundle Name wird hier über den Klasse-Wertauflöser statisch gesetzt, für den die Klasse Land ausgewählt ist.

    • Resource: Als Resource Name für den Wert einer Dynamischen Aufzählung gilt immer der "Name" (name), der hier per Objekt-Feld-Wertauflöser gelesen wird.

    • Als Standardwert für ein Land, das nicht einmal über eine Lokalisierung in der Standardsprache "Englisch" (en) verfügt, soll ebenfalls der "Name" (name) verwendet werden.


images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Auch dieser im Vergleich mit dem initialen "naiven" Zugriff auf das countryCode-Feld erhebliche Konfigurationsaufwand führt nicht mit 100% Sicherheit dazu, dass per Liste sortieren identische Sortierergebnisse zwischen Server-Kontext und Client-Kontext erzielt werden.

Die abgebildete Wertauflöserkette schickt für die Länder der DACH-Region (als Beispiel) deren Standard-Lokalisierungen für die Aktuelle Sprache "Deutsch" (de) in die Sortierung. Konkret diese Zeichenfolgen:

  • DEUTSCHLAND

  • ÖSTERREICH

  • SCHWEIZ

Allerdings sortieren Server und Client den Umlaut "Ö" wiederum unterschiedlich (ASCII-Code/"OE"), sodass Österreich im Server-Kontext nach der Schweiz und im Client-Kontext zwischen Deutschland und der Schweiz eingeordnet wird.

images/download/attachments/169634132/image-2025-3-6_9-14-36-version-1-modificationdate-1741248876447-api-v2.png