Aggiungere ed eseguire codice JavaScript inline con flussi di lavoro per App per la logica di Azure
Si applica a: App per la logica di Azure (a consumo e standard)
Per eseguire attività di integrazione personalizzate inline con il flusso di lavoro in App per la logica di Azure, è possibile aggiungere ed eseguire direttamente frammenti di codice JavaScript semplici dal flusso di lavoro nel portale di Azure. Per questa attività, usare l'azione Codice inline denominata Esegui codice JavaScript. Questa azione restituisce il risultato del frammento di codice in modo da poter usare tale output nelle azioni successive del flusso di lavoro. Questa azione presenta anche limiti differenti, a seconda che si disponga di un flusso di lavoro A consumo o Standard, e funziona meglio per i frammenti di codice con gli attributi seguenti:
Azione | Lingua | Versione del linguaggio | Durata dell'esecuzione | Dimensioni dei dati | Altre note |
---|---|---|---|---|---|
Esegui codice JavaScript | JavaScript | Standard: Node.js 16.x.x Consumo: Node.js 8.11.1 Per altre informazioni, vedere Oggetti predefiniti Standard. |
Termina in meno di 5 secondi. | Gestisce i dati fino a 50 MB. | - Non richiede l'uso delle azioni Variabili, non supportate dall'azione. - Non supporta la funzione require() per l'esecuzione di JavaScript. |
Per eseguire codice che non rientra in questi attributi, è possibile creare e chiamare una funzione usando Funzioni di Azure.
Questa guida illustra il funzionamento dell'azione in un flusso di lavoro di esempio che inizia con un trigger di Office 365 Outlook. Il flusso di lavoro viene eseguito quando arriva una nuova email nell'account di posta elettronica di Outlook associato. Il frammento di codice di esempio estrae tutti gli indirizzi di posta elettronica esistenti nel corpo del messaggio di posta elettronica e restituisce gli indirizzi come output che è possibile usare in un'azione successiva.
Il diagramma seguente mostra le evidenziazioni del flusso di lavoro di esempio:
Prerequisiti
Account e sottoscrizione di Azure. Se non si ha una sottoscrizione, è possibile iscriversi per creare un account Azure gratuito.
Flusso di lavoro dell'app per la logica in cui si vuole aggiungere il frammento di codice. Il flusso di lavoro deve già iniziare con un trigger.
Questo esempio di articolo usa il trigger di Office 365 Outlook denominato Quando arriva un nuovo messaggio di posta elettronica.
Se non si dispone di un flusso di lavoro, vedere la documentazione seguente:
In base al fatto che si disponga di un flusso di lavoro di app per la logica A consumo o Standard, esaminare i requisiti seguenti:
Flusso di lavoro A consumo
Collegarsi a un account di integrazione, vuoto o di altro tipo, dalla risorsa dell'app per la logica.
Importante
Assicurarsi di usare un account di integrazione appropriato per il caso d'uso o lo scenario.
Ad esempio, gli account di integrazione di livello gratuito sono destinati solo agli scenari esplorativi e ai carichi di lavoro, non agli scenari di produzione, sono limitati nell'utilizzo e nella velocità effettiva e non sono supportati da un contratto di servizio (SLA).
Altri livelli di account di integrazione comportano costi, ma includono il supporto del contratto di servizio, offrono una maggiore velocità effettiva e hanno limiti più elevati. Altre informazioni su livelli, limiti e prezzi degli account di integrazione.
Flusso di lavoro Standard
Nessun account di integrazione necessario.
Aggiungere l'azione Esegui codice JavaScript
Nel portale di Azure, aprire il flusso di lavoro dell'app per la logica A consumo nella finestra di progettazione.
Nella finestra di progettazione seguire questa procedura generale per aggiungere l'azione Codice inline denominata Esegui codice JavaScript al flusso di lavoro.
In questo esempio viene aggiunta l'azione sotto il trigger di Office 365 Outlook. Per impostazione predefinita, l'azione contiene codice di esempio, inclusa un'istruzione
return
.Nella casella Codice eliminare il codice di esempio e immettere il codice. Scrivere il codice inserito all'interno di un metodo, ma senza la firma del metodo.
Suggerimento
Quando il cursore si trova nella casella Codice, viene visualizzato l'elenco di contenuti dinamici. Anche se questo elenco verrà usato in un secondo momento, è possibile ignorare e lasciare aperto l'elenco per il momento. Non selezionare Nascondi.
Se si inizia a digitare una parola chiave riconosciuta, viene visualizzato l'elenco di completamento automatico in modo che sia possibile selezionare tra le parole chiave disponibili, ad esempio:
Il frammento di codice di esempio seguente crea prima una variabile denominata myResult che archivia un'espressione regolare la quale specifica un criterio di corrispondenza nel testo immesso. Il codice crea quindi una variabile denominata email che archivia il contenuto del corpo del messaggio di posta elettronica dagli output del trigger.
Con il cursore ancora nella casella Codice, nell'elenco di contenuti dinamici aperti individuare la sezione Quando arriva un nuovo messaggio di posta elettronica e selezionare la proprietà Corpo, che fa riferimento al corpo del messaggio di posta elettronica.
L'elenco di contenuto dinamico mostra gli output del trigger e le azioni precedenti quando tali output corrispondono al formato di input per la casella di modifica attualmente attiva. Questo elenco semplifica l'uso e il riferimento di questi output dal flusso di lavoro. Per questo esempio, l'elenco mostra gli output del trigger di Outlook, inclusa la proprietà Corpo del messaggio di posta elettronica.
Dopo aver selezionato la proprietà Corpo, l'azione Esegui codice JavaScript risolve il token in un oggetto JSON
workflowContext
di sola lettura, che il frammento di codice può usare come input. L'oggettoworkflowContext
include proprietà che consentono al codice di accedere agli output del trigger e alle azioni precedenti nel flusso di lavoro, ad esempio la proprietàbody
del trigger, che differisce dalla proprietà Corpo del messaggio di posta elettronica. Per altre informazioni sull'oggettoworkflowContext
, vedere Trigger di riferimento e output delle azioni usando l'oggetto workflowContext più avanti in questo articolo.Importante
Se il frammento di codice fa riferimento a nomi di azione che includono l'operatore dot (.), tali riferimenti devono racchiudere i nomi di azione tra parentesi quadre ([]) e virgolette ("",), ad esempio:
// Correct
workflowContext.actions["my.action.name"].body
// Incorrect
workflowContext.actions.my.action.name.body
Inoltre, nell'azione Esegui codice JavaScript è necessario aggiungere il parametro Azioni e quindi aggiungere questi nomi di azioni a tale parametro. Per altre informazioni, vedere Aggiungere dipendenze come parametri a un'azione Esegui codice JavaScript più avanti in questo articolo.
Per distinguere la proprietà Corpo del messaggio di posta elettronica selezionata dalla proprietà
body
del trigger, rinominare invece la seconda proprietàbody
Body
. Aggiungere il punto e virgola di chiusura (;) alla fine per completare l'istruzione del codice.L'azione Esegui codice JavaScript non richiede sintatticamente un'istruzione
return
. Tuttavia, includendo l'istruzionereturn
, è possibile fare riferimento più facilmente ai risultati dell'azione in un secondo momento nel flusso di lavoro usando il token Risultato nelle azioni successive.In questo esempio, il frammento di codice restituisce il risultato chiamando la funzione
match()
, che trova le corrispondenze nel corpo del messaggio di posta elettronica con l'espressione regolare specificata. L'azione Crea tabella HTML usa quindi il token Risultato per fare riferimento ai risultati dell'azione Esegui codice JavaScript e crea un singolo risultato.Al termine, salvare il flusso di lavoro.
Output di trigger e azioni di riferimento usando l'oggetto workflowContext
Dall'interno del frammento di codice nella finestra di progettazione, è possibile usare l'elenco di contenuto dinamico per selezionare un token che fa riferimento all'output del trigger o a qualsiasi azione precedente. Quando si seleziona il token, l'azione Esegui codice JavaScript risolve tale token in un oggetto JSON workflowContext
di sola lettura. Questo oggetto consente al codice di accedere agli output dal trigger, alle azioni precedenti e al flusso di lavoro. L'oggetto usa la struttura seguente e include le proprietà actions
, trigger
e workflow
, che sono anche oggetti:
{
"workflowContext": {
"actions": {
"<action-name-1>": @actions('<action-name-1>'),
"<action-name-2>": @actions('<action-name-2>')
},
"trigger": {
@trigger()
},
"workflow": {
@workflow()
}
}
}
La tabella seguente contiene altre informazioni su queste proprietà:
Proprietà | Type | Descrizione |
---|---|---|
actions |
Raccolta di oggetti | Oggetti risultato di qualsiasi azione precedente eseguita prima dell'esecuzione del frammento di codice. Ogni oggetto ha una coppia chiave-valore in cui la chiave è il nome dell'azione e il valore equivale al risultato dalla chiamata dellafunzione actions() con l'espressione @actions('<action-name>') . Il nome dell'azione usa lo stesso nome dell'azione visualizzato nella definizione del flusso di lavoro sottostante, che sostituisce gli spazi (" ") nel nome dell'azione con caratteri di sottolineatura (_). Questa raccolta di oggetti consente di accedere ai valori delle proprietà dell'azione dall'esecuzione dell'istanza del flusso di lavoro corrente. |
trigger |
Object | Oggetto risultato dal trigger in cui il risultato è equivalente alla chiamata della funzione trigger(). Questo oggetto fornisce l'accesso ai valori delle proprietà del trigger dall'esecuzione dell'istanza del flusso di lavoro corrente. |
workflow |
Object | Oggetto flusso di lavoro equivalente alla chiamata della funzione workflow(). Questo oggetto fornisce l'accesso ai valori delle proprietà, ad esempio il nome del flusso di lavoro, l'ID esecuzione e così via, dall'esecuzione dell'istanza del flusso di lavoro corrente. |
Nell'esempio di questo articolo, l'oggetto JSON workflowContext
potrebbe avere le proprietà e i valori di esempio seguenti del trigger di Outlook:
{
"workflowContext": {
"trigger": {
"name": "When_a_new_email_arrives",
"inputs": {
"host": {
"connection": {
"name": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Web/connections/office365"
}
},
"method": "get",
"path": "/Mail/OnNewEmail",
"queries": {
"includeAttachments": "False"
}
},
"outputs": {
"headers": {
"Pragma": "no-cache",
"Content-Type": "application/json; charset=utf-8",
"Expires": "-1",
"Content-Length": "962095"
},
"body": {
"Id": "AAMkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgBGAAAAAABmZwxUQtCGTqSPpjjMQeD",
"DateTimeReceived": "2019-03-28T19:42:16+00:00",
"HasAttachment": false,
"Subject": "Hello World",
"BodyPreview": "Hello World",
"Importance": 1,
"ConversationId": "AAQkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgAQ",
"IsRead": false,
"IsHtml": true,
"Body": "Hello World",
"From": "<sender>@<domain>.com",
"To": "<recipient-2>@<domain>.com;<recipient-2>@<domain>.com",
"Cc": null,
"Bcc": null,
"Attachments": []
}
},
"startTime": "2019-05-03T14:30:45.971564Z",
"endTime": "2019-05-03T14:30:50.1746874Z",
"scheduledTime": "2019-05-03T14:30:45.8778117Z",
"trackingId": "1cd5ffbd-f989-4df5-a96a-6e9ce31d03c5",
"clientTrackingId": "08586447130394969981639729333CU06",
"originHistoryName": "08586447130394969981639729333CU06",
"code": "OK",
"status": "Succeeded"
},
"workflow": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>",
"name": "<logic-app-workflow-name>",
"type": "Microsoft.Logic/workflows",
"location": "<Azure-region>",
"run": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>/runs/08586453954668694173655267965CU00",
"name": "08586453954668694173655267965CU00",
"type": "Microsoft.Logic/workflows/runs"
}
}
}
}
Aggiungere dipendenze come parametri a un'azione Esegui codice JavaScript
In alcuni scenari potrebbe essere necessario richiedere in modo esplicito che l'azione Esegui codice JavaScript includa output dal trigger o dalle azioni a cui fa riferimento il codice come dipendenze. Ad esempio, è necessario eseguire questo passaggio aggiuntivo quando il codice fa riferimento agli output che non sono disponibili in fase di esecuzione del flusso di lavoro. Durante la creazione del flusso di lavoro, il motore di App per la logica di Azure analizza il frammento di codice per determinare se il codice fa riferimento a qualsiasi output di trigger o azione. Se tali riferimenti esistono, il motore include automaticamente tali output. In fase di esecuzione del flusso di lavoro, se l'output del trigger o dell'azione a cui si fa riferimento non viene trovato nell'oggetto workflowContext
, il motore genera un errore. Per risolvere questo errore, è necessario aggiungere tale trigger o azione come dipendenza esplicita per l'azione Esegui codice JavaScript. Un altro scenario che richiede di eseguire questo passaggio è quando l'oggetto workflowContext
fa riferimento a un trigger o un nome di azione che usa l'operatore punto (.).
Per aggiungere un trigger o un'azione come dipendenza, aggiungere i parametri Trigger o Azioni come applicabile all'azione Esegui codice JavaScript. È quindi possibile aggiungere i nomi di trigger o azione così come vengono visualizzati nella definizione JSON sottostante del flusso di lavoro.
Nota
Non è possibile aggiungere operazioni Variabili, cicli come Per ogni o Fino a e indici di iterazione come dipendenze esplicite.
Se si prevede di riutilizzare il codice, assicurarsi di usare sempre la casella di modifica del frammento di codice per fare riferimento agli output di trigger e azioni. In questo modo, il codice include i riferimenti ai token risolti, invece di aggiungere semplicemente gli output del trigger o dell'azione come dipendenze esplicite.
Si supponga, ad esempio, che l'azione Invia messaggio di posta elettronica di approvazione del connettore Office 365 Outlook preceda il frammento di codice nel flusso di lavoro di esempio. Il frammento di codice di esempio seguente include un riferimento all'output SelectedOption di questa azione.
Per questo esempio, è necessario aggiungere solo il parametro Azioni e quindi aggiungere il nome JSON dell'azione, Send_approval_email
, al parametro. In questo modo, si specifica che l'azione Esegui codice JavaScript include in modo esplicito l'output dell'azione Invia messaggio di posta elettronica di approvazione.
Trovare il nome JSON del trigger o dell'azione
Prima di iniziare, è necessario il nome JSON per il trigger o l'azione nella definizione del flusso di lavoro sottostante.
I nomi nella definizione del flusso di lavoro usano un carattere di sottolineatura (_), non uno spazio.
Se un nome di azione usa l'operatore dot (.), includere tale operatore, ad esempio:
My.Action.Name
Sulla barra degli strumenti della finestra di progettazione dei flussi di lavoro, selezionare Vista codice. Nell'oggetto
actions
trovare il nome dell'azione.Ad esempio,
Send_approval_email
è il nome JSON per l'azione Invia messaggio di posta elettronica di approvazione.Per tornare alla visualizzazione della finestra di progettazione, nella barra degli strumenti della visualizzazione codice selezionare Finestra di progettazione.
Aggiungere ora il nome JSON all'azione Esegui codice JavaScript.
Aggiungere il nome del trigger o dell'azione all'azione Esegui codice JavaScript
Nell'azione Esegui codice JavaScript aprire l'elenco Aggiungi nuovo parametro.
Nell'elenco dei parametri selezionare i parametri seguenti in base alle esigenze dello scenario.
Parametro Descrizione Azioni Includere gli output delle azioni precedenti come dipendenze. Quando si seleziona questo parametro, vengono richieste le azioni da aggiungere. Trigger Includere gli output dal trigger come dipendenze. Quando si seleziona questo parametro, viene richiesto se includere i risultati del trigger. Quindi, nell'elenco Trigger selezionare Sì. Per questo esempio, selezionare il parametro Azioni.
Nella casella Elemento Azioni - 1 immettere il nome JSON dell'azione.
Per aggiungere un altro nome di azione, selezionare Aggiungi nuovo elemento.
Al termine, salvare il flusso di lavoro.
Riferimento azione
Per altre informazioni sulla struttura e sulla sintassi dell'azione Esegui codice JavaScript nella definizione del flusso di lavoro sottostante usando il linguaggio di definizione del flusso di lavoro, vedere la sezione di riferimento di questa azione.