Trigger e azioni dei flussi di lavoro di app per la logicaTriggers and actions for logic app workflows

Tutte le app per la logica iniziano con un trigger seguito da azioni.All logic apps start with a trigger followed by actions. Questo argomento descrive i tipi di trigger e azioni che è possibile usare per la creazione di integrazioni di sistema e l'automazione di processi o flussi di lavoro aziendali tramite la compilazione di app per la logica.This topic describes the kinds of triggers and actions that you can use for creating system integrations and automating business workflows or processes by building logic apps.

Panoramica dei triggerTriggers overview

Tutte le app per la logica iniziano con un trigger, che specifica le chiamate che possono avviare l'esecuzione di un'app per la logica.All logic apps start with a trigger, which specifies the calls that can start a logic app run. Ecco i due modi in cui è possibile avviare un'esecuzione del flusso di lavoro:Here are the two ways that you can start initiate a run of your workflow:

Tutti i trigger contengono questi elementi di livello superiore:All triggers contain these top-level elements:

"trigger-name": {
    "type": "trigger-type",
    "inputs": { call-settings },
    "recurrence": {  
        "frequency": "Second|Minute|Hour|Day|Week|Month",
        "interval": recurrence-interval-based-on-frequency
    },
    "conditions": [ array-of-required-conditions ],
    "splitOn": "property-used-for-creating-separate-workflows",
    "operationOptions": "operation-options-for-trigger"
}

Tipi di trigger e inputTrigger types and inputs

Ogni tipo di trigger ha un'interfaccia e input diversi che ne definiscono il comportamento.Each trigger type has a different interface and different inputs that defines its behavior.

Tipo di triggerTrigger type DescrizioneDescription
RicorrenzaRecurrence Attivato in base a una pianificazione definita.Fires based on a defined schedule. È possibile impostare una data e un'ora future per l'attivazione di questo trigger.You can set a future date and time for firing this trigger. In base alla frequenza, è anche possibile specificare le ore e i giorni per l'esecuzione del flusso di lavoro.Based on the frequency, you can also specify times and days for running the workflow.
RichiestaRequest Trasforma l'app per la logica in un endpoint che è possibile chiamare. È denominato anche trigger "manuale".Makes your logic app into an endpoint that you can call, also known as a "manual" trigger.
HTTPHTTP Controlla (o ne esegue il polling) un endpoint Web HTTP.Checks, or polls, an HTTP web endpoint. L'endpoint HTTP deve essere conforme a un contratto di attivazione specifico, usando un modello asincrono "202" o restituendo una matrice.The HTTP endpoint must conform to a specific triggering contract either by using a "202" asynchronous pattern or by returning an array.
ApiConnectionApiConnection Esegue il polling come un trigger HTTP, ma usa API gestite da Microsoft.Polls like an HTTP trigger, but uses Microsoft-managed APIs.
HTTPWebhookHTTPWebhook Trasforma l'app per la logica in un endpoint che può essere chiamato, ad esempio il trigger Request, ma chiama un URL specificato per la registrazione e l'annullamento della registrazione.Makes your logic app into a callable endpoint, like the Request trigger, but calls a specified URL for registering and unregistering.
ApiConnectionWebhookApiConnectionWebhook Funziona come il trigger HTTPWebhook, ma usa API gestite da Microsoft.Works like the HTTPWebhook trigger, but uses Microsoft-managed APIs.

Per informazioni su altri elementi, vedere Linguaggio di definizione del flusso di lavoro.For information about other details, see Workflow Definition Language.

Trigger RecurrenceRecurrence trigger

Questo trigger viene eseguito in base alla ricorrenza e alla pianificazione specificate e offre un modo semplice per eseguire regolarmente un flusso di lavoro.This trigger runs based on the recurrence and schedule that you specify and provides an easy way for regularly running a workflow. Ecco un esempio di trigger di ricorrenza di base che viene eseguito ogni giorno:Here's a basic recurrence trigger example that runs daily:

"myRecurrenceTrigger": {
    "type": "Recurrence",
    "recurrence": {
        "frequency": "Day",
        "interval": 1
    }
}

È anche possibile impostare una data e un'ora di inizio per l'attivazione del trigger.You can also schedule a start date and time for firing the trigger. Ad esempio, per iniziare un report settimanale ogni lunedì, è possibile pianificare l'avvio dell'app per la logica in un lunedì specifico, come in questo esempio:For example, to start a weekly report every Monday, you can schedule the logic app to start on a specific Monday like this example:

"myRecurrenceTrigger": {
    "type": "Recurrence",
    "recurrence": {
        "frequency": "Week",
        "interval": "1",
        "startTime" : "2017-09-18T00:00:00Z"
    }
}

Ecco la definizione per questo trigger:Here's the definition for this trigger:

"myRecurrenceTrigger": {
    "type": "Recurrence",
    "recurrence": {
        "frequency": "second|minute|hour|day|week|month",
        "interval": recurrence-interval-based-on-frequency,
        "schedule": {
            // Applies only when frequency is Day or Week. Separate values with commas.
            "hours": [ one-or-more-hour-marks ], 
            // Applies only when frequency is Day or Week. Separate values with commas.
            "minutes": [ one-or-more-minute-marks ], 
            // Applies only when frequency is Week. Separate values with commas.
            "weekDays": [ "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday" ] 
        },
        "startTime": "start-date-time-with-format-YYYY-MM-DDThh:mm:ss",
        "timeZone": "specify-time-zone"
    }
}
Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
frequencyfrequency Yes StringString Unità di tempo per la frequenza di attivazione del trigger.The unit of time for how often the trigger fires. Usare solo uno di questi valori: "second", "minute", "hour", "day", "week" o "month"Use only one of these values: "second", "minute", "hour", "day", "week", or "month"
intervalinterval Yes IntegerInteger Numero intero positivo che indica l'intervallo con cui viene eseguito il flusso di lavoro in base alla frequenza.A positive integer that describes how often the workflow runs based on the frequency.

Ecco gli intervalli minimo e massimo:Here are the minimum and maximum intervals:

- Mese: 1-16 mesi- Month: 1-16 months
- Giorno: 1-500 giorni- Day: 1-500 days
- Ora: 1-12.000 ore- Hour: 1-12,000 hours
- Minuto: 1-72.000 minuti- Minute: 1-72,000 minutes
- Secondo: 1-9.999.999 secondi- Second: 1-9,999,999 seconds

Ad esempio, se l'intervallo è 6 e la frequenza è "month", la ricorrenza è ogni 6 mesi.For example, if the interval is 6, and the frequency is "month", then the recurrence is every 6 months.

timeZonetimeZone NoNo StringString Valido solo quando si specifica un'ora di inizio, perché il trigger non accetta la differenza dall'ora UTC.Applies only when you specify a start time because this trigger doesn't accept UTC offset. Specificare il fuso orario che si vuole applicare.Specify the time zone that you want to apply.
startTimestartTime NoNo StringString Specificare la data e l'ora di inizio in questo formato:Specify the start date and time in this format:

AAAA-MM-GGThh:mm:ss se si specifica un fuso orarioYYYY-MM-DDThh:mm:ss if you specify a time zone

-oppure--or-

AAAA-MM-GGThh:mm:ssZ se non si specifica un fuso orarioYYYY-MM-DDThh:mm:ssZ if you don't specify a time zone

Ad esempio, per il 18 settembre 2017 alle 14.00, specificare "2017-09-18T14:00:00" e indicare un fuso orario, ad esempio l'ora solare del Pacifico.So for example, if you want September 18, 2017 at 2:00 PM, then specify "2017-09-18T14:00:00" and specify a time zone such as "Pacific Standard Time". In alternativa, specificare "2017-09-18T14:00:00Z" senza un fuso orario.Or, specify "2017-09-18T14:00:00Z" without a time zone.

Nota: l'ora di inizio deve seguire la specifica di data e ora ISO 8601 nel formato di data e ora UTC, ma senza differenza dall'ora UTC.Note: This start time must follow the ISO 8601 date time specification in UTC date time format, but without a UTC offset. Se non si specifica un fuso orario, è necessario aggiungere la lettera "Z" alla fine senza spazi.If you don't specify a time zone, you must add the letter "Z" at the end without any spaces. La lettera "Z" fa riferimento all'ora nautica equivalente.This "Z" refers to the equivalent nautical time.

Per le pianificazioni semplici, l'ora di inizio è la prima occorrenza, mentre per le pianificazioni complesse il trigger non viene attivato prima dell'ora di inizio.For simple schedules, the start time is the first occurrence, while for complex schedules, the trigger doesn't fire any sooner than the start time. Per altre informazioni sulle date e le ore di inizio, vedere Creare e pianificare attività eseguite regolarmente.For more information about start dates and times, see Create and schedule regularly running tasks.

