Echtzeit-Benachrichtigungen mittels FME Flow Automations empfangen und verarbeiten
Webhooks ermöglichen den Austausch von Benachrichtigungen zwischen Servern über eingetretene Ereignisse und auszulösende Aktionen. Aus technischer Sicht wird dazu eine Anfrage über http-POST an eine dafür vorbereitete URL gesendet. Typischerweise werden die Inhalte im JSON-Format übertragen. FME Flow FME Server ermöglicht es mit Hilfe von Automations, eine solche Webhook URL zu erstellen und auf die versendeten Daten zu reagieren. mittels eines FME Workspaces zu verarbeiten.
Bei einer FME Flow Automation handelt es sich um eine Möglichkeit, individuelle Workflows zu erstellen, die auf eingehende Nachrichten innerhalb oder außerhalb von FME Flow reagieren. Diese Nachrichten sorgen in der Folge dafür, dass eine individuell zu gestaltende Prozesskette angestoßen wird.
Eine FME Flow Automation beginnt immer mit einem Trigger (Auslöser). Wird ein Trigger ausgelöst, so erfolgt darauf die Ausführung einer oder mehrerer Aktionen. In der Regel handelt es sich dabei um FME Workspaces.
Eine Möglichkeit, entsprechende Aktionen auszulösen, besteht im Webhook Trigger. Dieser wird ausgelöst, sobald an die dazugehörige Webhook URL Daten gesendet wurden. Sobald ein Webhook Trigger in einer FME Flow Automation angelegt wird, wird ebenfalls eine Webhook URL generiert.
Im nachfolgenden Beispiel wird die Einrichtung einer FME Flow Automation mit einem s Webhook Triggers in FME Server für die Verarbeitung von Daten von Survey123 for ArcGIS erläutert.
Survey123 for ArcGIS ist eine Lösung für die Datenerfassung auf Basis von Formularen von Esri. Die nachfolgende Skizze veranschaulicht den Zusammenhang der beteiligten Server und den Datenaustausch per Webhook.
Die erzeugten Daten eines Surveys werden per Webhook an FME FlowServer gesendet und können dort automatisiert weiterverarbeitet werden. Das Ergebnis eines FME-Prozesses kann beispielsweise ein Report, das Persistieren der übermittelten Daten in einem Datei- oder Datenbanksystem oder das Auslösen einer weiteren Aktion wie das Versenden einer E-Mail-Benachrichtigung sein.
FME Flow Server oder FME Flow Hosted FME Cloud
Survey123 for ArcGIS (kostenfreier Testzugang)
Und so funktioniert es
1. Erstellen eines Surveys mit Survey123 (Anleitung).
2. Erstellen des Webhook Triggers in einer FME Flow Automation
Eine FME Flow Automation wird über die Benutzeroberfläche von FME Flow generiert. Unter dem Reiter „Automations“ > „Create Automation“ kann diese erstellt werden. Es erscheint eine Oberfläche, auf welcher die vorab erwähnte individuell zu gestaltende Prozesskette konfiguriert werden kann. Auf der Oberfläche erscheint ein grünes Symbol mit dem Schriftzug „Trigger“. Wird drauf geklickt, so kann in dem sich öffnenden Fenster am rechten Rand der Oberfläche unter „Trigger“ die Option Webhook (triggered) ausgewählt werden.
Wird auf „Apply“ geklickt und anschließend die Automation mit dem entsprechenden Symbol auf der Oberfläche gespeichert, so kann bei erneutem Klicken auf den Trigger in dem sich öffnenden Fenster auf der rechten Seite die Webhook URL eingesehen werden.
Da infolge einer Auslösung dieses Triggers ein FME Workspace ausgeführt werden soll, muss dieser in der FME Form Workbench angelegt werden.
3. Erstellen eines FME Workspaces zur Verarbeitung der Inhalte einer Webhook URLdes Webhook Triggers
Für das Einlesen der Webhook Inhalte, die im JSON-Format empfangen werden, wird kein klassischer Reader verwendet. In der FME Flow Automation, die soeben vorbereitet wurde, übermittelt der Webhook Trigger die Inhalte als Attribut. Soll der Inhalt dieses Attributs in einem Workspace weiterverarbeitet werden, so kann dieser als FME User Parameter dem Workspace übergeben werden. In diesem Fall wird der Parameter „webhook“ genannt.
Dies geschieht, nach der Initialisierung eines Features im Creator, mit dem ParameterFetcher. Mittels JSONFlattener kann der Inhalt in FME Attribute überführt werden. Je nach gewünschtem Ausgabeformat (hier eine SQLite Datenbank) werden die Attribute entsprechend aufbereitet und in die Zielstruktur überführt.
4. Publizieren des FME Workspaces auf dem FME FlowServer
Beim Publizieren ist darauf zu achten, dass der FME Workspace mindestens als JobSubmitter-Dienst registriert wird (weitere Diensttypen sind optional möglich). Außerdem ist der Text File Reader in den Service Properties im Parameter „Send HTTP Message Body to Reader“ auszuwählen. Hierüber werden die Inhalte des Webhooks an den FME Workspace beim Aufruf übergeben (vgl. nachfolgende Abbildungen).
5. Finalisierung der FME Flow Automation
Nach der Publikation des Workspaces in FME Flow erfolgt dessen Einbindung in die Automation. Wird in der Konfigurationsoberfläche der soeben vorbereiteten Automation auf den orangenen Button (+) geklickt, so erscheinen weitere Buttons mit Elementen, die der Automation beigefügt werden können. Um einen Workspace ausführen zu können, nachdem die Webhook URL angesprochen wurde, wird eine Aktion benötigt. Diese kann mit dem orangenen Symbol (zweites von oben) hinzugefügt werden. Es erscheint ein neues orangenes Element mit der Beschriftung „Action“ auf der Oberfläche. Wie aus der FME Workbench bekannt, müssen die beiden Elemente nun miteinander verbunden werden. Dies kann, vergleichbar zur Verbindung zweier Transformer in der FME Workbench, erledigt werden. Wird nun auf das orangene Element geklickt, so kann in dem sich öffnenden Dialog (Action Details) die Aktion „Run a Workspace“ ausgewählt werden und der soeben publizierte Workspace ausgewählt werden. Um dem Workspace den Webhook Inhalt zu übergeben, muss neben dem Parameter „webhook“ auf den Drop-Down Pfeil geklickt werden und unter >Webhook die Option „Message Content“ gewählt werden.
Wird auf „Apply“ geklickt, so ist die Automation konfiguriert. Sobald der grüne „Start“ Button in der Ecke oben rechts geklickt wird, ist die Automation aktiv.
6. Konfiguration eines Webhooks in Survey123
In diesem letzten Konfigurationsschritt ruft man die Einstellungen in Survey123 auf und trägt dort die kopierte Webhook URL ein. Survey123 ermöglicht eine Reihe von Konfigurationen wie z.B. Trigger-Ereignisse und Dateninhalte.
Im Anschluss kann mit dem Erstellen von Surveys begonnen werden. Beim Absenden eines Surveys werden die Inhalte automatisch an FME Server Flow übermittelt. Über „Jobs > Completed“ lassen sich die ausgeführten Surveys monitoren.
Mehr Informationen zu FME Server und FME Cloud finden Sie unter conterra.de/fme-plattform.