Eseguire frammenti di codice nei flussi di lavoro con operazioni inline Code in App per la logica di Azure

Si applica a: App per la logica di Azure (consumo + Standard)

Per creare ed eseguire un frammento di codice nel flusso di lavoro dell'app per la logica senza molto programma di installazione, è possibile usare il connettore predefinito Inline Code . Questo connettore ha un'azione che restituisce il risultato dal frammento di codice in modo che sia possibile usare tale output nelle azioni successive del flusso di lavoro.

Attualmente, il connettore ha una singola azione, che funziona meglio per un frammento di codice con gli attributi seguenti, ma più azioni sono in fase di sviluppo. Il connettore predefinito Inline Code presenta anche limiti diversi, in base al fatto che il flusso di lavoro dell'app per la logica sia Consumo o Standard.

Azione Linguaggio Versione del linguaggio Durata esecuzione Dimensioni dei dati Altre note
Eseguire codice JavaScript JavaScript Standard:
Node.js 16.x.x

Consumo:
Node.js 8.11.1

Per altre informazioni, vedere Oggetti predefiniti Standard.
Termina in 5 secondi o meno. Gestisce i dati fino a 50 MB. - Non richiede l'uso delle azioni Variabili, che non sono supportate dall'azione.

- Non supporta la funzione per l'esecuzione require() di JavaScript.

Per eseguire il codice che non rientra in questi attributi, è possibile creare e chiamare una funzione tramite Funzioni di Azure.

Questo articolo illustra come funziona l'azione in un flusso di lavoro di esempio che inizia con un trigger di Outlook Office 365. Il flusso di lavoro viene eseguito quando arriva un nuovo messaggio di posta elettronica 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 tali 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. Nella portale di Azure aprire il flusso di lavoro dell'app per la logica di consumo nella finestra di progettazione.

  2. Nella finestra di progettazione seguire questi passaggi generali per aggiungere l'azione Codice inline denominata Esegui codice JavaScript al flusso di lavoro.

    In questo esempio viene aggiunta l'azione nel trigger Office 365 Outlook. Per impostazione predefinita, l'azione contiene un codice di esempio, inclusa un'istruzione return .

    Screenshot che mostra l'azione Esegui codice JavaScript con 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 contenuto dinamico. Anche se si userà questo elenco 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 dalle parole chiave disponibili, ad esempio:

    Screenshot che mostra l'elenco Di completamento automatico del flusso di lavoro Consumo, Esegui codice JavaScript e parola chiave.

    Il frammento di codice di esempio seguente crea prima una variabile denominata myResult che archivia un'espressione regolare, che specifica un modello da corrispondere nel testo di input. 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 l'azione Consumo, Esegui codice JavaScript e codice di esempio che crea variabili.

  4. Con il cursore ancora nella casella Codice , dall'elenco di contenuto dinamico aperto individuare la sezione Quando arriva un nuovo messaggio di posta elettronica e selezionare la proprietà Body , che fa riferimento al corpo del messaggio di posta elettronica.

    Screenshot che mostra la proprietà

    L'elenco di contenuto dinamico mostra gli output dal trigger e le azioni precedenti quando tali output corrispondono al formato di input per la casella di modifica attualmente in stato attivo. Questo elenco semplifica l'uso e il riferimento di questi output dal flusso di lavoro. Per questo esempio, l'elenco mostra gli output dal trigger di Outlook, inclusa la proprietà Body del messaggio di posta elettronica.

    Dopo aver selezionato la proprietà Body , l'azione Esegui codice JavaScript risolve il token in un oggetto JSON di sola workflowContext lettura, che il frammento di codice può usare come input. L'oggetto workflowContext include proprietà che consentono l'accesso al codice agli output dal trigger e dalle azioni precedenti nel flusso di lavoro, ad esempio la proprietà del body trigger, che differisce dalla proprietà Body del messaggio di posta elettronica. Per altre informazioni sull'oggetto, vedere Output di trigger e azioni di riferimento usando l'oggettoworkflowContext workflowContext più avanti in questo articolo.

    Importante

    Se il frammento di codice fa riferimento ai nomi di azione che includono l'operatore dot (.), tali riferimenti devono racchiudere questi nomi di azione con 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 Actions e quindi aggiungere questi nomi di azione 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à Body del messaggio di posta elettronica selezionata dalla proprietà del body trigger, rinominare invece la seconda body proprietà 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 di consumo, l'azione Esegui codice JavaScript e la proprietà

    L'azione Esegui codice JavaScript non richiede in modo sintattico un'istruzione return . Tuttavia, includendo l'istruzione, è possibile fare riferimento più facilmente ai risultati dell'azione return più avanti nel flusso di lavoro usando il token Result nelle azioni successive.

    In questo esempio il frammento di codice restituisce il risultato chiamando la match() funzione, che trova le corrispondenze nel corpo del messaggio di posta elettronica all'espressione regolare specificata. L'azione Crea tabella HTML usa quindi il token Result 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 consumo completato.

  6. Al termine, salvare il flusso di lavoro.