weekDaysweekDays NoNo Stringa o matrice di stringheString or string array Se si specifica "Week" per frequency, è possibile specificare uno o più giorni, separati da virgole, in cui eseguire il flusso di lavoro: "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" e "Sunday"If you specify "Week" for frequency, you can specify one or more days, separated by commas, when you want to run the workflow: "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", and "Sunday"
hourshours NoNo Intero o matrice di interoInteger or integer array Se si specifica "Day" o "Week" per frequency, è possibile specificare uno o più numeri interi compresi tra 0 e 23, separati da virgole, come ore del giorno in cui eseguire il flusso di lavoro.If you specify "Day" or "Week" for frequency, you can specify one or more integers from 0 to 23, separated by commas, as the hours of the day when you want to run the workflow.

Ad esempio, se si specifica "10", "12" e "14", gli indicatori di ora corrisponderanno alle 10.00, alle 12.00 e alle 14.00.For example, if you specify "10", "12" and "14", you get 10 AM, 12 PM, and 2 PM as the hour marks.

minutesminutes NoNo Intero o matrice di interoInteger or integer array Se si specifica "Day" o "Week" per frequency, è possibile specificare uno o più numeri interi compresi tra 0 e 59, separati da virgole, come minuti dell'ora in cui eseguire il flusso di lavoro.If you specify "Day" or "Week" for frequency, you can specify one or more integers from 0 to 59, separated by commas, as the minutes of the hour when you want to run the workflow.

Ad esempio, è possibile specificare "30" come indicatore dei minuti e, usando l'esempio precedente per le ore del giorno, si otterranno le ore 10.30, 12.30 e 14.30.For example, you can specify "30" as the minute mark and using the previous example for hours of the day, you get 10:30 AM, 12:30 PM, and 2:30 PM.

Ad esempio, il trigger di ricorrenza specifica che l'app per la logica viene eseguita ogni settimana di lunedì alle 10.30, 12.30 e 14.30 ora solare Pacifico, a partire non prima del 9 settembre 2017 alle 14.00:For example, this recurrence trigger specifies that your logic app runs weekly every Monday at 10:30 AM, 12:30 PM, and 2:30 PM Pacific Standard Time, starting no sooner than September 9, 2017 at 2:00 PM:

{
    "triggers": {
        "myRecurrenceTrigger": {
            "type": "Recurrence",
            "recurrence": {
                "frequency": "Week",
                "interval": 1,
                "schedule": {
                    "hours": [
                        10,
                        12,
                        14
                    ],
                    "minutes": [
                        30
                    ],
                    "weekDays": [
                        "Monday"
                    ]
                },
               "startTime": "2017-09-07T14:00:00",
               "timeZone": "Pacific Standard Time"
            }
        }
    }
}

Per altre informazioni con alcuni esempi di ricorrenza e ora di inizio per questo trigger, vedere Creare e pianificare attività eseguite regolarmente.For more information with recurrence and start time examples for this trigger, see Create and schedule regularly running tasks.

Trigger di richiestaRequest trigger

Questo trigger funge da endpoint che è possibile usare per chiamare l'app per la logica tramite una richiesta HTTP.This trigger serves as an endpoint that you can use for calling your logic app through an HTTP request. Un trigger request è simile a questo esempio:A request trigger looks like this example:

"myRequestTrigger": {
    "type": "Request",
    "kind": "Http",
    "inputs": {
        "schema": {
            "type": "Object",
            "properties": {
                "myInputProperty1": { "type" : "string" },
                "myInputProperty2": { "type" : "number" }
            },
            "required": [ "myInputProperty1" ]
        }
    }
} 

Questo trigger include anche una proprietà facoltativa denominata schema:This trigger has an optional property called schema:

Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
schemaschema NoNo OggettoObject Schema JSON che convalida la richiesta in ingresso.A JSON schema that validates the incoming request. È utile per indicare le proprietà a cui fare riferimento nei passaggi successivi del flusso di lavoro.Useful for helping subsequent workflow steps know which properties to reference.

Per richiamare questo endpoint, è necessario chiamare l'API listCallbackUrl.To invoke this endpoint, you need to call the listCallbackUrl API. Vedere Workflow Service REST API (API REST del servizio di flusso di lavoro).See Workflow Service REST API.

Trigger HTTPHTTP trigger

I trigger HTTP eseguono il polling di un endpoint specificato e controllano la risposta per determinare se il flusso di lavoro deve essere eseguito.HTTP triggers poll a specified endpoint and check the response to determine whether the workflow should run. In questo caso, l'oggetto inputs accetta i parametri necessari per la costruzione di una chiamata HTTP:Here, the inputs object takes these parameters required for constructing an HTTP call:

Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
staticomethod Yes StringString Usare uno di questi metodi HTTP: "GET", "POST", "PUT", "DELETE", "PATCH" o "HEAD"Uses one of these HTTP methods: "GET", "POST", "PUT", "DELETE", "PATCH", or "HEAD"
Uriuri Yes StringString Endpoint HTTP o HTTPS controllato dal trigger.The HTTP or HTTPs endpoint that the trigger checks. Dimensione massima della stringa: 2 KBMaximum string size: 2 KB
queryqueries NoNo OggettoObject Rappresenta tutti i parametri di query che si vuole includere nell'URL.Represents any query parameters that you want to include in the URL.

"queries": { "api-version": "2015-02-01" }, ad esempio, aggiunge ?api-version=2015-02-01 all'URL.For example, "queries": { "api-version": "2015-02-01" } adds ?api-version=2015-02-01 to the URL.

headersheaders NoNo OggettoObject Rappresenta ogni intestazione inviata nella richiesta.Represents each header that's sent in the request.

Ad esempio, per impostare il linguaggio e il tipo in una richiesta:For example, to set the language and type on a request:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

bodybody NoNo OggettoObject Rappresenta il payload inviato all'endpoint.Represents the payload that's sent to the endpoint.
retryPolicyretryPolicy NoNo OggettoObject Usare questo oggetto per personalizzare il comportamento in caso di nuovo tentativo per gli errori 4xx o 5xx.Use this object for customizing the retry behavior for 4xx or 5xx errors. Per altre informazioni, vedere il Criteri di ripetizione dei tentativi.For more information, see Retry policies.
authenticationauthentication NoNo OggettoObject Rappresenta il metodo che deve essere usato dalla richiesta per l'autenticazione.Represents the method that the request should use for authentication. Per altre informazioni, vedere Autenticazione in uscita dell'Utilità di pianificazione.For more information, see Scheduler Outbound Authentication.

Oltre all'Utilità di pianificazione, è supportata un'altra proprietà: authority.Beyond Scheduler, there is one more supported property: authority. Per impostazione predefinita, questo valore è https://login.windows.net quando non è specificato, ma è possibile usare un valore diverso, ad esempio https://login.windows\-ppe.net.By default, this value is https://login.windows.net when not specified, but you can use a different value, such ashttps://login.windows\-ppe.net.

Con il trigger HTTP, l'API HTTP deve essere conforme a un modello specifico per poter interagire correttamente con l'app per la logica.To work well with your logic app, the HTTP trigger requires the HTTP API to conform with a specific pattern. Il trigger riconosce queste proprietà:The trigger recognizes these properties:

ResponseResponse ObbligatorioRequired DescrizioneDescription
Codice di statoStatus code Yes Il codice di stato 200 ("OK") determina un'esecuzione.The status code 200 ("OK") causes a run. Nessun altro codice di stato attiva un'esecuzione.Any other status code doesn't cause a run.
Intestazione retry-afterRetry-after header NoNo Numero di secondi prima che l'app per la logica esegua di nuovo il polling dell'endpoint.The number of seconds until the logic app polls the endpoint again.
Intestazione LocationLocation header NoNo URL da chiamare al successivo intervallo di polling.The URL to call at the next polling interval. Se non è specificato, viene usato l'URL originale.If not specified, the original URL is used.

Ecco alcuni esempi di comportamento per tipi di richieste diversi:Here are some example behaviors for different types of requests:

