Die Funktion SearchTask (Integration-Funktion) ermöglicht das Abfragen von Inhalten aus der Datenbank von Lobster Data Platform / Orchestration (Details s. Such API) im Mapping (Phase 3) eines Profils.
Die Suchabfrage wird über die XML-Struktur eines SearchTask-Objekts im Parameter a definiert, die u. a. mit dem Abfragekonfigurator interaktiv aufgebaut und getestet werden kann.
Die XML-Struktur kann sich in der Syntax @PARAM_X@ (mit X aus {B,C,D,E,F,G,H,I,J}) auf die Werte der optionalen Parameter b, ..., j aus dem Funktionsaufruf beziehen.
Analog kann über die Syntax @VARIABLENNAME@ auf die Werte von Variablen aus dem Kontext des Profils zugegriffen werden.
Der Rückgabewert der Funktion ist immer das Suchergebnis eines bestimmten SearchResult-Objekts (SearchResult, TupleSearchResult oder CsvSearchResult, Details s. Sucharten) als Text im XML-Format .
Über den optionalen Parameter k kann diese Struktur in eine benanntes DOM-Objekt geparst werden, z. B. um dieses anschließend mit der Funktion get value from XML() über XPath-Ausdrücke auszuwerten.

Parameter
Parameter | Beschreibung | Beispiel | Hinweis |
|---|---|---|---|
a | XML-Struktur eines | SearchTask
| Eine "Abfrage" kann mit dem Abfragekonfigurator interaktiv angelegt und getestet werden. Die XML-Struktur des Häufig müssen - anders als im sehr einfachen Beispiel links - Daten aus dem Laufzeitkontext im Profil in die Suche einfließen, damit diese die "passenden" Ergebnisse liefert. Das XML kann sich zu diesem Zweck auf Variablen oder Parameter deren Werte zur Laufzeit aus dem Kontext des Aufrufs im Profil eingefügt werden. Besonders für komplexere Anwendungsfälle kann es hilfreich sein, die XML-Struktur des |
b-j | Parameter, die - analog zu regulären Variablen zwischen zwei '@'-Zeichen - in der XML-Definition der Suche adressiert werden können | SearchTask Ausgehend vom obigen Beispiel wurden hier Parameter und Variablen eingefügt:
| Um dieselben Suchergebnisse zu erhalten, wie im obigen statischen Fall, müssen folgende Bedingungen erfüllt sein:
|
l | true/false (Standard: false). Gibt an, ob als Ergebnis, anstelle der gefunden Datensätze, lediglich die Anzahl der Ergebnisse zurückgeliefert werden soll. |
Beispiele
Suchdefinition über einen SearchTask-Knoten
Im nachfolgenden Beispiel werden alle Sendungen mit dem Arbeitsstatus "Freigegeben" (RELEASED) gesucht.
Die entsprechende Suche wurde über den Abfragekonfigurator aufgebaut und über den Menüpunkt Orchestration-Vorlagen als Unterknoten SearchTask zum Knoten SearchNode (mit gesetzter Option "Nur für SQL") eingefügt (s. Erstellen einer statischen Zielstruktur).