Output del trigger di riferimento e dell'azione 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 dal trigger o da qualsiasi azione precedente. Quando si seleziona il token, l'azione Esegui codice JavaScript risolve il token in un oggetto JSON di sola lettura workflowContext . Questo oggetto consente all'utente di accedere al codice agli output dal trigger, alle azioni precedenti e al flusso di lavoro. L'oggetto usa la struttura seguente e include le actionsproprietà , triggere 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()
      }
   }
}

Nella tabella seguente sono disponibili altre informazioni su queste proprietà:

Proprietà Type Descrizione
actions Raccolta di oggetti Gli oggetti risultanti da tutte le azioni precedenti eseguite 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 alla funzione 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 spazi (" ") nel nome dell'azione con caratteri di sottolineatura (_). Questa raccolta di oggetti fornisce l'accesso ai valori delle proprietà dell'azione dall'esecuzione dell'istanza del flusso di lavoro corrente.
trigger Oggetto 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 Oggetto 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 corrente del flusso di lavoro.

Nell'esempio di questo articolo l'oggetto workflowContext JSON potrebbe avere le proprietà e i valori di esempio seguenti dal 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 il periodo di creazione del flusso di lavoro, il motore 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 dell'azione o del trigger 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 fa riferimento a un trigger o un nome di azione che usa l'operatore workflowContext dot (.).

Per aggiungere un trigger o un'azione come dipendenza, aggiungere i parametri Trigger o Actions come applicabili all'azione Esegui codice JavaScript . Si aggiungono quindi i nomi di trigger o azione visualizzati nella definizione JSON sottostante del flusso di lavoro.

Nota

Non è possibile aggiungere operazioni variabili , cicli come Per ogni o Fino 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 dei trigger e delle azioni. In questo modo, il codice include i riferimenti ai token risolti, anziché aggiungere solo gli output di trigger o azione come dipendenze esplicite.

Si supponga, ad esempio, che l'azione Invia messaggio di posta elettronica di approvazione del connettore di Outlook Office 365 precede il frammento di codice nel flusso di lavoro di esempio. Il frammento di codice di esempio seguente include un riferimento all'output SelectedOption da questa azione.

Per questo esempio, è necessario aggiungere solo il parametro Actions 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 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. Nella barra degli strumenti della finestra di progettazione del flusso di lavoro selezionare Visualizzazione 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 finestra di progettazione, sulla barra degli strumenti della visualizzazione codice selezionare Designer.

  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 come richiesto dallo scenario.

    Parametro Descrizione
    Actions Includere gli output delle azioni precedenti come dipendenze. Quando si seleziona questo parametro, viene richiesto di eseguire le azioni che si desidera 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. In questo esempio selezionare il parametro Actions .

    Screenshot che mostra l'azione Esegui codice JavaScript con il parametro Actions 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.

Informazioni di riferimento sulle azioni

Per altre informazioni sulla struttura e la 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