Codice della rispostaResponse code Nuovo tentativo dopoRetry after ComportamentoBehavior
200200 {none}{none} Esegue il flusso di lavoro e quindi controlla di nuovo la presenza di altri dati dopo la ricorrenza definita.Run the workflow, then check again for more data after the defined recurrence.
200200 10 secondi10 seconds Esegue il flusso di lavoro e quindi controlla di nuovo la presenza di altri dati dopo 10 secondi.Run the workflow, then check again for more data after 10 seconds.
202202 60 secondi60 seconds Non attiva il flusso di lavoro.Don't trigger the workflow. Il tentativo successivo viene eseguito dopo un minuto, in base alla ricorrenza definita.The next attempt happens in one minute, subject to the defined recurrence. Se la ricorrenza definita è inferiore a un minuto, l'intestazione retry-after ha la precedenza.If the defined recurrence is less than one minute, the retry-after header takes precedence. In caso contrario, viene usata la ricorrenza definita.Otherwise, the defined recurrence is used.
400400 {none}{none} Richiesta non valida, non esegue il flusso di lavoro.Bad request, don't run the workflow. Se non è definito alcun oggetto retryPolicy, viene usato il criterio predefinito.If no retryPolicy is defined, then the default policy is used. Dopo aver raggiunto il numero di tentativi, il trigger controlla di nuovo la presenza di dati dopo la ricorrenza definita.After the number of retries has been reached, the trigger checks again for data after the defined recurrence.
500500 {none}{none} Errore del server, il flusso di lavoro non viene eseguito.Server error, don't run the workflow. Se non è definito alcun oggetto retryPolicy, viene usato il criterio predefinito.If no retryPolicy is defined, then the default policy is used. Dopo aver raggiunto il numero di tentativi, il trigger controlla di nuovo la presenza di dati dopo la ricorrenza definita.After the number of retries has been reached, the trigger checks again for data after the defined recurrence.

Ecco gli output del trigger HTTP:Here are the HTTP trigger outputs:

Nome dell'elementoElement name TipoType DescrizioneDescription
headersheaders OggettoObject Intestazioni della risposta HTTPThe headers of the HTTP response
bodybody OggettoObject Corpo della risposta HTTPThe body of the HTTP response

Trigger ApiConnectionAPI Connection trigger

Il trigger ApiConnection è simile al trigger HTTP dal punto di vista della funzionalità di base.The API connection trigger is similar to the HTTP trigger in its basic functionality. I parametri per identificare l'azione sono tuttavia diversi.However, the parameters for identifying the action are different. Di seguito è fornito un esempio:Here is an example:

"myDailyReportTrigger": {
    "type": "ApiConnection",
    "inputs": {
        "host": {
            "api": {
                "runtimeUrl": "https://myarticles.example.com/"
            }
        },
        "connection": {
            "name": "@parameters('$connections')['myconnection'].name"
        }
    },  
    "method": "POST",
    "body": {
        "category": "awesomest"
    }
}
Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
hosthost Yes OggettoObject Gateway ospitato e ID per l'app per le APIThe hosted gateway and ID for the API App
staticomethod Yes StringString Usare uno di questi metodi HTTP: "GET", "POST", "PUT", "DELETE", "PATCH" o "HEAD"Uses one of these HTTP methods: "GET", "POST", "PUT", "DELETE", "PATCH", or "HEAD"
queryqueries NoNo OggettoObject Rappresenta tutti i parametri di query che si vuole includere nell'URL.Represents any query parameters that you want to include in the URL.

"queries": { "api-version": "2015-02-01" }, ad esempio, aggiunge ?api-version=2015-02-01 all'URL.For example, "queries": { "api-version": "2015-02-01" } adds ?api-version=2015-02-01 to the URL.

headersheaders NoNo OggettoObject Rappresenta ogni intestazione inviata nella richiesta.Represents each header that's sent in the request.

Ad esempio, per impostare il linguaggio e il tipo in una richiesta:For example, to set the language and type on a request:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

bodybody NoNo OggettoObject Rappresenta il payload inviato all'endpoint.Represents the payload that's sent to the endpoint.
retryPolicyretryPolicy NoNo OggettoObject Usare questo oggetto per personalizzare il comportamento in caso di nuovo tentativo per gli errori 4xx o 5xx.Use this object for customizing the retry behavior for 4xx or 5xx errors. Per altre informazioni, vedere il Criteri di ripetizione dei tentativi.For more information, see Retry policies.
authenticationauthentication NoNo OggettoObject Rappresenta il metodo che deve essere usato dalla richiesta per l'autenticazione.Represents the method that the request should use for authentication. Per altre informazioni, vedere Autenticazione in uscita dell'Utilità di pianificazione.For more information, see Scheduler Outbound Authentication.

Ecco le proprietà per l'oggetto host:For the host object, here are the properties:

Nome dell'elementoElement name ObbligatorioRequired DescrizioneDescription
api runtimeUrlapi runtimeUrl Yes Endpoint per l'API gestitaThe endpoint for the managed API
connection nameconnection name Nome della connessione API gestita usata dal flusso di lavoro.The name of the managed API connection that the workflow uses. Deve fare riferimento a un parametro denominato $connection.Must reference a parameter named $connection.

Ecco gli output per un trigger ApiConnection:Here are the outputs for an API Connection trigger:

Nome dell'elementoElement name TipoType DescrizioneDescription
headersheaders OggettoObject Intestazioni della risposta HTTPThe headers of the HTTP response
bodybody OggettoObject Corpo della risposta HTTPThe body of the HTTP response

Trigger HTTPWebhookHTTPWebhook trigger

Il trigger HTTPWebhook fornisce un endpoint, analogamente al trigger Request, ma il trigger HTTPWebhook chiama anche un URL specificato per la registrazione e l'annullamento della registrazione.The HTTPWebhook trigger provides an endpoint, similar to the Request trigger, but the HTTPWebhook trigger also calls a specified URL for registering and unregistering. Ecco un esempio di come si presenta un trigger HTTPWebhook:Here's an example of what an HTTPWebhook trigger might look like:

"myAppsSpotTrigger": {
    "type": "HttpWebhook",
    "inputs": {
        "subscribe": {
            "method": "POST",
            "uri": "https://pubsubhubbub.appspot.com/subscribe",
            "headers": { },
            "body": {
                "hub.callback": "@{listCallbackUrl()}",
                "hub.mode": "subscribe",
                "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
            },
            "authentication": { },
            "retryPolicy": { }
        },
        "unsubscribe": {
            "url": "https://pubsubhubbub.appspot.com/subscribe",
            "body": {
                "hub.callback": "@{workflow().endpoint}@{listCallbackUrl()}",
                "hub.mode": "unsubscribe",
                "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
            },
            "method": "POST",
            "authentication": { }
        }
    },
    "conditions": [ ]
}

Molte di queste sezioni sono facoltative e il comportamento del trigger HTTPWebhook dipende dalle sezioni specificate o omesse.Many of these sections are optional, and the HTTPWebhook trigger behavior depends on the sections that you provide or omit. Ecco le proprietà per il trigger HTTPWebhook:Here are the properties for the HTTPWebhook trigger:

Nome dell'elementoElement name ObbligatorioRequired DescrizioneDescription
subscribesubscribe NoNo Specifica la richiesta in uscita da chiamare quando viene creato il trigger ed esegue la registrazione iniziale.Specifies the outgoing request to call when the trigger is created and performs the initial registration.
unsubscribeunsubscribe NoNo Specifica la richiesta in uscita da chiamare quando viene eliminato il trigger.Specifies the outgoing request to call when the trigger is deleted.

È possibile specificare i limiti per un'azione webhook allo stesso modo dei limiti asincroni HTTP.You can specify limits on a webhook action in the same way as HTTP Asynchronous Limits. Ecco altre informazioni sulle azioni subscribe e unsubscribe:Here is more information about the subscribe and unsubscribe actions:

  • L'azione subscribe viene chiamata perché il trigger possa iniziare a essere in ascolto degli eventi.subscribe is called so that the trigger can start listening to events. Questa chiamata in uscita inizia con gli stessi parametri delle azioni HTTP standard.This outgoing call starts with the same parameters as standard HTTP actions. Questa chiamata viene effettuata ogni volta che il flusso di lavoro viene modificato, ad esempio quando vengono aggiornate le credenziali o cambiano i parametri di input del trigger.This call happens when the workflow changes in any way, for example, when the credentials are rolled, or the trigger's input parameters change.

    Per supportare la chiamata, la funzione @listCallbackUrl() restituisce un URL univoco per questo trigger specifico nel flusso di lavoro.To support this call, the @listCallbackUrl() function returns a unique URL for this specific trigger in the workflow. Questo URL rappresenta l'identificatore univoco per gli endpoint che usano l'API REST del servizio.This URL represents the unique identifier for the endpoints that use the service's REST API.

  • L'azione unsubscribe viene chiamata automaticamente quando un'operazione, tra cui quelle seguenti, rende il trigger non valido:unsubscribe is automatically called when an operation renders this trigger invalid, including these operations:

    • Eliminazione o disabilitazione del trigger.Deleting or disabling the trigger.
    • Eliminazione o disabilitazione del flusso di lavoro.Deleting or disabling the workflow.
    • Eliminazione o disabilitazione della sottoscrizione.Deleting or disabling the subscription.

    I parametri per questa funzione sono gli stessi del trigger HTTP.The parameters for this function are the same as the HTTP trigger.

