Speichern und Abrufen von Sitzungsstatus mit Cloud Datastore in Jitterbit Studio
Einführung
Cloud Datastore ist Jitterbitâs integriertes Cloud-Speichersystem. Es ermöglicht Studio-Operationen, Daten zwischen Ausführungen zu speichern und abzurufen, ohne dass eine externe Datenbank erforderlich ist. Dieses Handbuch behandelt das häufige Muster zum Speichern von Sitzungsstatus (z. B. Konversationsverlauf, Benutzerflags oder konversationsübergreifender Kontext) mithilfe eines Cloud Datastore Schlüsselspeichers.
Schlüsselspeicher ist der geeignete Speichertyp für Sitzungsstatus. Daten in einem Schlüsselspeicher werden beibehalten, bis sie explizit gelöscht werden, was bedeutet, dass Datensätze unbegrenzt über Sitzungen hinweg bestehen bleiben. Statuspeicher ist dagegen für die Verfolgung von Operationsstatus konzipiert und wird nach 90 Tagen automatisch gelöscht, was ihn für dauerhafte Sitzungsdatensätze ungeeignet macht.
Warnung
Cloud Datastore gibt Daten im Klartext zurück. Speichere keine Passwörter, Anmeldedaten oder andere vertrauliche Informationen in Cloud Datastore-Speichern.
Entwurfsmuster
Drei Operationen implementieren das Sitzungsstatus-Muster:
Die Query-Operation sucht nach dem Sitzungsdatensatz anhand eines eindeutigen Schlüssels (normalerweise einer Benutzer-ID oder Sitzungs-ID) und prüft, ob bereits ein Datensatz für diesen Schlüssel vorhanden ist. Eine Transformation vor der Aktivität Query Items legt den Abfragefilter fest, und ein Skript danach liest totalItems aus der Abfrageantwort: Wenn der Wert 0 ist, wird die Insert-Operation ausgeführt, um einen neuen Datensatz zu erstellen; wenn der Wert größer als 0 ist, wird die Update-Operation ausgeführt, um den vorhandenen Datensatz mit neuen Sitzungsdaten zu überschreiben.
Teil 1: Erstelle den Schlüsselspeicher
Vor der Konfiguration des Connectors in Studio müssen einen Schlüsselspeicher und ein Zugriffstoken in der Management Console erstellen.
-
Navigiere im Harmony-Portal zu Harmony-Portalmenü > Management Console > Cloud Datastore.
-
Klicke auf der Registerkarte Storages auf Speicher hinzufügen und wähle dann Schlüsselspeicher erstellen.
-
Speichername: Gebe einen Namen für den Speicher ein (z. B.
ConversationHistory). -
Umgebung: Wähle die Umgebung aus, die diesen Speicher verwenden soll. Dieses Feld kann nach dem Speichern nicht mehr geändert werden.
-
Beschreibung: Gib optional eine Beschreibung ein.
-
Klicke unter Fields auf Field hinzufügen für jedes benutzerdefinierte Feld, das zum Speichern von Sitzungsdaten benötigt wird. Für den Konversationsverlauf füge ein Feld namens
ConversationHistorymit dem Typ Big Text hinzu. Die integrierten FelderKey,Alternative KeyundValuesind immer vorhanden und müssen nicht hinzugefügt werden.Hinweis
Pro Speicher sind maximal 20 benutzerdefinierte Felder zulässig, und jedes Element ist auf 25.000 Byte begrenzt.
-
Klicke auf Save.
-
Navigiere zu Harmony-Portalmenü > Management Console > Access Tokens und erstelle ein neues Zugriffstoken für dieselbe Umgebung. Kopiere den Token-Wert.
Tipp
Speichere das Zugriffstoken als Projektvariable mit verborgenem Wert und referenziere es dann in der Verbindungskonfiguration. Dies ermöglicht ein einfaches Rotieren des Tokens ohne direkte Bearbeitung der Verbindung.
Teil 2: Konfiguriere die Cloud Datastore-Verbindung
-
Öffne dein Projekt in Studio und klicke auf die Registerkarte Project endpoints and connectors in der Design-Komponentenpalette.
-
Klicke auf den Cloud Datastore-Connector, um die Verbindungskonfiguration zu öffnen.
-
Connection Name: Gebe einen Namen für die Verbindung ein (z. B.
Cloud Datastore). -
Access token: Gebe das in Teil 1 generierte Zugriffstoken ein oder referenziere es mithilfe einer Projektvariable.
-
Klicke auf Test, um die Verbindung zu überprüfen, und klicke dann auf Save Changes.
Teil 3: Abfrage eines vorhandenen Sitzungsdatensatzes
Die Query-Operation bestimmt, ob bereits ein Sitzungsdatensatz für den aktuellen Benutzer vorhanden ist.
Query Items-Aktivität konfigurieren
-
Erweitern Sie auf der Komponentenpalette des Designs den erstellten Cloud Datastore-Endpunkt. Ziehen Sie den Aktivitätstyp Query Items auf die Design-Canvas.
-
Doppelklicken Sie auf die Aktivität, um ihre Konfiguration zu öffnen.
-
Name: Geben Sie einen Namen für die Aktivität ein (beispielsweise
Query Session). -
Speicher auswählen: Wählen Sie Vorhandenen Speicher auswählen und klicken Sie in der Tabelle auf den in Teil 1 erstellten Speicher.
-
Klicken Sie auf Weiter, um die Datenschemas zu überprüfen, und klicken Sie dann auf Fertig.
Abfragefilter in einer Transformation zuordnen
Platzieren Sie eine Transformation vor der Aktivität Query Items, um zu definieren, welcher Datensatz gesucht werden soll. In der Transformation:
- Ordnen Sie
fields.item.keyder Literalzeichenkette"Key"zu. Dies ist der integrierte Name des Schlüsselfelds in einem Schlüsselspeicher und berücksichtigt die Groß- und Kleinschreibung. - Ordnen Sie
fields.item.valueder Sitzungskennung zu (beispielsweise der Benutzer-ID oder Kanal-ID aus der eingehenden Anfrage-Payload). - Ordnen Sie
limitzu1zu. Pro Sitzungsschlüssel wird nur ein Datensatz erwartet.
Wenn beispielsweise die eingehende Anfrage die Benutzer-ID in einer Variable userId bereitstellt:
<trans>
$userId
</trans>
Ordnen Sie diesen Skriptknoten in der Transformation zu fields.item.value zu.
Abfrageergebnis in einem Skript überprüfen
Fügen Sie nach der Aktivität Query Items einen Skript-Schritt zur Operation hinzu. Das Skript liest totalItems aus der Abfrageantwort und leitet die Ausführung entweder zur Insert- oder zur Update-Operation:
<trans>
if(Source.json.pagination.totalItems == 0,
RunOperation("<TAG>Operations/Insert Session</TAG>"),
RunOperation("<TAG>Operations/Update Session</TAG>")
);
</trans>
Ersetzen Sie Insert Session und Update Session durch die tatsächlichen Namen, die Sie diesen Operationen in Teil 4 und Teil 5 geben. Die Syntax <TAG> löst die Operation zur Laufzeit nach Name auf.
Tipp
Um den Sitzungsschlüssel und alle Payload-Daten an die Insert- und Update-Operationen weiterzugeben, speichern Sie sie in globalen Variablen, bevor Sie RunOperation aufrufen. Globale Variablen bleiben für die Dauer der Operationskette erhalten.
Teil 4: Datensatz für eine neue Sitzung einfügen
Die Insert-Operation wird ausgeführt, wenn kein Datensatz für den Sitzungsschlüssel vorhanden ist.
Insert Items-Aktivität konfigurieren
-
Ziehen Sie den Aktivitätstyp Insert Items auf eine neue Operation-Canvas.
-
Doppelklicken Sie auf die Aktivität, um ihre Konfiguration zu öffnen.
-
Name: Geben Sie einen Namen für die Aktivität ein (beispielsweise
Insert Session). -
Speicher auswählen: Wählen Sie denselben Speicher aus, der in Teil 3 verwendet wurde.
-
Klicken Sie auf Weiter, um die Datenschemas zu überprüfen, und klicken Sie dann auf Fertig.
Sitzungsdaten zuordnen
In der Transformation, die der Aktivität Insert Items vorausgeht, ordnen Sie die folgenden Anfragfelder zu:
Key: Ordnen Sie der Sitzungskennung zu (beispielsweiseuserId). Dies ist der Wert, der in zukünftigen Abfragen zum Nachschlagen des Datensatzes verwendet wird.ConversationHistory(oder alle benutzerdefinierten Felder, die Ihr Speicher definiert): Ordnen Sie den anfänglichen Sitzungsdaten zu, die gespeichert werden sollen.
Lassen Sie AlternativeKey und Value nicht zugeordnet, es sei denn, Ihr Anwendungsfall erfordert dies.
Teil 5: Vorhandenen Sitzungsdatensatz aktualisieren
Die Update-Operation wird ausgeführt, wenn bereits ein Datensatz für den Sitzungsschlüssel vorhanden ist.
Update Items-Aktivität konfigurieren
-
Ziehen Sie den Aktivitätstyp Update Items auf eine neue Operation-Canvas.
-
Doppelklicken Sie auf die Aktivität, um ihre Konfiguration zu öffnen.
-
Name: Geben Sie einen Namen für die Aktivität ein (beispielsweise
Update Session). -
Speicher auswählen: Wählen Sie denselben Speicher aus, der in Teil 3 verwendet wurde.
-
Klicken Sie auf Weiter, um die Datenschemas zu überprüfen, und klicken Sie dann auf Fertig.
Aktualisierte Sitzungsdaten zuordnen
In der Transformation, die der Aktivität Update Items vorausgeht, ordnen Sie die folgenden Anfragfelder zu:
Key: Ordnen Sie der Sitzungskennung zu. Dieses Feld gibt an, welcher Datensatz aktualisiert werden soll; es muss mit dem Wert übereinstimmen, der beim Einfügen des Datensatzes verwendet wurde.ConversationHistory(oder alle benutzerdefinierten Felder, die Ihr Speicher definiert): Ordnen Sie den aktualisierten Sitzungsdaten zu. Alle zugeordneten Felder werden überschrieben.
Hinweis
Die Aktivität Update Items ordnet den zu aktualisierenden Datensatz mithilfe des Felds Key zu. Wenn kein Datensatz mit diesem Schlüssel vorhanden ist, wird die Aktualisierung im Hintergrund erfolgreich abgeschlossen, ohne einen neuen Datensatz zu erstellen. Bestätigen Sie immer das Abfrageergebnis, bevor Sie den Aktualisierungsvorgang aufrufen.
Integration überprüfen
-
Stellen Sie die Query-Operation bereit und führen Sie sie aus, indem Sie einen Sitzungsidentifikator übergeben, der noch nicht im Speicher vorhanden ist.
-
Bestätigen Sie im Operationsprotokoll, dass
totalItemsden Wert0aufweist und dass die Insert-Operation ausgelöst wurde. -
Öffnen Sie in Management Console > Cloud Datastore die Speicherdetails und bestätigen Sie, dass ein neuer Datensatz mit dem erwarteten Schlüssel und den Feldwerten angezeigt wird.
-
Stellen Sie die Query-Operation erneut bereit und führen Sie sie mit demselben Sitzungsidentifikator aus.
-
Bestätigen Sie im Operationsprotokoll, dass
totalItemsden Wert1aufweist und dass die Update-Operation ausgelöst wurde. -
Bestätigen Sie in Management Console > Cloud Datastore, dass die benutzerdefinierten Felder des Datensatzes die aktualisierten Werte widerspiegeln.
-
Falls die Aktivität Query mit einem Authentifizierungsfehler fehlschlägt, überprüfen Sie das Zugriffstoken in der Cloud Datastore-Verbindung und bestätigen Sie, dass das Token der gleichen Umgebung wie der Speicher zugeordnet ist.
Tipp
Um Sitzungsdaten am Ende eines Gesprächs zu löschen, fügen Sie einen vierten Vorgang mit einer Delete Items-Aktivität hinzu, die den Datensatz nach Key anspricht. Dies verhindert, dass sich veraltete Datensätze im Speicher ansammeln.
Cloud Datastore kann auch zur Deduplizierung zwischen Läufen bei hohem Volumen verwendet werden, als Alternative zu Cache-Funktionen. Siehe Datensätze mithilfe von Hash-Funktionen erkennen und deduplizieren.