Wert aus SQL-Abfrage
Wertauflöser - Kurzfassung
Zweck: Übergibt ein einzelnes natives SQL-SELECT-Statement an eine Datenbank, die für den Lobster Data Platform / Orchestration -Server über den angegebenen Alias erreichbar sein muss, und gibt die Ergebniszeilen als Liste von Client-Objekten zurück.
Siehe auch: SQL-Abfrage ausführen (Ereignisaktion)
Der Wert aus SQL-Abfrage-Wertauflöser übergibt ein einzelnes natives SQL-SELECT-Statement an eine Datenbank, die für den Lobster Data Platform / Orchestration -Server über den angegebenen Alias erreichbar sein muss, und gibt die Ergebniszeilen als Liste von Client-Objekten zurück.
Im Unterschied zur SQL-Abfrage ausführen-Ereignisaktion können mit dem Wert aus SQL-Abfrage-Wertauflöser ausschließlich SELECT-Statements ausgeführt werden. Der Wertauflöser gibt deren Rückgabewerte als Liste von Client-Objekten zurück. Jedes Client-Objekt repräsentiert dabei eine Ergebniszeile. Die "Spaltennamen" der Abfrage (Projektionen) erscheinen als Felder jedes Client-Objekts in der Liste.
Abhängig vom Datenbanksystem erscheinen die Spaltennamen dabei entweder einheitlich in Großbuchstaben, einheitlich in Kleinbuchstaben oder unter Berücksichtigung von Groß-
und
Kleinschreibung. In jedem Fall muss die jeweilige Schreibweise bei Zugriff auf die Datenfelder in Lobster Data Platform / Orchestration
(z. B. über einen
Objekt-Feld
-Wertauflöser) exakt ("case-sensitiv") übereinstimmen.
►
HINWEIS
◄ Falls eine Abfrage keine Zeilen zurückgibt, enthält die
Ergebnisvariable
eine
leere Liste
, die eine Prüfung per
Ist leer
erfüllt, aber nicht einen Vergleich wie "
Ist Gleich
'kein Wert'".
Das SQL-Statement kann die Werte von Variablen aus dem Kontext der aktuellen Ereignisbehandlung über typsichere Platzhalter entsprechend der Lobster Data Platform / Integration Abfragesyntax einbeziehen.
Konfiguration
Der Parameter Alias kann wahlweise als statischer Text oder als Rückgabewert eines Wertauflösers bestimmt werden. Er muss auf eine Datenbank verweisen, auf die der Lobster Data Platform / Orchestration-Server zugreifen kann.
Der Parameter SQL-Query definiert das auszuführende SQL-SELECT-Statement in der nativen Syntax der per Alias adressierten Datenbank, ggf. unter Berücksichtigung von typsicheren Platzhaltern, an deren Stelle zur Laufzeit der Wert je einer Variablen aus dem Kontext der Ereignisbehandlung eingesetzt wird.
Für die Definition dieser Platzhalter greift die Lobster Data Platform / Integration Abfragesyntax mit der Struktur @<index>:<typ>@, also etwa @1:s@ für einen String-Wert oder @2:t@ für einen Timestamp.
Der <index> muss dabei eine positive Ganzzahl sein, die auch als Variablenname innerhalb der Konfiguration verwendet wird. Die verwendeten Werte müssen dabei nicht lückenlos und aufsteigend vergeben werden.
Als <typ> muss ein Kennbuchstabe für einen Datentyp angegeben werden ( "l" long, "s" string, ... komplette Liste s. Lobster Data Platform / Integration Abfragesyntax), der zum Verwendungszweck für den Platzhalter passen muss.
Für alle in der SQL Query verwendeten Platzhalter muss explizit ein korrespondierender Variablenname mit einem Wertauflöser konfiguriert werden, dessen Rückgabewert dem Datentyp des Platzhalters entsprechen oder zumindest geeignet konvertierbar sein muss.
Derselbe Variablenname kann von mehreren Platzhaltern referenziert werden, die bei Bedarf sogar unterschiedliche Datentypen spezifizieren können, solange jeder zur Laufzeit auftretende Wert in alle Ziel-Datentypen konvertiert werden kann.
►ANMERKUNG◄ Platzhalter können ausschließlich an Positionen des SQL-Statements verwendet werden, die Werte betreffen, und nicht etwa um Feld- oder Tabellennamen oder Schlüsselwörter der Syntax dynamisch zuzuordnen. Allerdings kann der Wert für den Parameter SQL Query insgesamt dynamisch aufgebaut werden (z. B. per Textverkettung), um entsprechende Flexibilität zu erreichen.
Beispiel
Das Feld "Ersteller" (creatorId) einer Entität verweist über einen Long-Wert auf das Konto des Benutzers (s. Benutzer) oder Gastbenutzers (s. Gastbenutzer), der die Entität erstellt - also erstmalig gespeichert - hat. Dabei verweist eine positive creatorId auf die ID eines Benutzers, während ein negativer Wert für die creatorId auf einen Gastbenutzer als Ersteller hinweist. Die Möglichkeit, dass Gastbenutzer Entitäten erstellen sei im folgenden Beispiel allerdings ausgeschlossen, so dass ausschließlich positive Werte für die creatorId vorkommen können.
Ausgehend von einer creatorId soll in einer Benachrichtigung der Benutzername des betreffenden Benutzers als "Urheber" der Entität identifiziert werden. Über die Nachschlagefunktion für Entitäten des Eingabeobjekt (Typsicher)-Wertauflösers kann dies einfach erreicht werden.
Der Zugriff auf das Benutzerkonto über die creatorId per Eingabeobjekt (Typsicher)-Wertauflöser scheitert allerdings, wenn das betreffende Konto seit dem Erstellen der Entität gelöscht wurde. Auch eine Suche würde keinen Treffer liefern, da ein gelöschtes Benutzerkonto in der betreffenden Tabelle der Lobster Data Platform / Orchestration-Datenbank (hier: base_user) tatsächlich nicht mehr existiert.
Da Lobster Data Platform / Orchestration für Benutzer allerdings Informationen zum Änderungsverlauf vorhält, kann der Benutzername eines gelöschten Benutzerkontos in der "Änderungshistorie" nachgeschlagen werden. Der Wert aus SQL-Abfrage-Wertauflöser ermöglicht den dafür erforderlichen Lesezugriff auf die betreffende Datenbanktabelle, im vorliegenden Anwendungsfall: base_user_history.
Konfiguration:
Das folgende SELECT-Statement liefert den zuletzt verwendeten Benutzernamen eines Benutzerkontos für eine im Integer-Parameter 1 (Platzhalter @1:i) gegebene ID:
SELECT
username
FROM
base_user_history
WHERE
id=@1:i@
ORDER
BY
entry_valid_from
DESC
LIMIT 1
Die rechts abgebildete Wertauflöserkette identifiziert den "Ersteller" der als Bezugsobjekt vorliegenden Entität entweder über das Feld "Benutzername" (userName) eines existierenden Benutzerkontos oder - falls das Konto gelöscht wurde - anhand des letzten relevanten Eintrags in der Änderungshistorie:
|
|