Ecco gli output del trigger HTTPWebhook e il contenuto della richiesta in ingresso:Here are the outputs from the HTTPWebhook trigger and are the contents of the incoming request:

Nome dell'elementoElement name TipoType DescrizioneDescription
headersheaders OggettoObject Intestazioni della risposta HTTPThe headers of the HTTP response
bodybody OggettoObject Corpo della risposta HTTPThe body of the HTTP response

CondizioniConditions

Per qualsiasi trigger, è possibile usare una o più condizioni per determinare se il flusso di lavoro deve essere eseguito o meno.For any trigger, you can use one or more conditions to determine whether the workflow should run or not. Ad esempio:For example:

"myDailyReportTrigger": {
    "type": "Recurrence",
    "conditions": [ 
        {
            "expression": "@parameters('sendReports')"
        } 
    ],
    "recurrence": {
        "frequency": "Day",
        "interval": 1
    }
}

In questo caso, il report viene attivato solo mentre il parametro sendReports del flusso di lavoro è impostato su true.In this case, the report only triggers while the workflow's sendReports parameter is set to true. Le condizioni infine possono fare riferimento al codice di stato del trigger.Finally, conditions can reference the status code of the trigger. È possibile, ad esempio, avviare un flusso di lavoro solo quando il sito Web restituisce un codice di stato 500, ad esempio:For example, you can start a workflow only when your website returns a status code 500, for example:

"conditions": [ 
    {  
      "expression": "@equals(triggers().code, 'InternalServerError')"  
    }  
]  

Nota

Quando un'espressione fa riferimento a un codice di stato del trigger, il comportamento predefinito, ovvero l'attivazione solo con il codice 200 ("OK"), viene sostituito.When any expression references a trigger's status code in any way, the default behavior, which is trigger only on 200 "OK", is replaced. Se, ad esempio, si vuole eseguire l'attivazione sia con il codice di stato 200 che con il codice di stato 201, è necessario includere @or(equals(triggers().code, 200),equals(triggers().code,201)) come condizione.For example, if you want to trigger on both status code 200 and status code 201, you have to include: @or(equals(triggers().code, 200),equals(triggers().code,201)) as your condition.

Avviare più esecuzioni per una richiestaStart multiple runs for a request

Per avviare più esecuzioni per una singola richiesta, splitOn è utile, ad esempio, quando si vuole eseguire il polling di un endpoint che può avere più elementi nuovi tra gli intervalli di polling.To kick off multiple runs for a single request, splitOn is useful, for example, when you want to poll an endpoint that can have multiple new items between polling intervals.

Con splitOn, si specifica la proprietà nel payload della risposta contenente le matrici di elementi, ognuno dei quali verrà usato per avviare un'esecuzione del trigger.With splitOn, you specify the property inside the response payload that contains the array of items, each of which you want to use to start a run of the trigger. Ad esempio, si supponga un'API che restituisce questa risposta:For example, imagine you have an API that returns this response:

{
    "status": "Succeeded",
    "rows": [
        {  
            "id" : 938109380,
            "name" : "myFirstRow"
        },
        {
            "id" : 938109381,
            "name" : "mySecondRow"
        }
    ]
}

L'app per la logica richiede solo il contenuto di rows, in modo da poter costruire il trigger come in questo esempio:Your logic app only needs the rows content, so you can construct your trigger like this example:

"mySplitterTrigger": {
    "type": "Http",
    "recurrence": {
        "frequency": "minute",
        "interval": 1
    },
    "intputs": {
        "uri": "https://mydomain.com/myAPI",
        "method": "GET"
    },
    "splitOn": "@triggerBody()?.rows"
}

Nota

Se si usa il comando SplitOn, non è possibile ottenere le proprietà esterne alla matrice. Di conseguenza, in questo esempio non è possibile ottenere la proprietà status nella risposta restituita dall'API.If you use the SplitOn command, you can't get the properties that are outside the array, so for this example, you can't get the status property in the response returned from the API. In questo esempio, inoltre, viene usato l'operatore ? per evitare un errore se la proprietà rows non è presente.Also, in this example, we use the ? operator so we can avoid a failure if the rows property doesn't exist.

Di conseguenza, nella definizione del flusso di lavoro @triggerBody().name restituisce myFirstRow per la prima esecuzione e mySecondRow per la seconda esecuzione.So in the workflow definition, @triggerBody().name returns myFirstRow for the first run, and mySecondRow for the second run. Gli output del trigger sono simili a questo esempio:The trigger outputs look like this example:

{
    "body": {
        "id": 938109380,
        "name": "mySecondRow"
    }
}
{
    "body": {
        "id": 938109381,
        "name": "mySecondRow"
    }
}

Istanza di esecuzione singolaSingle run instance

È possibile configurare i trigger di ricorrenza perché vengano attivati solo dopo il completamento di tutte le esecuzioni attive.You can configure recurrence triggers so that they fire only when all active runs have completed. Se una ricorrenza pianificata avviene durante l'esecuzione dell'istanza del flusso di lavoro, il trigger viene ignorato e attende fino al successivo intervallo di ricorrenza pianificata prima di riprovare.If a scheduled recurrence happens while workflow instance is running, the trigger skips and waits until the next scheduled recurrence interval to check again. Per configurare questa impostazione, impostare la proprietà operationOptions su singleInstance:To configure this setting, set the operationOptions property to singleInstance:

"triggers": {
    "myHTTPTrigger": {
        "type": "Http",
        "inputs": { ... },
        "recurrence": { ... },
        "operationOptions": "singleInstance"
    }
}

Panoramica delle azioniActions overview

Esistono molti tipi di azioni, ognuna con un comportamento univoco.There are many types of actions, each with unique behavior. Ogni tipo di azione ha input diversi che ne definiscono il comportamento.Each action type has different inputs that define an action's behavior. Le azioni di raccolta possono contenere molte altre azioni.Collection actions can contain many other actions within themselves.

Azioni standardStandard actions

Tipo di azioneAction type DescrizioneDescription
HTTPHTTP Chiama un endpoint Web HTTP.Calls an HTTP web endpoint.
ApiConnectionApiConnection Funziona come l'azione HTTP, ma usa API gestite da Microsoft.Works like the HTTP action, but uses Microsoft-managed APIs.
ApiConnectionWebhookApiConnectionWebhook Funziona come HTTPWebhook, ma usa API gestite da Microsoft.Works like HTTPWebhook, but uses Microsoft-managed APIs.
RispostaResponse Definisce la risposta per una chiamata in ingresso.Defines the response for an incoming call.
FunzioneFunction Rappresenta una funzione di Azure.Represents an Azure function.
WaitWait Attende per un intervallo di tempo fisso o fino a un momento specifico.Waits a fixed amount of time or until a specific time.
WorkflowWorkflow Rappresenta un flusso di lavoro annidato.Represents a nested workflow.
ComponiCompose Costruisce un oggetto arbitrario dagli input dell'azione.Constructs an arbitary object from the action's inputs.
QueryQuery Filtra una matrice in base a una condizione.Filters an array based on a condition.
SelectSelect Proietta ogni elemento di una matrice in un nuovo valore.Projects each element of an array into a new value. Ad esempio, è possibile convertire una matrice di numeri in una matrice di oggetti.For example, you can convert an array of numbers into an array of objects.
TabellaTable Converte una matrice di elementi in tabella CSV o HTML.Converts an array of items into a CSV or HTML table.
TerminateTerminate Arresta l'esecuzione di un flusso di lavoro.Stops running a workflow.

Azioni di raccoltaCollection actions

Tipo di azioneAction type DescrizioneDescription
ConditionCondition Valuta un'espressione e, in base al risultato, esegue il ramo corrispondente.Evaluates an expression and based on the result, runs the corresponding branch.
AmbitoScope Da usare per il raggruppamento logico di altre azioni.Use for logically grouping other actions.
ForEachForEach Questa azione di esecuzione a ciclo continuo scorre una matrice ed esegue azioni interne per ogni elemento.This looping action iterates through an array and performs inner actions on each array item.
UntilUntil Questa azione di esecuzione a ciclo continuo esegue azioni interne finché una condizione non restituisce true.This looping action performs inner actions until a condition results to true.

Azione HTTPHTTP action

Le azioni HTTP chiamano un endpoint specificato e controllano la risposta per determinare se il flusso di lavoro deve essere eseguito.HTTP actions call a specified endpoint and check the response to determine whether the workflow should run. ad esempio:For example:

"myLatestNewsAction": {
    "type": "Http",
    "inputs": {
        "method": "GET",
        "uri": "https://mynews.example.com/latest"
    }
}

