Alle Map-Schlüssel

Wertauflöser - Kurzfassung

Zweck: Liefert eine Liste aller Schlüsselwerte einer Map bzw. aller Feldnamen eines "Client-Objekts" im Eingabewert.

Siehe auch: Map-Wert

images/download/attachments/177910371/image-2024-9-9_16-35-39-version-1-modificationdate-1725892539407-api-v2.png

Der Alle Map Schlüssel-Wertauflöser erwartet entweder eine Map oder ein "Client-Objekt" als Eingabewert und gibt entweder eine Liste der Schlüsselwerte (Map) bzw. Feldnamen ("Client-Objekt") zurück.

Die Parameter Ist Liste von und Schlüssel-Typ dienen im Wesentlichen dazu, den Datentyp des zu erwartenden Rückgabewerts für den Kontext der Konfiguration zu deklarieren.

  • Liegt als Eingabeobjekt ein "Client Objekt" vor, muss allerdings der in diesem Zusammenhang alternativlose Schlüssel-Typ String explizit ausgewählt werden.

  • Im Kontext einer Map gibt es keine Restriktionen für den Datentyp von Schlüsselwerten. Auch Listen oder komplexe Datenobjekte können als Schlüssel verwendet werden.

    • Typischerweise entsprechen alle Schlüsselwerte einer Map demselben Typ. Ist dieser für den konkreten Anwendungsfall bekannt, dann sollte dieser Typ als Schlüssel-Typ ausgewählt werden.

    • Allerdings kann dieselbe Map ohne weiteres Schlüsselwerte unterschiedlicher Typen beinhalten. Dann sollte auf die Auswahl für den Schlüssel-Typ verzichtet werden, sofern keine übergeordnete Klasse als Schlüssel-Typ ausgewählt werden kann, der alle in der Map verwendeten Schlüsselwerte entsprechen.

WICHTIG◄ Im Unterschied zu vielen anderen Wertauflöser, die eine "Typ"-Auswahl in Verbindung mit einer Option Ist Liste von anbieten, wird beim Alle Map Schlüssel-Wertauflöser die Auswahl für den Schlüssel-Typ ignoriert, wenn die Option Ist Liste von ausgewählt ist. Man kann durch eine Kombination der beiden Parameter also nicht etwa spezifizieren, dass alle Schlüsselwerte einem bestimmten Typ entsprechen müssen. Trotzdem wird für den Kontext der Konfiguration der Rückgabewert entsprechend deklariert, z. B. Long[][], also eine Liste von Schlüsselwerten, die wiederum Long-Werte auflisten. Eine individuelle "Prüfung" je Schlüsselwert - also eine Kontrolle, ob dessen Einträge dem Schlüssel-Typ entsprechen - findet nicht statt.

Konfiguration

Die folgende Tabelle definiert die Charakteristik des Wertauflösers per Fallunterscheidung für alle technisch darstellbaren Varianten unabhängig von der Praxisrelevanz:

Typ des
Eingabewerts

Option
"Ist Liste von"

Parameter
"Schlüssel-Typ"

Rückgabewert

Hinweise

Map





unerheblich

List

Liste aller Schlüsselwerte,
WENN diese an prüfungsrelevanten Listenpositionen dem Typ "Liste" entsprechen
- SONST: "Kein Wert" ($null)

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNG images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg


Prüfungsrelevante Listenpositionen sind ...

  • im Server-Kontext: nur die ersten 5 Einträge,

  • im Client-Kontext: alle Einträge.

Der Begriff "Eintrag" bezieht sich dabei immer auf die Liste der Schlüsselwerte der Map und nicht etwa eine Liste, die innerhalb einer Map als Schlüsselwert verwendet wird.

Die Reihenfolge der Schlüsselwerte einer Map entspricht dabei im Allgemeinen nicht der Reihenfolge, in der sie der Map hinzugefügt wurden.

WICHTIG◄ Im Kontext der Prüfung gegen einen Schlüssel-Typ findet keinerlei automatische Typumwandlung statt. Allerdings kann der Schlüssel-Typ eine übergeordnete Klasse sein (z. B. "Entität" oder "Schnittstelle > Benutzer") sein, der unterschiedliche andere Klassen entsprechen.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg ausgewählt

