Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: Azure Logic Apps (Consumption + Standard)
Pokud chcete opakovat akce v pracovním postupu aplikace logiky, můžete do pracovního postupu přidat smyčku For each nebo Until ,podle potřeb pro váš scénář.
Poznámka:
Hledáte dokumentaci ke smyčkám Power Automate? Viz Použití smyček.
Na základě vašeho případu použití si můžete vybrat z následujících typů akcí smyčky:
Pokud chcete opakovat jednu nebo více akcí u položek v poli nebo kolekci, přidejte do pracovního postupu akci Pro každou.
Případně, pokud máte spouštěč, který dokáže zpracovat pole a chcete spustit instanci pracovního postupu pro každou položku pole, můžete pole rozčlenit nastavením vlastnosti spouštěče Split on.
Chcete-li opakovat jednu nebo více akcí, dokud není splněna podmínka nebo se změní určitý stav, přidejte akci Until do pracovního postupu.
Váš pracovní postup nejprve spustí všechny akce uvnitř smyčky a pak zkontroluje podmínku nebo stav. Pokud je podmínka splněná, smyčka se zastaví. V opačném případě se smyčka opakuje. Výchozí a maximální omezení počtu smyček Until , které může mít pracovní postup, najdete v tématu Omezení souběžnosti, smyček a debat.
Požadavky
Účet a předplatné Azure. Pokud předplatné nemáte, zaregistrujte si bezplatný účet Azure.
Prostředek aplikace logiky, kde můžete vytvořit a upravit pracovní postup. Podívejte se, co je Azure Logic Apps.
Prostředek aplikace logiky a pracovní postup, ve kterém chcete opakovat akci ve smyčce, a aktivační událost, která spouští pracovní postup.
Než budete moci přidat akci smyčky, musí pracovní postup začít spouštěčem jako prvním krokem. Další informace najdete v tématu Přidání triggeru nebo akce pro vytvoření pracovního postupu.
Následující kroky používají Azure Portal, ale s příslušným rozšířením Azure Logic Apps můžete k vytváření pracovních postupů aplikace logiky použít také následující nástroje:
- Pracovní postupy využití: Visual Studio Code
- Standardní pracovní postupy: Visual Studio Code
Některé kroky se mírně liší podle toho, jestli máte pracovní postup Consumption nebo Standard.
Pro každou
Akce Pro každý funguje pouze pro pole. Tato smyčka opakuje jednu nebo více akcí pro každou položku v poli. Projděte si následující aspekty jednotlivých akcí:
Akce For each může zpracovat omezený počet položek pole. Informace o tomto limitu najdete v části Omezení souběžnosti, smyček a debatchingu.
Ve výchozím nastavení se cykly nebo iterace v akci For each spouští paralelně.
Toto chování se liší od smyčky Apply to each v Power Automate, kde iterace probíhají po jedné, tedy sekvenčně. Pokud váš případ použití vyžaduje sekvenční zpracování, můžete nastavit , aby se jednotlivé iterace spouštěly postupně. Pokud například chcete pomocí akce Zpoždění pozastavit následující iteraci v akci Pro každou, musíte nastavit spouštění jednotlivých iterací tak, aby probíhaly postupně.
Jako výjimka z výchozího chování se iterace vnořené akce For each vždy spouštějí sekvenčně, ne paralelně. Chcete-li spouštět akce souběžně nad položkami pole ve vnořené akci For each, vytvořte a zavolejte podřízený pracovní postup.
Pokud chcete získat předvídatelné výsledky z operací s proměnnými během každé iterace, spusťte iterace postupně. Například když skončí souběžně běžící iterace, operace Inkrementace proměnné, Dekrementace proměnné a Připojení k proměnné vracejí předvídatelné výsledky. Během každé iterace v souběžné smyčce však tyto operace můžou vracet nepředvídatelné výsledky.
Akce ve smyčce For each používají funkci
item()k odkazování na a zpracování každé položky v poli. Pokud zadáte data, která nejsou v poli, pracovní postup selže.
Následující ukázkový pracovní postup odešle denní souhrn pro informační kanál RSS webu. Pracovní postup používá pro každou akci, která odešle e-mail pro každou novou položku.
Na webu Azure Portal vytvořte pracovní postup aplikace logiky s následujícími kroky v zadaném pořadí:
Trigger RSS s názvem Když je položka kanálu publikována
Pokud chcete přidat trigger do pracovního postupu aplikace logiky Consumption nebo Standard , postupujte podle těchto obecných kroků.
Akce Outlook.com nebo Office 365 Outlook s názvem Odeslat e-mail
Pokud chcete přidat akci do pracovního postupu aplikace logiky Consumption nebo Standard , postupujte podle těchto obecných kroků.
Postupujte podle stejných obecných kroků a přidejte akci Pro každou mezi trigger RSS a akci Odeslat e-mail ve vašem pracovním postupu.
Teď sestavte smyčku:
V poli Pro každou položku vyberte v poli Vybrat výstup z předchozích kroků a pak vyberte ikonu blesku.
V seznamu dynamického obsahu, který se otevře, v části Po publikování položky kanálu vyberte Odkazy kanálu, což je pole vrácené triggerem RSS.
Poznámka:
Pokud se nezobrazí výstup odkazů kanálu, vedle názvu aktivační části vyberte možnost Zobrazit více. V seznamu dynamického obsahu můžete vybrat pouze výstupy z předchozích kroků.
Po dokončení se vybraný výstup pole zobrazí jako v následujícím příkladu:
Pokud chcete spustit existující akci pro každou položku pole, přetáhněte akci Odeslat e-mail do smyčky For each .
Pracovní postup teď vypadá jako v následujícím příkladu:
Po dokončení uložte pracovní postup.
Pokud chcete pracovní postup otestovat ručně, vyberte na panelu nástrojů návrháře možnost Spustit>.
Pro každou definici akce (JSON)
Pokud pracujete v zobrazení kódu, můžete definovat For_each akci v definici JSON pracovního postupu, například:
"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"
}
},
Pro každou z nich: Spouštět postupně
Ve výchozím nastavení iterace v akci For each probíhají současně paralelně. Pokud však máte vnořené smyčky nebo máte proměnné uvnitř smyček, ve kterých očekáváte předvídatelné výsledky, musíte tyto smyčky spustit postupně po jednom.
V návrháři vyberte akci For each, čímž otevřete podokno s informacemi, a pak vyberte Nastavení.
V části Řízení souběžnosti změňte nastavení z Vypnuto na Zapnuto.
Posunutí posuvníku stupně paralelismu na 1
Pro každou definici akce (JSON): Spouštět postupně
Pokud pracujete v zobrazení kódu s For_each akcí v definici JSON pracovního postupu, přidejte operationOptions parametr a nastavte hodnotu parametru na Sequential:
"actions": {
"For_each": {
"actions": {
"Send_an_email_(V2)": { }
},
"foreach": "@triggerBody()?['links']",
"runAfter": {},
"type": "Foreach",
"operationOptions": "Sequential"
}
}
Až do
Akce Dokud spustí a opakuje jednu nebo více akcí, dokud není splněna zadaná podmínka. Pokud je podmínka splněná, smyčka se zastaví. V opačném případě se smyčka opakuje. Informace o výchozích a maximálních limitech počtu akcí nebo iterací Until najdete v tématu Souběžnost, smyčky a limity debatchingu.
Následující seznam obsahuje některé běžné scénáře, v nichž můžete použít akci Until:
Zavolejte koncový bod, dokud nedostanete požadovanou odpověď.
Vytvořte záznam v databázi. Počkejte na schválení konkrétního pole v daném záznamu. Pokračujte ve zpracování.
Ve výchozím nastavení akce Until uspěje nebo selže následujícími způsoby:
Smyčka Until proběhne úspěšně, pokud jsou všechny akce uvnitř smyčky úspěšné a je dosaženo limitu smyčky, a to na základě chování po spuštění.
Pokud jsou všechny akce v poslední iteraci smyčky Until úspěšné, celá smyčka Until je označena jako Úspěšná.
Pokud v poslední iteraci smyčky Until selže nějaká akce, označí se celá smyčka Until jako neúspěšná.
Pokud jakákoli akce selže v jiné iteraci než v poslední iteraci, další iterace se bude dál spouštět a celá akce Until není označena jako Neúspěšná.
Pokud chcete místo toho provést selhání akce, změňte výchozí chování v definici JSON smyčky přidáním parametru s názvem
operationOptionsa nastavením hodnoty naFailWhenLimitsReached, například:"Until": { "actions": { "Execute_stored_procedure": { <...> } }, "expression": "@equals(variables('myUntilStop'), true)", "limit": { "count": 5, "timeout": "PT1H" }, "operationOptions": "FailWhenLimitsReached", "runAfter": { "Initialize_variable_8": [ "Succeeded" ] }, "type": "Until" }
V následujícím ukázkovém pracovním postupu akce Until každý den od 8:00 zvyšuje hodnotu proměnné, dokud hodnota proměnné nedosáhne 10. Pracovní postup pak odešle e-mail, který potvrdí aktuální hodnotu. Příklad používá Office 365 Outlook, ale můžete použít libovolného poskytovatele e-mailu, kterého Azure Logic Apps podporuje. Pokud používáte jiný e-mailový účet, obecné kroky zůstanou stejné, ale vypadají trochu jinak.
Na portálu Azure portal vytvořte prostředek aplikace logiky s prázdným pracovním postupem. Projděte si předchozí postup.
V návrháři postupujte podle obecných kroků pro přidání předdefinované aktivační události Plán s názvem Opakování do pracovního postupu Consumption nebo Standard.
V triggeru Opakování zadejte interval, frekvenci a čas aktivace triggeru.
Parameter Hodnota Interval 1 Četnost den V těchto hodinách 8 V těchto minutách 00 V těchto hodinách a v těchto minutách se zobrazí po nastavení Frekvence na Den.
Až budete hotovi, aktivační událost Opakování bude vypadat jako v následujícím příkladu:
Pod triggerem přidejte do pracovního postupu aplikace logiky Consumption nebo Standard předdefinovanou akci Variables s názvem Initialize variables podle těchto obecných kroků.
V akci Inicializovat proměnné zadejte následující hodnoty:
Parameter Hodnota Popis Jméno Omezení Název proměnné Typ Celé číslo Datový typ proměnné Hodnota 0 Počáteční hodnota proměnné V rámci akce Inicializace proměnných přidejte pomocí těchto obecných kroků integrovanou akci Control s názvem Dokud do pracovního postupu aplikace logiky Consumption nebo Standard .
V akci Until zadejte následující hodnoty pro nastavení podmínky zastavení smyčky.
Vyberte pole v rámečku Opakovat, dokud a kliknutím na ikonu blesku otevřete seznam dynamického obsahu.
V seznamu v části Proměnné vyberte proměnnou s názvem Limit.
V části Počet zadejte jako hodnotu porovnání hodnotu 10 .
Uvnitř akce Until (Dokud ) vyberte +>Add an action (Přidat akci).
Pomocí těchto obecných kroků přidejte do akce Until v pracovním postupu aplikace logiky Consumption nebo Standard předdefinovanou akci Variables s názvem Increment variable.
V akci Increment variable zadejte následující hodnoty, aby se hodnota proměnné Limit zvýšila o 1:
Parameter Hodnota Omezení Vyberte proměnnou Limit . Hodnota 1 Vně akce Until i v ní postupujte při přidávání akce, která odesílá e-maily, v pracovním postupu aplikace logiky Consumption nebo Standard podle těchto obecných kroků.
Tento příklad pokračuje akcí Office 365 Outlook s názvem Odeslat e-mail.
V e-mailové akci zadejte následující hodnoty:
Parameter Hodnota Popis Na < e-mailová-adresa@domain> E-mailová adresa příjemce. K testování použijte vlastní e-mailovou adresu. Předmět Aktuální hodnota proměnné Limit je:Limit Předmět e-mailu. V tomto příkladu nezapomeňte zahrnout proměnnou Limit , abyste potvrdili, že aktuální hodnota splňuje zadanou podmínku:
1. Vyberte uvnitř pole Předmět a pak vyberte ikonu blesku.
2. V seznamu dynamického obsahu, který se otevře, vedle záhlaví oddílu Proměnné vyberte Zobrazit více.
3. Vyberte limit.Tělo < obsah e-mailu> Obsah e-mailové zprávy, který chcete odeslat. V tomto příkladu zadejte požadovaný text. Po dokončení bude akce e-mailu vypadat podobně jako v následujícím příkladu:
Uložte pracovní postup.
Otestování pracovního postupu
Ruční testování pracovního postupu aplikace logiky:
- Na panelu nástrojů návrháře v možnosti Spustit vyberte Spustit.
Po spuštění pracovního postupu dostanete e-mail s obsahem, který jste zadali:
Zabraňte nekonečným smyčkám
Akce Until zastaví provádění na základě volitelných parametrů Count (Počet ) a Timeout (Časový limit ). Ujistěte se, že jste odpovídajícím způsobem nastavili tyto hodnoty parametrů:
| Parameter | Popis |
|---|---|
| Počet | Maximální počet iterací, které proběhnou před ukončením smyčky. Informace o výchozích a maximálních limitech počtu akcí Until, které může pracovní postup obsahovat, najdete v tématu Omezení souběžnosti, smyček a rozdělování dávek. |
| Časový limit | Maximální doba, po kterou akce Until, včetně všech iterací, běží, než se smyčka ukončí. Tato hodnota je zadána ve formátu ISO 8601 a je vyhodnocena pro každou iteraci. Pokud některá akce ve smyčce trvá déle, než je nastavený časový limit, aktuální iterace se nezastaví. Další iterace se ale nespustí, protože byl dosažen časový limit. Výchozí a maximální limity pro hodnotu časového limitu najdete v tématu Omezení souběžnosti, smyčky a debaty. |
Zkontrolovat historii spuštění iterací smyčky Until
Když zobrazíte historii spuštění pracovního postupu, který obsahuje smyčku Until , bude podrobný stav a výsledky akcí uvnitř smyčky k dispozici až po dokončení celé smyčky. Zatímco smyčka Until stále provádí iterace, akce smyčky zobrazuje stav Spuštěno, ale výsledky jednotlivých iterací nemůžete rozbalit ani procházet, dokud smyčka neskončí.
Smyčka se ukončí, když je splněna jedna z následujících podmínek:
- Zadaný výraz se vyhodnotí jako true.
- Smyčka dosáhne limitu Count.
- Smyčka dosáhne limitu Timeout.
Po dokončení smyčky můžete vybrat akci Until v historii spuštění a zobrazit jednotlivé iterace a stav podřízených akcí v rámci této iterace.
Poznámka:
Pokud vaše smyčka Until běží delší dobu, musíte počkat, až se smyčka úplně dokončí, než budete moci v historii spuštění zkontrolovat výsledky jednotlivých iterací. Pokud chcete monitorovat dlouho probíhající smyčky, zvažte přidání akcí protokolování nebo oznámení do smyčky, které nezávisle generují stav, například odesláním zprávy do fronty nebo aktualizací proměnné, kterou může paralelní větev číst.
Definice „Until“ (JSON)
Pokud pracujete v zobrazení kódu, můžete definovat Until akci v definici JSON pracovního postupu, například:
"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"
]
}
}
}
V tomto příkladu smyčka Until volá koncový bod HTTP, který vytvoří prostředek. Smyčka se zastaví, když tělo odpovědi HTTP vrátí stav Completed. Pokud chcete zabránit nekonečným smyčkám, smyčka se zastaví také v případě, že dojde k některé z následujících podmínek:
Smyčka běžela 10krát podle zadání atributu
count. Výchozí hodnota je 60krát.Smyčka probíhala po dobu dvou hodin, jak určuje atribut
timeoutve formátu ISO 8601. Výchozí hodnota je jedna hodina.
"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": {}
}
}