In questo caso, l'oggetto inputs accetta i parametri necessari per la costruzione di una chiamata HTTP:Here, the inputs object takes these parameters required for constructing an HTTP call:

Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
staticomethod Yes StringString Usare uno di questi metodi HTTP: "GET", "POST", "PUT", "DELETE", "PATCH" o "HEAD"Uses one of these HTTP methods: "GET", "POST", "PUT", "DELETE", "PATCH", or "HEAD"
Uriuri Yes StringString Endpoint HTTP o HTTPS controllato dal trigger.The HTTP or HTTPs endpoint that the trigger checks. Dimensione massima della stringa: 2 KBMaximum string size: 2 KB
queryqueries NoNo OggettoObject Rappresenta tutti i parametri di query che si vuole includere nell'URL.Represents any query parameters that you want to include in the URL.

"queries": { "api-version": "2015-02-01" }, ad esempio, aggiunge ?api-version=2015-02-01 all'URL.For example, "queries": { "api-version": "2015-02-01" } adds ?api-version=2015-02-01 to the URL.

headersheaders NoNo OggettoObject Rappresenta ogni intestazione inviata nella richiesta.Represents each header that's sent in the request.

Ad esempio, per impostare il linguaggio e il tipo in una richiesta:For example, to set the language and type on a request:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

bodybody NoNo OggettoObject Rappresenta il payload inviato all'endpoint.Represents the payload that's sent to the endpoint.
retryPolicyretryPolicy NoNo OggettoObject Usare questo oggetto per personalizzare il comportamento in caso di nuovo tentativo per gli errori 4xx o 5xx.Use this object for customizing the retry behavior for 4xx or 5xx errors. Per altre informazioni, vedere il Criteri di ripetizione dei tentativi.For more information, see Retry policies.
operationsOptionsoperationsOptions NoNo StringString Definisce il set di comportamenti speciali di cui eseguire l'override.Defines the set of special behaviors to override.
authenticationauthentication NoNo OggettoObject Rappresenta il metodo che deve essere usato dalla richiesta per l'autenticazione.Represents the method that the request should use for authentication. Per altre informazioni, vedere Autenticazione in uscita dell'Utilità di pianificazione.For more information, see Scheduler Outbound Authentication.

Oltre all'Utilità di pianificazione, è supportata un'altra proprietà: authority.Beyond Scheduler, there is one more supported property: authority. Per impostazione predefinita, questo valore è https://login.windows.net quando non è specificato, ma è possibile usare un valore diverso, ad esempio https://login.windows\-ppe.net.By default, this value is https://login.windows.net when not specified, but you can use a different value, such ashttps://login.windows\-ppe.net.

Questa azione HTTP di esempio riprova il recupero delle ultime notizie per due volte, se si verificano errori intermittenti, per un totale di tre esecuzioni e con un ritardo di 30 secondi tra un tentativo e l'altro:This example HTTP action retries fetching the latest news two times if there are intermittent failures for a total of three executions and a 30-second delay between each attempt:

"myLatestNewsAction": {
    "type": "Http",
    "inputs": {
        "method": "GET",
        "uri": "https://mynews.example.com/latest",
        "retryPolicy" : {
            "type": "fixed",
            "interval": "PT30S",
            "count": 2
        }
    }
}

L'intervallo tra i tentativi viene specificato nel formato ISO 8601.The retry interval is specified in ISO 8601 format. Questo intervallo ha un valore predefinito e minimo di 20 secondi, mentre il valore massimo è di un'ora.This interval has a default and minimum value of 20 seconds, while the maximum value is one hour. Il numero predefinito e massimo di tentativi è pari a quattro ore.The default and maximum retry count is four hours. Se non si specifica la definizione dei criteri per i tentativi, viene usata una strategia fixed con valori predefiniti per l'intervallo e il numero di tentativi.If the you don't specify the retry policy definition, a fixed strategy is used with default retry count and interval values. Per disabilitare i criteri per i tentativi, impostare il tipo su None.To disable the retry policy, set its type to None.

Modelli asincroniAsynchronous patterns

Per impostazione predefinita, tutte le azioni basate su HTTP supportano il modello di operazione asincrono standard.By default, all HTTP-based actions support the standard asynchronous operation pattern. Di conseguenza, se il server remoto indica che la richiesta viene accettata per l'elaborazione con una risposta "202 ACCEPTED", il motore di App per la logica continua il polling dell'URL specificato nell'intestazione location della risposta fino a raggiungere uno stato terminale, che corrisponde a una risposta diversa da 202.So if the remote server indicates that the request is accepted for processing with a "202 ACCEPTED" response, the Logic Apps engine keeps polling the URL specified in the response's location header until reaching a terminal state, which is a non-202 response.

Per disabilitare il comportamento asincrono descritto in precedenza, impostare operationOptions su DisableAsyncPattern negli input dell'azione.To disable the asynchronous behavior previously described, set operationOptions to DisableAsyncPattern in the action inputs. In questo caso, l'output dell'azione è basato sulla risposta 202 iniziale dal server.In this case, the action's output is based on the initial 202 response from the server. ad esempio:For example:

"invokeLongRunningOperationAction": {
    "type": "Http",
    "inputs": {
        "method": "POST",
        "uri": "https://host.example.com/resources"
    },
    "operationOptions": "DisableAsyncPattern"
}

Limiti asincroniAsynchronous limits

È possibile limitare la durata di un modello asincrono a un intervallo di tempo specifico.You can limit the duration for an asynchronous pattern to a specific time interval. Se l'intervallo di tempo trascorre senza raggiungere uno stato terminale, lo stato dell'azione viene contrassegnato come Cancelled con il codice ActionTimedOut.If the time interval elapses without reaching a terminal state, the action's status is marked Cancelled with an ActionTimedOut code. Il timeout per il limite è specificato nel formato ISO 8601.The limit timeout is specified in ISO 8601 format. È possibile specificare i limiti in questo modo:You can specify limits as shown here:

"action-name": {
    "type": "Workflow|Webhook|Http|ApiConnectionWebhook|ApiConnection",
    "inputs": { },
    "limit": {
        "timeout": "PT10S"
    }
}

Azione APIConnectionAPIConnection action

L'azione APIConnection fa riferimento a un connettore gestito da Microsoft.The APIConnection action references a Microsoft-managed connector. Questa azione richiede un riferimento a una connessione valida e informazioni sull'API e sui parametri.This action requires a reference to a valid connection and information about the API and parameters. Ecco un esempio di azione APIConnection:Here is an example APIConnection action:

"Send_Email": {
    "type": "ApiConnection",
    "inputs": {
        "host": {
            "api": {
                "runtimeUrl": "https://logic-apis-df.azure-apim.net/apim/office365"
            },
            "connection": {
                "name": "@parameters('$connections')['office365']['connectionId']"
            }
        },
        "method": "POST",
        "body": {
            "Subject": "New tweet from @{triggerBody()['TweetedBy']}",
            "Body": "@{triggerBody()['TweetText']}",
            "To": "me@example.com"
        },
        "path": "/Mail"
    },
    "runAfter": {}
}
Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
hosthost Yes OggettoObject Rappresenta le informazioni sul connettore, ad esempio runtimeUrl, e il riferimento all'oggetto connection.Represents the connector information such as the runtimeUrl and reference to the connection object.
staticomethod Yes StringString Usare uno di questi metodi HTTP: "GET", "POST", "PUT", "DELETE", "PATCH" o "HEAD"Uses one of these HTTP methods: "GET", "POST", "PUT", "DELETE", "PATCH", or "HEAD"
pathpath Yes StringString Percorso per l'operazione APIThe path for the API operation
queryqueries NoNo OggettoObject Rappresenta tutti i parametri di query che si vuole includere nell'URL.Represents any query parameters that you want to include in the URL.

"queries": { "api-version": "2015-02-01" }, ad esempio, aggiunge ?api-version=2015-02-01 all'URL.For example, "queries": { "api-version": "2015-02-01" } adds ?api-version=2015-02-01 to the URL.

headersheaders NoNo OggettoObject Rappresenta ogni intestazione inviata nella richiesta.Represents each header that's sent in the request.

Ad esempio, per impostare il linguaggio e il tipo in una richiesta:For example, to set the language and type on a request:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

bodybody NoNo OggettoObject Rappresenta il payload inviato all'endpoint.Represents the payload that's sent to the endpoint.
retryPolicyretryPolicy NoNo OggettoObject Usare questo oggetto per personalizzare il comportamento in caso di nuovo tentativo per gli errori 4xx o 5xx.Use this object for customizing the retry behavior for 4xx or 5xx errors. Per altre informazioni, vedere il Criteri di ripetizione dei tentativi.For more information, see Retry policies.
operationsOptionsoperationsOptions NoNo StringString Definisce il set di comportamenti speciali di cui eseguire l'override.Defines the set of special behaviors to override.
authenticationauthentication NoNo OggettoObject Rappresenta il metodo che deve essere usato dalla richiesta per l'autenticazione.Represents the method that the request should use for authentication. Per altre informazioni, vedere Autenticazione in uscita dell'Utilità di pianificazione.For more information, see Scheduler Outbound Authentication.

