Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: App per la logica di Azure (A consumo e Standard)
Per ripetere le azioni in un flusso di lavoro dell'app per la logica, è possibile aggiungere il ciclo Per ogni o Fino a al flusso di lavoro, in base alle esigenze dello scenario.
Note
Per informazioni sui cicli, vedere la documentazione di Power Automate. Vedere Usare i cicli.
In base al caso d'uso, è possibile scegliere tra i tipi di azioni del ciclo seguenti:
Per ripetere una o più azioni sugli elementi di una matrice o di una raccolta, aggiungere l'azione For each al flusso di lavoro.
In alternativa, se si dispone di un trigger in grado di gestire matrici e si desidera eseguire un'istanza del flusso di lavoro per ogni elemento della matrice, è possibile dividere la matrice impostando la proprietà del trigger Split on.
Per ripetere una o più azioni fino a quando non viene soddisfatta una condizione o una modifica di stato specifica, aggiungere l'azione Until al flusso di lavoro.
Il flusso di lavoro esegue prima tutte le azioni all'interno del ciclo, quindi controlla la condizione o lo stato. Se la condizione viene soddisfatta, il ciclo si arresta. In caso contrario, il ciclo viene ripetuto. Per i limiti massimi e predefiniti del numero di cicli Until di cui può disporre un flusso di lavoro, vedere Limiti di concorrenza, cicli e debatching.
Prerequisiti
Un account e una sottoscrizione di Azure. Se non si ha una sottoscrizione, è possibile iscriversi per creare un account Azure gratuito.
Una risorsa dell'app per la logica in cui è possibile creare e modificare un flusso di lavoro. Vedere Che cos'è App per la logica di Azure.
La risorsa e il flusso di lavoro dell'app per la logica in cui si vuole ripetere un'azione in un ciclo e un trigger che avvia il flusso di lavoro.
Prima di poter aggiungere un'azione di ciclo, il flusso di lavoro deve iniziare con un trigger come primo passaggio. Per altre informazioni, vedere Aggiungere un trigger o un'azione per compilare un flusso di lavoro.
I passaggi seguenti usano il portale di Azure; tuttavia, con l'estensione App per la logica di Azure appropriata, è anche possibile usare gli strumenti seguenti per creare flussi di lavoro delle app per la logica:
- Flussi di lavoro A consumo: Visual Studio Code
- Creare flussi di lavoro Standard: Visual Studio Code
Alcuni passaggi differiscono leggermente in base al fatto che si disponga di un flusso di lavoro A consumo o Standard.
For each
L'azione Per ogni funziona solo su matrici. Questo ciclo ripete una o più azioni su ogni elemento di una matrice. Esaminare le considerazioni seguenti per l'azione Per ogni:
L'azione For each può elaborare un numero limitato di elementi della matrice. A tale proposito vedere Limiti di concorrenza, cicli e debatching.
Per impostazione predefinita, i cicli o le iterazioni in una azione For each vengono eseguiti contemporaneamente in parallelo.
Questo comportamento è diverso da Applica a ogni ciclo di Power Automate in cui le iterazioni vengono eseguite una alla volta o in sequenza. Se il caso d'uso richiede l'elaborazione sequenziale, è possibile configurare le interazioni Per ogni per eseguirne una alla volta. Ad esempio, se si vuole sospendere l'iterazione successiva in una azione For each usando l'azione Delay, è necessario configurare ogni iterazione per l'esecuzione sequenziale.
Come eccezione al comportamento predefinito, le iterazioni annidate dell'azione For each vengono eseguite sempre in sequenza e non in parallelo. Per eseguire azioni simultaneamente sugli elementi della matrice in un'azione annidata Per ogni, creare e chiamare un flusso di lavoro figlio.
Per ottenere risultati prevedibili dalle operazioni sulle variabili durante ogni iterazione, eseguire le iterazioni in modo sequenziale. Quando ad esempio un'iterazione in esecuzione simultanea termina, le operazioni Incrementa variabile, Decrementa variabile e Accoda alla variabile restituiscono risultati prevedibili. Tuttavia, durante ogni iterazione del ciclo in esecuzione simultanea, queste operazioni potrebbero restituire risultati imprevisti.
Le azioni in un ciclo For each usano la funzione
item()per fare riferimento ed elaborare ogni elemento nella matrice. Se si specificano dati non presenti in una matrice, il flusso di lavoro ha esito negativo.
Il flusso di lavoro di esempio seguente invia un riepilogo giornaliero per un feed RSS del sito Web. Il flusso di lavoro usa un'azione For each che invia un messaggio di posta elettronica per ogni nuovo elemento.
Nel portale di Azure, creare un flusso di lavoro di app per la logica con i passaggi seguenti nell'ordine indicato:
Il trigger RSS denominato Quando viene pubblicato un elemento del feed
Seguire questi passaggi generali per aggiungere un trigger a un flusso di lavoro dell'app per la logica A consumo o Standard.
Azione di Outlook.com o Outlook di Office 365 denominata Invia un messaggio di posta elettronica
Seguire questi passaggi generali per aggiungere un'azione a un flusso di lavoro dell'app per la logica A consumo o Standard.
Seguire la stessa procedura generale per aggiungere l'azione Per ogni tra il trigger RSS e l'azione Invia un messaggio di posta elettronica nel flusso di lavoro.
A questo punto creare il ciclo:
In Per ogni selezionare all'interno della casella Selezionare un output da passaggi precedenti, quindi selezionare l'icona a forma di fulmine.
Nell'elenco dei contenuti dinamici che viene visualizzato, in Quando viene pubblicato un elemento del feed, selezionare Collegamenti feed, che è un output matrice dal trigger RSS.
Note
Se l'output Collegamenti feed non viene visualizzato accanto all'etichetta della sezione trigger, selezionare Vedere altro. Dall'elenco dei contenuti dinamici, è possibile selezionare solo output dei passaggi precedenti.
Al termine, l'output della matrice selezionato viene visualizzato come nell'esempio seguente:
Per eseguire un'azione esistente su ogni elemento della matrice, trascinare l'azione Invia un messaggio di posta elettronica nel ciclo For each.
Il flusso di lavoro sarà simile ora all'esempio seguente:
Al termine, salvare il flusso di lavoro.
Per testare manualmente il flusso di lavoro, selezionare Esegui>Esegui nella barra degli strumenti della finestra di progettazione.
Per ogni definizione di azione (JSON)
Se si usa la visualizzazione Codice, è possibile definire l'azione For_each nella definizione JSON del flusso di lavoro, ad esempio:
"actions": {
"For_each": {
"actions": {
"Send_an_email_(V2)": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "@{item()}",
"Subject": "New CNN post @{triggerBody()?['publishDate']}",
"To": "me@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/v2/Mail"
},
"runAfter": {}
}
},
"foreach": "@triggerBody()?['links']",
"runAfter": {},
"type": "Foreach"
}
},
For each: eseguire in sequenza
Per impostazione predefinita, le iterazioni in un'azione Per ogni vengono eseguite contemporaneamente in parallelo. Tuttavia, se sono presenti cicli annidati o variabili all'interno dei cicli dove si attendono risultati prevedibili, è necessario eseguire tali cicli uno alla volta in sequenza.
Nella finestra di progettazione selezionare l'azione Per ogni per aprire il riquadro informazioni e quindi selezionare Impostazioni.
In Controllo della concorrenza, modificare l'impostazione da Disattivato a Attivato.
Spostare il dispositivo di scorrimento Grado di parallelismo su 1.
Definizione dell'azione For each (JSON): eseguire in sequenza
Se si usa la visualizzazione codice con l'azione For_each nella definizione JSON del flusso di lavoro, aggiungere il parametro operationOptions e impostare il valore del parametro su Sequential:
"actions": {
"For_each": {
"actions": {
"Send_an_email_(V2)": { }
},
"foreach": "@triggerBody()?['links']",
"runAfter": {},
"type": "Foreach",
"operationOptions": "Sequential"
}
}
Until
L'azione Until esegue e ripete una o più azioni fino a quando non viene soddisfatta la condizione specificata richiesta. Se la condizione viene soddisfatta, il ciclo si arresta. In caso contrario, il ciclo viene ripetuto. Per i limiti predefiniti e massimi sul numero di azioni o interazioneFino a di cui può disporre un flusso di lavoro, vedere Limiti di concorrenza, cicli e debatching.
L'elenco seguente contiene alcuni scenari comuni in cui è possibile usare un'azione Until:
Chiamare un endpoint finché non si ottiene la risposta desiderata.
Creare un record in un database. Attendere finché un campo specifico di tale record non viene approvato. Continuare l'elaborazione.
Per impostazione predefinita, l'azione Fino a ha esito positivo o negativo nei modi seguenti:
Il ciclo Until ha esito positivo se tutte le azioni all'interno del ciclo hanno esito positivo e, se viene raggiunto il limite del ciclo, in base al comportamento eseguito dopo l'esecuzione.
Se tutte le azioni nell'ultima iterazione del ciclo Until hanno esito positivo, l'intero ciclo Until viene contrassegnato come Succeeded.
Se un'azione ha esito negativo nell'ultima iterazione del ciclo Until , l'intero ciclo Until viene contrassegnato come Non riuscito.
Se un'azione non riesce in un'iterazione diversa dall'ultima iterazione, l'iterazione successiva continua a essere eseguita e l'intera azione Fino a non viene contrassegnata come Non riuscita.
Per far sì invece che l'azione non riesca, modificare il comportamento predefinito nella definizione JSON del ciclo aggiungendo il parametro denominato
operationOptionse impostando il valore suFailWhenLimitsReached, ad esempio:"Until": { "actions": { "Execute_stored_procedure": { <...> } }, "expression": "@equals(variables('myUntilStop'), true)", "limit": { "count": 5, "timeout": "PT1H" }, "operationOptions": "FailWhenLimitsReached", "runAfter": { "Initialize_variable_8": [ "Succeeded" ] }, "type": "Until" }
Nel flusso di lavoro di esempio seguente, a partire dalle 8:00 di ogni giorno, l'azione Until incrementa una variabile finché il valore della variabile non è uguale a 10. Il flusso di lavoro invia quindi un messaggio di posta elettronica che conferma il valore corrente. L'esempio usa Office 365 Outlook, ma è possibile usare qualsiasi provider di posta elettronica supportato da App per la logica di Azure. Se si usa un altro account di posta elettronica, la procedura generale resta invariata, ma sembra leggermente diversa.
Nel portale di Azure creare una risorsa dell'app per la logica con un flusso di lavoro vuoto. Fare riferimento alla procedura precedente.
Nella finestra di progettazione seguire i passaggi generali per aggiungere il trigger predefinito Pianificazione denominato Ricorrenza al flusso di lavoro A consumo o Standard.
Nel trigger Ricorrenza, specificare l'intervallo, la frequenza e l'ora per l'attivazione del trigger.
Parametro valore Interval 1 Frequenza Day A queste ore 8 A questi minuti 00 In queste ore e In questi minuti vengono visualizzati dopo aver impostato Frequenza su Giorno.
Al termine, il trigger Ricorrenza ha un aspetto simile all'esempio seguente:
Nel trigger, seguire questa procedura generale per aggiungere l'azione predefinita Variabili denominata Inizializza variabili al flusso di lavoro dell'app per la logica A consumo o Standard.
Nell'azione Inizializza variabili specificare i valori seguenti:
Parametro valore Descrizione Nome Limite Nome della variabile Tipo Integer Nome del tipo di dati della variabile Valore 0 Valore iniziale della variabile Nell'azione Inizializza variabili, seguire questa procedura generale per aggiungere l'azione predefinita Controlla denominata Fino a al flusso di lavoro dell'app per la logica A consumo o Standard.
Nell'azione Until, specificare i valori seguenti per configurare la condizione di arresto per il ciclo.
Selezionare all'interno della casella Loop fino a e selezionare l'icona a forma di fulmine per aprire l'elenco di contenuti dinamici.
Nell'elenco, in Variabili, selezionare la variabile denominata Limit.
In Conteggio immettere 10 come valore di confronto.
All'interno dell'azione Fino a selezionare +>Aggiungere un'azione.
Seguire questi passaggi generali per aggiungere l'azione predefinita Variabili denominata Incrementa variabile all'azione Fino a nel flusso di lavoro dell'app per la logica A consumo o Standard.
Nell'azione Incrementa variabile, specificare i valori seguenti per incrementare il valore della variabile Limit di 1:
Parametro valore Limite Selezionare la variabile Limit. Valore 1 All'esterno e nell'azione Fino a seguire questa procedura generale per aggiungere un'azione che invia messaggi di posta elettronica nel flusso di lavoro dell'app per la logica A consumo o Standard.
Questo esempio continua con l'azione Outlook di Office 365 denominata Invia un messaggio di posta elettronica.
Nell'azione di posta elettronica, specificare i valori seguenti:
Parametro valore Descrizione To < indirizzo e-mail@dominio> Indirizzo e-mail del destinatario. Per il test è possibile usare l'indirizzo di posta elettronica personale. Oggetto Il valore corrente della variabile "Limit" è:Limite L'oggetto del messaggio di posta elettronica. Per questo esempio, assicurarsi di includere la variabile Limit per verificare che il valore corrente soddisfi la condizione specificata:
1. Selezionare all'interno della casella Oggetto e quindi selezionare l'icona a forma di fulmine.
2. Nell'elenco di contenuti dinamici che viene visualizzato, accanto all'intestazione della sezione Variabili, selezionare Visualizza altro.
3. Selezionare Limite.Corpo < email-content> Il contenuto del messaggio di posta elettronica da inviare. Per questo esempio, immettere un testo desiderato. Al termine, l'azione di posta elettronica deve essere simile all'esempio seguente:
Salvare il flusso di lavoro.
Testare il flusso di lavoro
Per testare manualmente il flusso di lavoro dell'app per la logica:
- Sulla barra degli strumenti della finestra di progettazione, dall'opzione Esegui selezionare Esegui.
Dopo l'avvio dell'esecuzione del flusso di lavoro, viene visualizzato un messaggio di posta elettronica con il contenuto specificato:
Evitare i cicli infiniti
L'azione Fino a arresta l'esecuzione in base ai parametri facoltativi Conteggio e Timeout. Assicurarsi di impostare questi valori dei parametri di conseguenza:
| Parametro | Descrizione |
|---|---|
| Numero | Il numero massimo di iterazioni eseguite prima della chiusura del ciclo. Per i limiti massimi e predefiniti del numero delle azioni Until di cui può disporre un flusso di lavoro, vedere Limiti di concorrenza, cicli e debatching. |
| Timeout | Periodo massimo di tempo durante il quale l'azione Until, incluse tutte le iterazioni, viene eseguita prima dell'uscita del ciclo. Questo valore viene specificato in formato ISO 8601 e viene valutato per ogni iterazione. Se un'azione del ciclo richiede più tempo di quello previsto dal limite di timeout, l'iterazione corrente non viene arrestata. L'iterazione successiva non viene tuttavia avviata perché non viene soddisfatta la condizione limite del timeout. Per i limiti massimi e predefiniti del valore Timeout, vedere Limiti di concorrenza, cicli e debatching. |
Definizione di "Until" (JSON)
Se si usa la visualizzazione Codice, è possibile definire un'azione Until nella definizione JSON del flusso di lavoro, ad esempio:
"actions": {
"Initialize_variable": {
// Definition for initialize variable action
},
"Send_an_email": {
// Definition for send email action
},
"Until": {
"type": "Until",
"actions": {
"Increment_variable": {
"type": "IncrementVariable",
"inputs": {
"name": "Limit",
"value": 1
},
"runAfter": {}
}
},
"expression": "@equals(variables('Limit'), 10)",
// To prevent endless loops, an "Until" loop
// includes these default limits that stop the loop.
"limit": {
"count": 60,
"timeout": "PT1H"
},
"runAfter": {
"Initialize_variable": [
"Succeeded"
]
}
}
}
Questo ciclo Until di esempio chiama un endpoint HTTP, che crea una risorsa. Il ciclo si arresta quando il corpo della risposta HTTP restituisce lo stato Completed. Per evitare i cicli infiniti, il ciclo viene arrestato anche se si verifica una delle condizioni seguenti:
Il ciclo è stato eseguito 10 volte, come specificato dall'attributo
count. Il valore predefinito è 60 volte.Il ciclo è stato eseguito per due ore, come specificato dall'attributo
timeoutin formato ISO 8601. Il valore predefinito è un'ora.
"actions": {
"myUntilLoopName": {
"type": "Until",
"actions": {
"Create_new_resource": {
"type": "Http",
"inputs": {
"body": {
"resourceId": "@triggerBody()"
},
"url": "https://domain.com/provisionResource/create-resource"
},
"runAfter": {},
"type": "ApiConnection"
}
},
"expression": "@equals(body('Create_new_resource'), 'Completed')",
"limit": {
"count": 10,
"timeout": "PT2H"
},
"runAfter": {}
}
}