anderer Typ als List
oder
keine Auswahl

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg abgewählt

andere Typen

Liste aller Schlüsselwerte,
WENN diese an prüfungsrelevanten Listenpositionen dem Schlüssel-Typ entsprechen
- SONST: "Kein Wert" ($null)

keine Auswahl

Liste aller Schlüsselwerte

keine

Client-Objekt

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg abgewählt

String

Liste aller Feldnamen des "Client Objekts"

unerheblich

anderer Typ als String
oder
keine Auswahl

"Kein Wert" ($null)

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg ausgewählt

beliebiger Typ

Beispiele

Einfacher Anwendungsfall: Schleife über alle Daten in einer Map

Eine Map wird verwendet, um die Sitzplatzreservierung für einen Linienflug abzubilden. Die Map verwendet als Schlüsselwerte die alphanumerischen Kennungen der Sitzplätze, die sich aus der Nummer der Sitzreihe (1, 2, ...) und dem Kennbuchstaben der Sitzposition innerhalb der Reihe (A, B, C, ...) zusammensetzt. Besteht eine Reservierung für einen Sitzplatz wird dem betreffenden Schlüsselwert eine Zeichenfolge zugewiesen, die den Passagier im üblichen Schema <Nachname>/<Vorname[n]><Anrede> kennzeichnet. Es gilt die Annahme, dass in der Map nur für reservierte Sitzplätze überhaupt ein Schlüsselwert vorliegt.

Im Kontext einer Ereignisbehandlung liegen alle bestehenden Reservierungen für ein bestimmten Flug als Daten in dieser Map bereits vor. Zur Kontrolle soll für jede Reservierung eine Benachrichtigung ausgegeben werden.

Konfiguration:

Im Kopf der rechts abgebildeten Für jeden Eintrag wiederholen (Schleife) wird der Alle Map-Schlüssel-Wertauflöser verwendet, um eine Liste der Sitzplatznummern aller reservierten Sitzplätze zu erhalten.

  • Der Parameter Map in Variable speichern wird verwendet, um auf die Map als Ganzes über die Variable bookings zugreifen zu können, wenn diese innerhalb der Schleife nicht mehr als Bezugsobjekt vorliegt.

  • Der Schlüssel-Typ "String" sollte nur ausgewählt werden, wenn sichergestellt ist, dass die Map ausschließlich Schlüsselwerte enthält, die diesem Typ entsprechen.

  • Die Option Ist Liste von darf nicht ausgewählt werden. Zwar wird eine Liste von "Text-Schlüsseln" (String[], s. Bild) als Rückgabewert erwartet, aber jeder einzelne Schlüsselwert soll ein einfacher String (und nicht etwa eine Liste) sein.

Innerhalb der Schleife gibt eine Hinweis anzeigen (Popup)-Ereignisaktion die in der Map enthaltene Informationen zur Sitzplatzreservierung als Benachrichtigung vom Typ "Info" aus:

  • Im Titel wird dabei auf den Schlüsselwert selbst zugegriffen, dessen String-Wert in der Schleife als Bezugsobjekt vorliegt. Der Objekt-Feld-Wertauflöser (ohne Feld) liefert dieses Bezugsobjekt der Iteration komplett.

  • Die Meldung soll dagegen den Passagier identifizieren, für den der Sitzplatz Reservierung reserviert ist:

    • Per Variable-Wertauflöser muss dazu zunächst über die Variable bookings auf die gesamte Map zugegriffen werden.

    • Der verkettete Map-Wert-Wertauflöser adressiert innerhalb der Map den Schlüssel für den aktuellen Sitzplatz. Um diesen zu identifizieren, wird wiederum der Variable-Wertauflöser beansprucht, diesmal um das Bezugsobjekt innerhalb der Iteration zu lesen, das das System automatisch per Variable entity bereitstellt. Dabei wird der erwartete Wert-Typ ("String") angegeben.