Azione webhook APIConnectionAPIConnection webhook action

L'azione APIConnectionWebhook fa riferimento a un connettore gestito da Microsoft.The APIConnectionWebhook action references a Microsoft-managed connector. Questa azione richiede un riferimento a una connessione valida e informazioni sull'API e sui parametri.This action requires a reference to a valid connection and information about the API and parameters. È possibile specificare i limiti per un'azione webhook allo stesso modo dei limiti asincroni HTTP.You can specify limits on a webhook action in the same way as HTTP Asynchronous Limits.

"Send_approval_email": {
    "type": "ApiConnectionWebhook",
    "inputs": {
        "host": {
            "api": {
                "runtimeUrl": "https://logic-apis-df.azure-apim.net/apim/office365"
            },
            "connection": {
                "name": "@parameters('$connections')['office365']['connectionId']"
            }
        },
        "body": {
            "Message": {
                "Subject": "Approval Request",
                "Options": "Approve, Reject",
                "Importance": "Normal",
                "To": "me@email.com"
            }
        },
        "path": "/approvalmail",
        "authentication": "@parameters('$authentication')"
    },
    "runAfter": {}
}
Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
hosthost Yes OggettoObject Rappresenta le informazioni sul connettore, ad esempio runtimeUrl, e il riferimento all'oggetto connection.Represents the connector information such as the runtimeUrl and reference to the connection object.
pathpath Yes StringString Percorso per l'operazione APIThe path for the API operation
queryqueries NoNo OggettoObject Rappresenta tutti i parametri di query che si vuole includere nell'URL.Represents any query parameters that you want to include in the URL.

"queries": { "api-version": "2015-02-01" }, ad esempio, aggiunge ?api-version=2015-02-01 all'URL.For example, "queries": { "api-version": "2015-02-01" } adds ?api-version=2015-02-01 to the URL.

headersheaders NoNo OggettoObject Rappresenta ogni intestazione inviata nella richiesta.Represents each header that's sent in the request.

Ad esempio, per impostare il linguaggio e il tipo in una richiesta:For example, to set the language and type on a request:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

bodybody NoNo OggettoObject Rappresenta il payload inviato all'endpoint.Represents the payload that's sent to the endpoint.
retryPolicyretryPolicy NoNo OggettoObject Usare questo oggetto per personalizzare il comportamento in caso di nuovo tentativo per gli errori 4xx o 5xx.Use this object for customizing the retry behavior for 4xx or 5xx errors. Per altre informazioni, vedere il Criteri di ripetizione dei tentativi.For more information, see Retry policies.
operationsOptionsoperationsOptions NoNo StringString Definisce il set di comportamenti speciali di cui eseguire l'override.Defines the set of special behaviors to override.
authenticationauthentication NoNo OggettoObject Rappresenta il metodo che deve essere usato dalla richiesta per l'autenticazione.Represents the method that the request should use for authentication. Per altre informazioni, vedere Autenticazione in uscita dell'Utilità di pianificazione.For more information, see Scheduler Outbound Authentication.

Azione di rispostaResponse action

Questa azione contiene l'intero payload da una richiesta HTTP e include statusCode, body, e headers:This action contains the entire response payload from an HTTP request and includes a statusCode, body, and headers:

"myResponseAction": {
    "type": "response",
    "inputs": {
        "statusCode": 200,
        "body": {
            "contentFieldOne": "value100",
            "anotherField": 10.001
        },
        "headers": {
            "x-ms-date": "@utcnow()",
            "Content-type": "application/json"
        }
    },
    "runAfter": {}
}

All'azione di risposta si applicano particolari restrizioni che non si applicano ad altre azioni, in particolare:The response action has special restrictions that don't apply to other actions, specifically:

  • Possono essere presenti azioni di risposta nei rami paralleli all'interno di una definizione di app per la logica perché la richiesta in ingresso richiede una risposta deterministica.You can't have response actions in parallel branches within a logic app definition because the incoming request requires a deterministic response.

  • Se il flusso di lavoro raggiunge un'azione di risposta dopo che la richiesta in ingresso ha già ricevuto una risposta, l'azione di risposta viene considerata non riuscita o in conflitto.If the workflow reaches a response action after the incoming request already received a response, the response action is considered failed or in conflict. Di conseguenza, l'esecuzione dell'app per la logica viene contrassegnata come Failed.As a result, the logic app run is marked Failed.

  • Un flusso di lavoro con azioni di risposta non può usare il comando splitOn nella definizione del trigger perché la chiamata crea più esecuzioni.A workflow with response actions can't use the splitOn command in the trigger definition because the call creates multiple runs. Di conseguenza, verificare se si tratta di questo caso quando l'operazione del flusso di lavoro è PUT e viene restituita una risposta di richiesta non valida.As a result, check for this case when the workflow operation is PUT, and return a "bad request" response.

Azione delle funzioniFunction action

Questa azione consente di rappresentare e chiamare una funzione di Azure, ad esempio:This action lets you represent and call an Azure function, for example:

"my-Azure-Function-name": {
   "type": "Function",
    "inputs": {
        "function": {
            "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Web/sites/{your-Azure-function-app-name}/functions/{your-Azure-function-name}"
        },
        "queries": {
            "extrafield": "specialValue"
        },  
        "headers": {
            "x-ms-date": "@utcnow()"
        },
        "method": "POST",
        "body": {
            "contentFieldOne": "value100",
            "anotherField": 10.001
        }
    },
    "runAfter": {}
}
Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
function idfunction id Yes StringString ID risorsa per la funzione di Azure che si vuole chiamare.The resource ID for the Azure function that you want to call.
staticomethod NoNo StringString Metodo HTTP usato per chiamare la funzione.The HTTP method used to call the function. Se non è specificato, "POST" è il metodo predefinito.If not specified, "POST" is the default method.
queryqueries NoNo OggettoObject Rappresenta tutti i parametri di query che si vuole includere nell'URL.Represents any query parameters that you want to include in the URL.

"queries": { "api-version": "2015-02-01" }, ad esempio, aggiunge ?api-version=2015-02-01 all'URL.For example, "queries": { "api-version": "2015-02-01" } adds ?api-version=2015-02-01 to the URL.

headersheaders NoNo OggettoObject Rappresenta ogni intestazione inviata nella richiesta.Represents each header that's sent in the request.

Ad esempio, per impostare il linguaggio e il tipo in una richiesta:For example, to set the language and type on a request:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

bodybody NoNo OggettoObject Rappresenta il payload inviato all'endpoint.Represents the payload that's sent to the endpoint.

Quando si salva l'app per la logica, App per la logica di Azure esegue controlli sulla funzione cui si fa riferimento:When you save your logic app, Azure Logic Apps performs checks on the referenced function:

  • È necessario avere accesso alla funzione.You must have access to the function.
  • È possibile usare solo trigger HTTP standard o trigger webhook JSON generici.You can use only standard HTTP triggers or generic JSON webhook triggers.
  • Per la funzione non deve essere definita alcuna route.The function shouldn't have any route defined.
  • Sono consentiti solo i livelli di autorizzazione "funzione" e "anonimo".Only "function" and "anonymous" authorization level is allowed.

L'URL del trigger viene recuperato, memorizzato nella cache e usato durante il runtime.The trigger URL is retrieved, cached, and used at runtime. Pertanto, se qualsiasi operazione invalida l'URL memorizzato nella cache, l'azione non riesce durante il runtime.So if any operation invalidates the cached URL, the action fails at runtime. Per risolvere questo problema, salvare di nuovo l'app per la logica in modo che possa di nuovo recuperare e memorizzare nella cache l'URL del trigger.To work around this problem, save the logic app again, which causes the logic app to retrieve and cache the trigger URL again.

Azione waitWait action

Questa azione sospende l'esecuzione del flusso di lavoro per l'intervallo specificato.This action suspends workflow execution for the specified interval. Questo esempio fa sì che il flusso di lavoro attenda per 15 minuti:This example causes the workflow to wait 15 minutes:

"waitForFifteenMinutesAction": {
    "type": "Wait",
    "inputs": {
        "interval": {
            "unit": "minute",
            "count": 15
        }
    }
}

In alternativa, per attendere fino a un determinato momento, è possibile usare questo esempio:Alternatively, to wait until a specific moment in time, you can use this example:

"waitUntilOctoberAction": {
    "type": "Wait",
    "inputs": {
        "until": {
            "timestamp": "2017-10-01T00:00:00Z"
        }
    }
}

