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

Aggiungere l'azione Esegui codice JavaScript

  1. Nel portale di Azure, aprire il flusso di lavoro dell'app per la logica A consumo nella finestra di progettazione.

  2. 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.

    Screenshot che mostra l'azione Esegui codice JavaScript con il codice di esempio predefinito.

  3. 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:

    Screenshot che mostra il flusso di lavoro A consumo, l'azione Esegui codice JavaScript e l'elenco di completamento automatico delle parole chiave.

    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.

    Screenshot che mostra il flusso di lavoro A consumo, l'azione Esegui codice JavaScript e il codice di esempio che crea variabili.

  4. 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.

    Screenshot che mostra il flusso di lavoro A consumo, l'azione Esegui codice JavaScript, l'elenco di contenuto dinamico e la proprietà

    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'oggetto workflowContext 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'oggetto workflowContext, 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.

  5. 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.

    Screenshot che mostra il flusso di lavoro dell'app per la logica A consumo, l'azione Esegui codice JavaScript e la proprietà

    L'azione Esegui codice JavaScript non richiede sintatticamente un'istruzione return. Tuttavia, includendo l'istruzione return, è 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.

    Screenshot che mostra il flusso di lavoro dell'app per la logica A consumo completato.

  6. 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

  1. 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.

    Screenshot che mostra il nome dell'azione in JSON.

  2. Per tornare alla visualizzazione della finestra di progettazione, nella barra degli strumenti della visualizzazione codice selezionare Finestra di progettazione.

  3. Aggiungere ora il nome JSON all'azione Esegui codice JavaScript.

Aggiungere il nome del trigger o dell'azione all'azione Esegui codice JavaScript

  1. Nell'azione Esegui codice JavaScript aprire l'elenco Aggiungi nuovo parametro.

  2. 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 .
  3. Per questo esempio, selezionare il parametro Azioni.

    Screenshot che mostra l'azione Esegui codice JavaScript con il parametro Azioni selezionato.

  4. Nella casella Elemento Azioni - 1 immettere il nome JSON dell'azione.

    Screenshot che mostra la casella Actions Item -1 e il nome JSON dell'azione.

  5. Per aggiungere un altro nome di azione, selezionare Aggiungi nuovo elemento.

  6. 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.

Passaggi successivi