Laufzeitbeispiel: (Auszug aus einer längeren "Passagierliste")

images/download/attachments/177910371/image2022-11-22_12-23-58-version-1-modificationdate-1725892531751-api-v2.png

images/download/attachments/177910371/image-2024-9-9_16-49-48-version-1-modificationdate-1725893388585-api-v2.png images/download/attachments/177910371/image-2024-9-9_16-50-50-version-1-modificationdate-1725893449655-api-v2.png

Einfacher Anwendungsfall: Feldnamen eines "Client Objekts" auflisten

Im Kontext einer Ereignisbehandlung wird über einen Wert aus SQL-Abfrage-Wertauflöser ein SELECT-Statement für eine Datenbanktabelle in einer Datenbank ausgeführt, auf die der Lobster Data Platform / Orchestration-Server über einen Alias zugreifen kann.

Sofern das konkrete SELECT-Statement überhaupt Ergebniszeilen liefert, gibt der Wertauflöser diese als Liste von "Client Objekten" zurück, von denen jedes einen Datensatz repräsentiert. Die Felder jedes dieser Client-Objekte enthalten die Daten des Datensatzes. Die Feldnamen ergeben sich dabei aus den Projektionen im SELECT-Statement.

Im Beispiel führen wir ein PostgreSQL-Statement nach dem Schema SELECT * FROM <table_name> LIMIT 1 aus, um die erste Zeile einer Datenbank-Tabelle komplett zu lesen, ohne dass deren Struktur explizit bekannt sein muss. Anschließend soll informativ eine Liste der Feldnamen per Benachrichtigung ausgegeben werden.

Konfiguration:

Die rechts abgebildete Ausführen mit-Ereignisaktion definiert die erste "Ergebniszeile" aus dem im Wert aus SQL-Abfrage-Wertauflöser definierten SQL-Statements als Bezugsobjekt für die Ausgabe der Benachrichtigung im Aktionsteil.

  • Da der Wert aus SQL-Abfrage-Wertauflöser auch dann eine "Liste" zurückgibt, wenn eine Abfrage exakt eine "Zeile" als Ergebnis liefert, kommt dabei der Listenwert-Wertauflöser zum Einsatz, der per Offset 0 den ersten Listeneintrag adressiert. Wie im Bild zu sehen, wird "Objekt" als Typ für dessen Rückgabewert ausgewiesen, da für die "Listeneinträge" aus der SQL-Abfrage kein spezifischer Objekttyp definiert ist. Es handelt sich um "Client-Objekte" mit variabler Struktur.

  • Im Aktionsteil wird eine Hinweis anzeigen (Popup)-Ereignisaktion ausgeführt, das als Titel den statischen Text "Table fields" definiert.

  • In der Meldung liefert der Alle Map-Schlüssel-Wertauflöser alle Feldnamen des als Eingabewert vorliegenden (Client-)Objekts. Dabei ist die Auswahl von "String" als Schlüssel-Typ ausnahmsweise Pflicht.

  • Der verkettete Text ersetzen-Wertauflöser wurd hier nur ergänzt, um Leerzeichen im String-Abbild der gelieferten Liste von Feldnamen durch einen Zeilenwechsel zu ersetzen.

images/download/attachments/177910371/image-2024-9-10_9-11-29-version-1-modificationdate-1725952289137-api-v2.png images/download/attachments/177910371/image-2024-9-10_9-12-18-version-1-modificationdate-1725952337934-api-v2.png

Laufzeitbeispiel:

images/download/attachments/177910371/image2022-11-22_14-47-49-version-1-modificationdate-1725892531746-api-v2.png

Im Beispiel lautete das SQL-Statement:

SELECT * FROM dw_log LIMIT 1

... mit dem Alias hub(Standard für die Datenbank des Embedded Data)

ANMERKUNG◄ Im Kontext einer Schleife könnte auch eine Liste von Feldname/Feldwert-Paaren ausgegeben werden, wobei der Alle Map-Schlüssel-Wertauflöser und der Map-Wert-Wertauflöser analog zum vorherigen Beispiel im Gespann eingesetzt werden müssen.