Nota

L'attesa può essere specificata usando l'oggetto until o interval, ma non entrambi.The wait duration can be either specified with the until object or interval object, but not both.

Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
untiluntil NoNo OggettoObject Attesa in base a una data e un'oraThe wait duration based on a point in time
until timestampuntil timestamp Yes StringString Data e ora in formato UTC in corrispondenza delle quali termina l'attesaThe point in time in UTC date time format when the wait expires
intervalinterval NoNo OggettoObject Attesa in base all'unità e al valore dell'intervalloThe wait duration based on the interval unit and count
interval unitinterval unit Yes StringString Unità di tempo.The unit of time. Usare solo uno di questi valori: "second", "minute", "hour", "day", "week" o "month"Use only one of these values: "second", "minute", "hour", "day", "week", or "month"
interval countinterval count Yes IntegerInteger Numero intero positivo che rappresenta il numero di unità dell'intervallo usate per l'attesaA positive integer representing the number of interval units used for the wait duration

Azione workflowWorkflow action

Questa azione rappresenta un altro flusso di lavoro.This action represents another workflow. App per la logica esegue un controllo di accesso nel flusso di lavoro o, più in particolare, nel trigger e questo significa che è necessario avere accesso al flusso di lavoro.Logic Apps performs an access check on the workflow, or more specifically, the trigger, which means you must have access to the workflow.

Gli output di questa azione sono basati su quanto definito nell'azione response per il flusso di lavoro figlio.This action's outputs are based on what you define in the response action for the child workflow. Se non è stata definita un'azione response, gli output sono vuoti.If you haven't defined a response action, then the outputs are empty.

"myNestedWorkflowAction": {
    "type": "Workflow",
    "inputs": {
        "host": {
            "id": "/subscriptions/xxxxyyyyzzz/resourceGroups/rg001/providers/Microsoft.Logic/mywf001",
            "triggerName": "mytrigger001"
        },
        "queries": {
            "extrafield": "specialValue"
        },  
        "headers": {
            "x-ms-date": "@utcnow()",
            "Content-type": "application/json"
        },
        "body": {
            "contentFieldOne": "value100",
            "anotherField": 10.001
        }
    },
    "runAfter": {}
}
Nome dell'elementoElement name ObbligatoriaRequired TipoType DescrizioneDescription
host idhost id Yes StringString ID risorsa per il flusso di lavoro che si vuole chiamareThe resource ID for the workflow that you want to call
host triggerNamehost triggerName Yes StringString Nome del trigger che si vuole richiamareThe name of the trigger that you want to invoke
queryqueries NoNo OggettoObject Rappresenta tutti i parametri di query che si vuole includere nell'URL.Represents any query parameters that you want to include in the URL.

"queries": { "api-version": "2015-02-01" }, ad esempio, aggiunge ?api-version=2015-02-01 all'URL.For example, "queries": { "api-version": "2015-02-01" } adds ?api-version=2015-02-01 to the URL.

headersheaders NoNo OggettoObject Rappresenta ogni intestazione inviata nella richiesta.Represents each header that's sent in the request.

Ad esempio, per impostare il linguaggio e il tipo in una richiesta:For example, to set the language and type on a request:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

bodybody NoNo OggettoObject Rappresenta il payload inviato all'endpoint.Represents the payload that's sent to the endpoint.

Azione composeCompose action

Questa azione consente di costruire un oggetto arbitrario e l'output è il risultato della valutazione degli input dell'azione.This action lets you construct an arbitrary object, and the output is the result from evaluating the action's inputs.

Nota

È possibile usare l'azione Compose per costruire qualsiasi output, tra cui oggetti, matrici e altri tipi supportati in modo nativo dalle app per la logica, come file XML e binari.You can use the Compose action for constructing any output, including objects, arrays, and any other type natively supported by logic apps like XML and binary.

Ad esempio, è possibile usare l'azione compose per unire output da più azioni:For example, you can use the compose action for merging outputs from multiple actions:

"composeUserRecordAction": {
    "type": "Compose",
    "inputs": {
        "firstName": "@actions('getUser').firstName",
        "alias": "@actions('getUser').alias",
        "thumbnailLink": "@actions('lookupThumbnail').url"
    }
}

Seleziona azioneSelect action

Questa azione consente di proiettare ogni elemento di una matrice in un nuovo valore.This action lets you project each element of an array into a new value. Ad esempio, per convertire un array di numeri in un array di oggetti è possibile usare:For example, to convert an array of numbers into an array of objects, you can use:

"selectNumbersAction": {
    "type": "Select",
    "inputs": {
        "from": [ 1, 3, 0, 5, 4, 2 ],
        "select": { "number": "@item()" }
    }
}
NomeName ObbligatoriaRequired TipoType DescrizioneDescription
fromfrom Yes ArrayArray Matrice di origineThe source array
selezionaselect Yes QualsiasiAny Proiezione applicata a ogni elemento nella matrice di origineThe projection applied to each element in the source array

L'output dell'azione select è una matrice con la stessa cardinalità della matrice di input.The output from the select action is an array that has the same cardinality as the input array. Ogni elemento viene trasformato come definito dalla proprietà select.Each element is transformed as defined by the select property. Se l'input è un array vuoto, lo sarà anche l'output.If the input is an empty array, the output is also an empty array.

Azione di queryQuery action

Questa azione consente di filtrare una matrice in base a una condizione.This action lets you filter an array based on a condition. Questo esempio seleziona i numeri maggiori di 2:This example selects numbers greater than two:

"filterNumbersAction": {
    "type": "Query",
    "inputs": {
        "from": [ 1, 3, 0, 5, 4, 2 ],
        "where": "@greater(item(), 2)"
    }
}

L'output dell'azione query è una matrice con elementi della matrice di input che soddisfano la condizione.The output from the query action is an array that has elements from the input array that satisfy the condition.

Nota

Se nessun valore soddisfa la condizione where, il risultato è una matrice vuota.If no values satisfy the where condition, the result is an empty array.

NomeName ObbligatoriaRequired TipoType DescrizioneDescription
fromfrom Yes ArrayArray Matrice di origineThe source array
dovewhere Yes StringString Condizione applicata a ogni elemento della matrice di origineThe condition that's applied to each element from the source array

azione TabellaTable action

Questa azione consente di convertire una matrice di elementi in una tabella CSV o HTML.This action lets you convert an array of items into a CSV or HTML table. Ad esempio, si supponga di avere un oggetto @triggerBody() con questa matrice:For example, suppose that you have a @triggerBody() with this array:

[ 
    {
      "id": 0,
      "name": "apples"
    },
    {
      "id": 1, 
      "name": "oranges"
    }
]

E di voler definire un'azione Table come in questo esempio:And you define a table action like this example:

"convertToTableAction": {
    "type": "Table",
    "inputs": {
        "from": "@triggerBody()",
        "format": "html"
    }
}

Il risultato di questo esempio sarà simile a questa tabella HTML:The result from this example looks like this HTML table:

ididnamename
00meleapples
11aranceoranges

Per personalizzare la tabella, è possibile specificare le colonne in modo esplicito, ad esempio:To customize this table, you can specify the columns explicitly, for example:

"ConvertToTableAction": {
    "type": "Table",
    "inputs": {
        "from": "@triggerBody()",
        "format": "html",
        "columns": [ 
            {
                "header": "Produce ID",
                "value": "@item().id"
            },
            {
              "header": "Description",
              "value": "@concat('fresh ', item().name)"
            }
        ]
    }
}

Il risultato di questo esempio sarà simile a questa tabella HTML:The result from this example looks like this HTML table:

Produce IDProduce IDDescrizioneDescription
00mele freschefresh apples
11arance freschefresh oranges
NomeName ObbligatoriaRequired TipoType DescrizioneDescription
fromfrom Yes ArrayArray Matrice di origine.The source array. Se il valore della proprietà from è un array vuoto, l'output sarà una tabella vuota.If the from property value is an empty array, the output is an empty table.
formatformat Yes StringString Il formato della tabella desiderato, CSV o HTMLThe table format that you want, either CSV or HTML
columnscolumns NoNo ArrayArray Colonne di tabella desiderate.The table columns that you want. Da usare per eseguire l'override della forma di tabella predefinita.Use to override the default table shape.
intestazione di colonnacolumn header NoNo StringString Intestazione di colonnaThe column header
valore colonnacolumn value Yes StringString Valore della colonnaThe column value

Azione terminateTerminate action

Questa azione arresta l'esecuzione del flusso di lavoro, annulla tutte le azioni in fase di elaborazione e ignora tutte le azioni rimanenti.This action stops the workflow run, cancels any in-flight actions, and skips any remaining actions. L'azione Terminate non influisce sulle azioni completate.The terminate action doesn't affect any finished actions.

