Workflows mit einem Webhook erstellen und aufrufen
Verwenden Sie einen Webhook, um Workflows von externen Systemen aus zu starten. Der Webhook stellt eine URL bereit, die von anderen Systemen aus aufgerufen werden kann, um den ThingWorx Server aufzurufen, damit er den Workflow startet.
Webhooks hinzufügen
Führen Sie die folgenden Schritte aus, um einen Webhook zu einem Workflow hinzuzufügen:
1. Öffnen Sie den Workflow, in dem Sie den Webhook hinzufügen möchten.
2. Klicken Sie auf
, und klicken Sie dann auf
, oder doppelklicken Sie auf
. Das Fenster "Trigger" wird angezeigt.
3. Wählen Sie Webhook aus. Das Konfigurationsfenster des Webhooks wird geöffnet.
Die URL, die zum Ausführen des Workflows verwendet werden muss, wird im Feld URL angezeigt.
4. Aktivieren Sie das Kontrollkästchen Asynchron, um den Webhook asynchron auszuführen.
Bei asynchroner Ausführung wird der Aufruf des Webhooks sofort zurückgegeben, und es wird nicht auf den Abschluss des Workflows gewartet.
5. Klicken Sie im Bereich Eingabenauf HINZUFÜGEN, um die Eingabeparameter anzugeben, die beim Aufruf des Webhooks an den Workflow übergeben werden. Geben Sie für jeden Parameter die folgende Informationen ein:
a. Name – Name des Eingabeparameters
b. Beschreibung – Beschreibung des Eingabeparameters
c. Basistyp – Basistyp des Eingabeparameters
Klicken Sie auf
Hinzufügen, um mehrere Eingabeparameter hinzuzufügen. Klicken Sie auf
, um hinzugefügte Eingabeparameter zu löschen.
6. Klicken Sie auf Fertig.
Nachdem Sie einen Webhook im Workflow definiert haben, können Sie einen Rückgabeparameter aus dem Workflow definieren. Das externe System kann Ergebnisse aus dem Ergebnis der Workflow-Ausführung abrufen und verarbeiten. Stellen Sie sicher, dass Sie den Webhook so definieren, dass er synchron ausgeführt wird, damit das externe System den Rückgabeparameter abrufen kann.
Gehen Sie wie folgt vor, um den Rückgabeparameter zu definieren:
1. Klicken Sie auf
, und klicken Sie dann auf
, oder doppelklicken Sie auf
. Das Fenster "Ausgabe" wird geöffnet.
2. Wählen Sie den Basistyp der Daten, die zurückgegeben werden sollen.
3. Ordnen Sie im Feld Daten eine Ausgabe der letzten Aktion im Workflow zu, um einen Wert an den Webhook zurückzugeben.
4. Klicken Sie auf FERTIG.
Webhooks aufrufen
Nachdem Sie einen Webhook für einen Workflow definiert haben, initiieren Sie die Workflow-Ausführung mithilfe der URL des Webhooks. Verwenden Sie eine HTTP-Anforderung mit dem Standardmechanismus, um die ThingWorx REST-APIs aufzurufen.
Die folgende Tabelle enthält Informationen zum Konfigurieren der HTTP-Anforderung:
Komponente der HTTP-Anforderung | Wert |
---|
Methode | POST |
Kopfzeilen | • Accept: application/json • Content-Type: application/json • Authorization: Basic <codierter Benutzername/codiertes Passwort> oder appkey: <Ihr vordefinierter Anwendungsschlüssel> | Um sicherzustellen, dass die Webhook-Authentifizierung irgendwann abläuft, empfiehlt PTC, einen Anwendungsschlüssel mit dem entsprechenden Ablaufdatum und der entsprechenden Uhrzeit zu verwenden. |
|
Text | application/json – JSON-Payload mit Eingaben für den Workflow, wobei die Namen den im Webhook angegebenen Eingabeparameter-Namen entsprechen müssen. Wenn der Workflow beispielsweise mit einem Webhook und folgenden zwei Eingabeparametern definiert ist: • Name: "param1", Type: "STRING" • Name: "param2", Type: "XML" und eine STRING-Ausgabe zurückgibt, lautet die JSON-Payload im Text der HTTP-Anforderung wie folgt: {"param1": "This is a string parameter", "param2": "<xml><field1>helloworld</field1></xml>"} |
Zum Testen können Sie Workflows mit Webhooks aufrufen, indem Sie ein Tool wie Postman oder curl verwenden. Das folgende Beispiel wird verwendet, um einen Webhook aufzurufen:
curl --request POST \
--url https://<server>/Thingworx/Things/FlowThing/Services/webhook_flow \
--header 'Accept: application/json' \
--header 'Authorization: Basic <encoded_user_name_password>'
--header 'Content-Type: application/json' \
--header 'cache-control: no-cache' \
--data '{ "param1": "This is a string parameter", "param2": "<xml><field>helloworld</field></xml>"}
Wenn der Webhook asynchron ausgeführt wird, erfolgt die Rückgabe der Anforderung zum Aufrufen des Webhooks sofort, und es werden keine Daten aus dem Workflow in der HTTP-Antwort zurückgegeben.
Wenn der Webhook synchron ausgeführt wird, wartet die Anforderung zum Aufrufen des Webhooks, bis der Workflow abgeschlossen ist, und die Daten aus dem Workflow werden in der HTTP-Antwort zurückgegeben. Das Antwortformat entspricht den Konventionen für ThingWorx Dienstaufrufe und wird durch den Accept-Header in der HTTP-Anforderung bestimmt.
In diesem Fall ist die Antwort in JSON wie folgt:
{
"dataShape": {
"fieldDefinitions": {
"result": {
"name": "result",
"description": "result",
"baseType": "STRING",
"ordinal": 0,
"aspects": {}
}
}
},
"rows": [
{
"result": "<workflow result here>"
}
]
}