ThingWorx Flow > Creazione e gestione di trigger > Creazione e chiamata di un workflow tramite un webhook
Creazione e chiamata di un workflow tramite un webhook
Utilizzare un webhook per avviare i workflow da sistemi esterni. Il webhook fornisce un URL che può essere richiamato da altri sistemi per chiamare il server ThingWorx per avviare il workflow.
Aggiunta di un webhook
Per aggiungere un webhook a un workflow, attenersi alla procedura descritta di seguito.
1. Aprire il workflow in cui si desidera aggiungere il webhook.
2. Fare clic su , quindi fare clic su o fare doppio clic su . Viene visualizzata la finestra Trigger.
3. Selezionare Webhook. Viene visualizzata la finestra di configurazione del webhook.
L'URL che deve essere utilizzato per eseguire il workflow viene visualizzato nel campo URL.
4. Selezionare la casella di controllo Asincrono per eseguire il webhook in modo asincrono.
Quando un webhook viene eseguito in modo asincrono, la chiamata al webhook restituisce un risultato immediatamente senza attendere il completamento del workflow.
5. Nella sezione Input fare clic su AGGIUNGI per specificare i parametri di input che vengono passati al workflow quando il webhook viene chiamato. Per ogni parametro immettere le informazioni seguenti:
a. Nome - Nome del parametro di input.
b. Descrizione - Descrizione del parametro di input.
c. Tipo di base - Tipo di base del parametro di input.
Per aggiungere più parametri di input, fare clic su Aggiungi. Fare clic su per eliminare tutti i parametri di input aggiunti.
6. Fare clic su Fine.
Dopo avere definito un webhook nel workflow, è possibile definire un parametro restituito dal workflow. Il sistema esterno può ottenere ed elaborare i risultati dal risultato dell'esecuzione del workflow. Affinché il sistema esterno ottenga il parametro restituito, assicurarsi che il webhook venga eseguito in modo sincrono.
Per definire il parametro restituito, attenersi alla procedura descritta di seguito.
1. Fare clic su , quindi fare clic su o fare doppio clic su . Viene visualizzata la finestra Output.
2. Selezionare il Tipo di base dei dati da restituire.
3. Nel campo Dati mappare un output dell'azione più recente nel workflow per restituire un valore al webhook.
4. Fare clic su FINE.
Richiamare un webhook
Dopo avere definito un webhook in un workflow, utilizzare l'URL del webhook per avviare l'esecuzione del workflow. Utilizzare una richiesta HTTP con il meccanismo standard per richiamare le API REST di ThingWorx.
La tabella seguente fornisce informazioni sulla configurazione della richiesta HTTP:
Componente richiesta HTTP
Valore
Metodo
POST
Intestazioni
Accept: application/json
Content-Type: application/json
Authorization: Basic <nomeutente/password codificati>
oppure
appkey: <chiave di accesso predefinita>
* 
Per garantire la scadenza dell'autenticazione di webhook, PTC consiglia di utilizzare una chiave di accesso con la data/ora di scadenza appropriata.
Corpo
application/json - Payload JSON con input al workflow, dove i nomi devono corrispondere ai nomi dei parametri di input specificati nel webhook.
Ad esempio, se il workflow è definito con un webhook, i due parametri di input seguenti:
Name: "param1", Type: "STRINGA"
Name: "param2", Type: "XML"
e restituisce un output di stringa, il payload JSON nel corpo della richiesta HTTP è il seguente:
{"param1": "This is a string parameter", "param2": "<xml><field1>helloworld</field1></xml>"}
Per i test è possibile richiamare workflow che dispongono di webhook utilizzando uno strumento come Postman o curl. L'esempio seguente viene utilizzato per richiamare un webhook:
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>"}
Se il webhook è impostato sull'esecuzione asincrona, la richiesta per richiamare il webhook restituisce un risultato immediatamente e nella risposta HTTP non vengono restituiti i dati dal workflow.
Se il webhook è impostato sull'esecuzione sincrona, la richiesta per richiamare il webhook attende il completamento del workflow e nella risposta HTTP vengono restituiti i dati dal workflow. Il formato della risposta segue le convenzioni di chiamata del servizio ThingWorx ed è determinato dall'intestazione Accept nella richiesta HTTP.
In questo caso la risposta è in formato JSON, come segue:
{
"dataShape": {
"fieldDefinitions": {
"result": {
"name": "result",
"description": "result",
"baseType": "STRING",
"ordinal": 0,
"aspects": {}
}
}
},
"rows": [
{
"result": "<workflow result here>"
}
]
}
È stato utile?