Die Ausführung der Suche wird durch Funktionsaufrufe für das Feld executeSearch im Data-Knoten ausgelöst:
Die Funktion
create xml from node()liefert das XML desSearchTask-Knotens:
Die XML-Struktur des
SearchTask-Knotens wird als Ergebnis in Parameter a der SearchTask (Integration-Funktion)-Funktion übernommen, die die Suche ausführt und das Ergebnis in das DOM-ObjektsearchResult(Parameter k) speichert:
Im nachfolgenden Feld
getResultwird die Funktionget value from XML()verwendet, um das DOM-Objekt mit einem XPath-Ausdruck auszuwerten:
Im Beispiel wird dem Feld
getResultdie ID (id) der ersten Sendung zugewiesen, die die Suche zurückgibt.
Suchdefinition mit Parametern in einer Profil-Variablen
Eine Tupel-Suche soll über zwei Parameter (Benutzername/username, Kontonummer/address.accNumber) ein bestimmtes Benutzer-Konto in Lobster Data Platform / Orchestration identifizieren und - sofern ein Treffer existiert - dessen ID (id) zurückgeben.
| Wie im vorigen Beispiel wird der Abfragekonfigurator (links) verwendet, um ein geeignetes Die XML-Struktur des XML Aus dem XML-Tab im Abfragekonfigurator kann diese Struktur in die Zwischenablage kopiert und im Profil als Wert einer Variablen eingefügt werden:
|
Als konkreter Anwendungsfall soll die in der Variable var__searchUserId vordefinierte Tupel-Suche mit wechselnden Parametern genutzt werden, um die Konten bestimmter Benutzer per Batch-Import zu aktualisieren.
►ANMERKUNG◄ Da die Tupel-Suche den zu aktualisierenden Benutzer über die zurückgegebene ID (id) identifiziert, kann der search-Knoten im batch-Knoten des Imports deaktiviert werden, wenn diese als Wert für das id-Attribut im User-Knoten zugewiesen wird.

Im batch-Knoten der BatchImport-Struktur wurde ein Berechnungsfeld searchUserId ergänzt, das zwei Funktionsaufrufe verkettet:
Zunächst wird die im obigen Screenshot rechts ausgewählte Funktion SearchTask (Integration-Funktion) aufgerufen, der per Parameter a auf die Variable var_searchUserId zugreift.
Den "Suchparametern" b und c werden Werte von Quellfeldern ("username" und "account") zugewiesen, so dass jede Iteration des
batch-Knotens eine individuelle Suche ausführt.Das Suchergebnis wird per Parameter k als DOM-Objekt mit dem Namen
searchResultgespeichert.

Die Funktion get value from XML()greift über den XPath-Ausdruck //row[1]/item[1] auf den Wert der ersten Spalte (item[1]) der ersten Zeile (row[1]) innerhalb des result-Knotens der TupleSearchResult-Strukur (s. Tupel-Suche) zu. Da die Suche nur ein einzige Projektion (id) verwendet, ist das die ID des ersten Treffers, sofern es überhaupt Treffer gibt. Dieser Wert wird dem Feld searchUserId als Berechnungsergebnis zugewiesen. Das Feld id_attr im User-Objekt kann diesen Wert z. B. über die Funktion copy() auf das Zielfeld searchUserId übernehmen.
Suchdefinition mit Parametern als statischer Text im Funktionsparameter
Innerhalb eines Profils soll eine Tupel-Suche alle Benutzer ermitteln, deren Adresse eine bestimmte Kontonummer (address.accNumber) zugewiesen ist, um zu prüfen, ob diese Kontonummer eindeutig vergeben ist.
| Der Abfragekonfigurator (links) wird verwendet, um ein geeignetes Die XML-Struktur des XML Diese Struktur wir direkt aus dem XML-Tab im Abfragekonfigurator in die Zwischenablage kopiert. |
In der Zielstruktur wird ein Berechnungsfeld mit zwei Funktionsaufrufen versehen:

Zunächst wird die Funktion SearchTask (Integration-Funktion) ausgeführt, deren Parameter a die XML-Struktur aus der Zwischenablage als statischer Textwert zugewiesen wird.
Der Parameter b wird mit einem Quelldatenfeld
accountverknüpft, das die zu prüfende Kontonummer definiert.Das Suchergebnis wird per Parameter k als DOM-Objekt mit dem Namen
searchResultgespeichert.

Anschließend wird das als Suchergebnis zurückgegebene DOM-Objekt searchResult (Parameter a) mit der Funktion get value from XML() ausgewertet.
Der XPath-Ausdruck (
//@count) liefert die Anzahl der Zeilen innerhalb derTupleSearchResult-Struktur (s. Tupel-Suche), die im Kopf der Suche als Attribut übergeben werden.