Ad esempio, per arrestare un'esecuzione con stato "Failed", è possibile usare questo esempio:For example, to stop a run that has "Failed" status, you can use this example:

"handleUnexpectedResponseAction": {
    "type": "Terminate",
    "inputs": {
        "runStatus": "Failed",
        "runError": {
            "code": "UnexpectedResponse",
            "message": "Received an unexpected response"
        }
    }
}
NomeName ObbligatoriaRequired TipoType DescrizioneDescription
runStatusrunStatus Yes StringString Stato dell'esecuzione di destinazione, che può essere Failed o CancelledThe target run's status, which is either Failed or Cancelled
runErrorrunError NoNo OggettoObject Dettagli dell'errore.The error details. Supportato solo quando runStatus è impostato su Failed.Supported only when runStatus is set to Failed.
runError coderunError code NoNo StringString Codice di errore dell'esecuzioneThe run's error code
runError messagerunError message NoNo StringString Messaggio di errore dell'esecuzioneThe run's error message

Panoramica delle azioni di raccoltaCollection actions overview

Alcune azioni possono contenere altre azioni al loro interno.Some actions can include actions within themselves. È possibile fare riferimento alle azioni di riferimento in una raccolta direttamente all'esterno della raccolta.Reference actions in a collection can be referenced directly outside of the collection. Ad esempio, se si definisce Http in un oggetto scope, @body('http') è ancora valido in qualsiasi punto nel flusso di lavoro.For example, if you define Http in a scope, then @body('http') is still valid anywhere in the workflow. Una raccolta runAfter può includere azioni solo con altre azioni nella stessa raccolta.You can have actions in a collection runAfter only with other actions in the same collection.

Condition: azione IfCondition: If action

Questa azione consente di valutare una condizione e di eseguire un ramo in base al caso in cui l'espressione restituisce o meno true.This action lets you evaluate a condition and execute a branch based on whether the expression evaluates to true.

"myCondition": {
    "type": "If",
    "actions": {
        "if_true": {
            "type": "Http",
            "inputs": {
                "method": "GET",
                "uri": "http://myurl"
            },
            "runAfter": {}
        }
    },
    "else": {
        "actions": {
            "if_false": {
                "type": "Http",
                "inputs": {
                    "method": "GET",
                    "uri": "http://myurl"
                },
                "runAfter": {}
            }
        }
    },
    "expression": "@equals(triggerBody(), json(true))",
    "runAfter": {}
}
NomeName ObbligatoriaRequired TipoType DescrizioneDescription
Azioniactions Yes OggettoObject Azioni interne da eseguire quando expression restituisce trueThe inner actions to run when expression evaluates to true
expressionexpression Yes StringString Espressione da valutareThe expression to evaluate
elseelse NoNo OggettoObject Azioni interne da eseguire quando expression restituisce falseThe inner actions to run when expression evaluates to false

Se una condizione restituisce un valore corretto, viene contrassegnata come Succeeded.If the condition evaluates successfully, the condition is marked as Succeeded. Le azioni nell'oggetto actions o else restituiscono:Actions in either the actions or else objects evaluate to:

  • Succeeded quando vengono eseguite e riesconoSucceeded when they run and succeed
  • Failed quando vengono eseguite e non riesconoFailed when they run and fail
  • Skipped quando il rispettivo ramo non viene eseguitoSkipped when the respective branch doesn't run

Ecco alcuni esempi che mostrano in che modo le condizioni possono usare espressioni in un'azione:Here are examples that show how conditions can use expressions in an action:

Valore JSONJSON value RisultatoResult
"expression": "@parameters('hasSpecialAction')" Tutti i valori che restituiscono true fanno sì che questa condizione passi.Any value that evaluates to true causes this condition to pass. Supporta solo espressioni booleane.Supports only Boolean expressions. Per convertire altri tipi in valori booleani, usare le funzioni empty e equalsTo convert other types to Boolean, use these functions: empty and equals
"expression": "@greater(actions('act1').output.value, parameters('threshold'))" Supporta le funzioni di confronto.Supports comparison functions. Per questo esempio, l'azione viene eseguita solo quando l'output di act1 è maggiore della soglia.For this example, the action only runs when the output of act1 is greater than the threshold.
"expression": "@or(greater(actions('act1').output.value, parameters('threshold')), less(actions('act1').output.value, 100))" Supporta le funzioni logiche per la creazione di espressioni booleane annidate.Supports logic functions for creating nested Boolean expressions. Per questo esempio, l'azione viene eseguita quando l'output di act1 è maggiore della soglia o minore di 100.For this example, the action runs when the output of act1 is above the threshold or below 100.
"expression": "@equals(length(actions('act1').outputs.errors), 0))" Per controllare se una matrice contiene elementi, è possibile usare funzioni di matrice.To check whether an array has any items, you can use array functions. Per questo esempio, l'azione viene eseguita quando la matrice errors è vuota.For this example, the action runs when the errors array is empty.
"expression": "parameters('hasSpecialAction')" Errore: condizione non valida perché @ è obbligatorio per le condizioni.Error, not a valid condition because @ is required for conditions.

Azione scopeScope action

Questa azione consente di raggruppare logicamente le azioni in un flusso di lavoro.This action lets you logically group actions in a workflow.

"myScope": {
    "type": "Scope",
    "actions": {
        "call_bing": {
            "type": "Http",
             "inputs": {
                "url": "http://www.bing.com"
            }
        }
    }
}
NomeName ObbligatoriaRequired TipoType DescrizioneDescription
Azioniactions Yes OggettoObject Azioni interne da eseguire all'interno dell'ambitoThe inner actions to run inside the scope

Azione ForEachForEach action

Questa azione di esecuzione a ciclo continuo scorre una matrice ed esegue azioni interne per ogni elemento.This looping action iterates through an array and performs inner actions on each array item. Per impostazione predefinita, il ciclo foreach viene eseguito in parallelo e può eseguire 20 esecuzioni in parallelo contemporaneamente.By default, the foreach loop runs in parallel and can run 20 executions in parallel at the same time. Per impostare regole di esecuzione, usare il parametro operationOptions.To set execution rules, use the operationOptions parameter.

"forEach_EmailAction": {
    "type": "Foreach",
    "foreach": "@body('email_filter')",
    "actions": {
        "Send_email": {
            "type": "ApiConnection",
            "inputs": {
                "body": {
                    "to": "@item()",
                    "from": "me@contoso.com",
                    "message": "Hello, thank you for ordering"
                },
                "host": {
                    "connection": {
                        "id": "@parameters('$connections')['office365']['connection']['id']"
                    }
                }
            }
        }
    },
    "runAfter": {
        "email_filter": [ "Succeeded" ]
    }
}
NomeName ObbligatoriaRequired TipoType DescrizioneDescription
Azioniactions Yes OggettoObject Azioni interne da eseguire all'interno del cicloThe inner actions to run inside the loop
foreachforeach Yes StringString Matrice da scorrereThe array to iterate through
operationOptionsoperationOptions NoNo StringString Specifica le opzioni dell'operazione per la personalizzazione del comportamento.Specifies any operation options for customizing behavior. Attualmente supporta solo Sequential per l'esecuzione in sequenza di iterazioni in cui il comportamento predefinito è parallelo.Currently supports only Sequential for sequentially running iterations where the default behavior is parallel.

Azione UntilUntil action

Questa azione di esecuzione a ciclo continuo esegue azioni interne finché una condizione non restituisce true.This looping action runs inner actions until a condition results to true.

 "runUntilSucceededAction": {
    "type": "Until",
    "actions": {
        "Http": {
            "type": "Http",
            "inputs": {
                "method": "GET",
                "uri": "http://myurl"
            },
            "runAfter": {}
        }
    },
    "expression": "@equals(outputs('Http')['statusCode', 200)",
    "limit": {
        "count": 1000,
        "timeout": "PT1H"
    },
    "runAfter": {}
}
NomeName ObbligatoriaRequired TipoType DescrizioneDescription
Azioniactions Yes OggettoObject Azioni interne da eseguire all'interno del cicloThe inner actions to run inside the loop
expressionexpression Yes StringString Espressione da valutare dopo ogni iterazioneThe expression to evaluate after each iteration
limitlimit Yes OggettoObject Limiti per il ciclo.The limits for the loop. Deve definire almeno un limite.Must define at least one limit.
countcount NoNo IntegerInteger Limite al numero di iterazioni da eseguireThe limit on the number of iterations to perform
timeouttimeout NoNo StringString Limite di timeout in formato ISO 8601 che specifica per quanto tempo deve essere eseguito il cicloThe timeout limit in ISO 8601 format that specifies how long the loop should run

Passaggi successiviNext steps