Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Azure Logic Apps (Használat + Standard)
Ha műveleteket szeretne ismételni egy logikai alkalmazás munkafolyamatában, az adott forgatókönyv igényei alapján hozzáadhatja a For each hurkot vagy az Until ciklust a munkafolyamathoz.
Megjegyzés
A Ciklusokkal kapcsolatos Power Automate-dokumentációt keresi? Lásd: Ciklusok használata.
A használati eset alapján a ciklusműveletek alábbi típusai közül választhat:
Ha egy tömb vagy gyűjtemény elemein egy vagy több műveletet szeretne megismételni, adja hozzá az Egyes műveletekhez műveletet a munkafolyamathoz.
Alternatívaként, ha olyan triggerrel rendelkezik, amely képes kezelni a tömböket, és azt szeretné, hogy minden tömb elemhez futtasson egy munkafolyamat-példányt, a tömböt debatch-elheti a Split on trigger tulajdonság beállításával.
Ha egy vagy több műveletet meg szeretne ismételni, amíg egy feltétel vagy egy adott állapot nem változik, adja hozzá a Until műveletet a munkafolyamathoz.
A munkafolyamat először futtatja az összes műveletet a cikluson belül, majd ellenőrzi a feltételt vagy az állapotot. Ha a feltétel teljesül, a hurok leáll. Ellenkező esetben a ciklus megismétlődik. A munkafolyamatokban használható Until hurkok számára vonatkozó alapértelmezett és maximális korlátokról lásd: Az egyidejűségre, a hurkolásra és a kötegbontásra vonatkozó korlátok.
Előfeltételek
Azure-fiók és -előfizetés. Ha még nincs előfizetése, regisztráljon egy ingyenes Azure-fiókra.
Logikai alkalmazás erőforrása, ahol munkafolyamatot hozhat létre és szerkeszthet. Lásd : Mi az Azure Logic Apps?
A logikai alkalmazás erőforrása és munkafolyamata, amelyben egy műveletet meg szeretne ismételni egy ciklusban, és egy eseményindítót, amely elindítja a munkafolyamatot.
A ciklusművelet hozzáadása előtt a munkafolyamatnak első lépésként egy eseményindítóval kell kezdődnie. További információ: Eseményindító vagy művelet hozzáadása munkafolyamat létrehozásához.
Az alábbi lépések az Azure Portalt használják, de a megfelelő Azure Logic Apps-bővítménysel a következő eszközökkel is létrehozhat logikaialkalmazás-munkafolyamatokat:
- Használati munkafolyamatok: Visual Studio Code
- Standard munkafolyamatok: Visual Studio Code
Egyes lépések kissé eltérnek attól függően, hogy használatalapú vagy standard munkafolyamattal rendelkezik-e.
Mindegyikhez
A(z) For each művelet csak tömbökön működik. Ez a hurok egy vagy több műveletet ismétel meg egy tömb minden elemén. Tekintse át az egyes műveletekre vonatkozó alábbi szempontokat:
A Mindegyikhez művelet korlátozott számú tömbelemet képes feldolgozni. Ezzel a korláttal kapcsolatban lásd a párhuzamosságra, a ciklusokra és a kötegek felbontására vonatkozó korlátokat.
Alapértelmezés szerint az egyes műveletek ciklusai vagy iterációi párhuzamosan futnak.
Ez a viselkedés eltér a Power Automate alkalmazásától minden olyan hurok esetében, ahol az iterációk egyenként vagy egymás után futnak. Ha a használati eset szekvenciális feldolgozást igényel, beállíthatja, hogy az egyes iterációk egyenként fussanak. Ha például a Késleltetés művelettel szeretné szüneteltetni az egyes műveletek következő iterációját, minden iterációt egymás után kell beállítania.
Az alapértelmezett működéstől eltérően egy beágyazott For each művelet iterációi mindig sorban futnak, nem párhuzamosan. Ha egy beágyazott For each művelet tömbelemein szeretne műveleteket egyidejűleg futtatni, hozzon létre és hívjon meg egy gyermek-munkafolyamatot.
Ha az egyes iterációk során változókon végzett műveletekből kiszámítható eredményeket szeretne kapni, futtassa az iterációkat egymás után. Például amikor egy egyidejűleg futó iteráció véget ér, a Változó növelése, a Változó csökkentése és a Hozzáfűzés változóhoz műveletek kiszámítható eredményeket adnak vissza. Az egyidejűleg futó ciklus minden iterációja során azonban előfordulhat, hogy ezek a műveletek kiszámíthatatlan eredményeket adnak vissza.
A For each ciklusban lévő műveletek a
item()függvényt használják a tömb egyes elemeire való hivatkozáshoz és azok feldolgozásához. Ha olyan adatokat ad meg, amelyek nem tömbben találhatóak, a munkafolyamat meghiúsul.
Az alábbi példa-munkafolyamat napi összefoglalót küld egy webhely RSS-hírcsatornájáról. A munkafolyamat egy For each műveletet használ, amely minden új elemhez egy e-mailt küld.
Az Azure Portalon hozzon létre egy logikaialkalmazás-munkafolyamatot a megadott sorrendben az alábbi lépésekkel:
Hírcsatornaelem közzétételekor elnevezett RSS-eseményindító
Az alábbi általános lépésekkel eseményindítót adhat hozzá egy Fogyasztás- vagy Standard logikai alkalmazás munkafolyamatához.
Az e-mail küldése nevű Outlook.com vagy Office 365 Outlook-művelet
Az alábbi általános lépésekkel műveletet adhat hozzá egy Consumption vagy Standard logikaialkalmazás-munkafolyamathoz.
Azonos általános lépéseket követve adja hozzá a Mindegyikhez műveletet az RSS-eseményindító és az E-mail küldése művelet közé a munkafolyamatába.
Most hozd létre a ciklust:
Az Egyes elemeknél válassza az Előző lépések kimenetének kiválasztása párbeszédpanelen belül, majd válassza a villám ikont.
A megnyíló dinamikustartalom-listában, a Hírcsatorna-elem közzétételekor területen válassza a Hírcsatorna-hivatkozások lehetőséget, amely az RSS-aktiváló tömbkimenete.
Megjegyzés
Ha a Hírcsatornahivatkozások kimenet nem jelenik meg, az indító szakaszcímke mellett válassza a Továbbiak lehetőséget. A dinamikus tartalomlistában csak az előző lépések kimeneteit választhatja ki.
Ha elkészült, a kijelölt tömbkimenet az alábbi példában látható módon jelenik meg:
Egy meglévő művelet tömb minden elemén történő végrehajtásához húzza az E-mail küldése műveletet a(z) For each hurokba.
A munkafolyamat most az alábbi példához hasonlóan néz ki:
Ha végzett, mentse a munkafolyamatot.
A munkafolyamat manuális teszteléséhez a tervező eszköztárán válassza a Futtatás>Futtatás lehetőséget.
Minden műveletdefinícióhoz (JSON)
Ha kódnézetben dolgozik, meghatározhatja a műveletet a For_each munkafolyamat JSON-definíciójában, például:
"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"
}
},
Mindegyiknél: Futtatás egymás után
Alapértelmezés szerint egy For each művelet iterációi egyszerre, párhuzamosan futnak. Ha azonban beágyazott hurkok vannak, vagy olyan ciklusokban vannak változók, amelyekben kiszámítható eredmények várhatók, ezeket a hurkokat egymás után kell futtatnia.
A tervezőn válassza a Minden műveletnél lehetőséget az információs panel megnyitásához, majd válassza a Beállítások lehetőséget.
Az Egyidejűség-kezelés alatt módosítsa a beállítást Ki értékről Be értékre.
A párhuzamosság foka csúszka áthelyezése 1-re.
Minden műveletdefinícióhoz (JSON): Szekvenciális futtatás
Ha kódnézetben dolgozik a For_each munkafolyamat JSON-definíciójában szereplő művelettel, adja hozzá a operationOptions paramétert, és állítsa a paraméter értékét a következőre Sequential:
"actions": {
"For_each": {
"actions": {
"Send_an_email_(V2)": { }
},
"foreach": "@triggerBody()?['links']",
"runAfter": {},
"type": "Foreach",
"operationOptions": "Sequential"
}
}
Befejezés ideje
A Amíg a művelet le nem fut, és meg nem ismétel egy vagy több műveletet, amíg a szükséges feltétel nem teljesül. Ha a feltétel teljesül, a hurok leáll. Ellenkező esetben a ciklus megismétlődik. Az Until műveletek vagy iterációk számának alapértelmezett és maximális korlátaival kapcsolatban lásd: Egyidejűségi, hurkolási és kötegfelbontási korlátok.
Az alábbi lista néhány gyakori forgatókönyvet tartalmaz, ahol a Until művelet használható:
Hívjon meg egy végpontot, amíg meg nem kapja a kívánt választ.
Hozzon létre egy rekordot egy adatbázisban. Várjon, amíg a rekord egy adott mezőjét jóváhagyják. Folytassa a feldolgozást.
Alapértelmezés szerint a Until művelet a következő módokon sikeres vagy sikertelen:
A Amíg ciklus sikeres lesz, ha a cikluson belüli összes művelet sikeres, és ha eléri a cikluskorlátot a futtatás utáni viselkedés alapján.
Ha a Until ciklus utolsó iterációjában végrehajtott összes művelet sikeres, a teljes Addig ciklus sikeresként van megjelölve.
Ha bármely művelet meghiúsul a Until ciklus utolsó iterációjában, a teljes Addig ciklus sikertelenként van megjelölve.
Ha az utolsó iterációtól eltérő iterációban bármely művelet meghiúsul, a következő iteráció továbbra is fut, és a teljes Addig művelet nincs sikertelenként megjelölve.
A művelet meghiúsulásához módosítsa az alapértelmezett viselkedést a hurok JSON-definíciójában a névvel ellátott
operationOptionsparaméter hozzáadásával, és állítsa az értéket például a következőreFailWhenLimitsReached:"Until": { "actions": { "Execute_stored_procedure": { <...> } }, "expression": "@equals(variables('myUntilStop'), true)", "limit": { "count": 5, "timeout": "PT1H" }, "operationOptions": "FailWhenLimitsReached", "runAfter": { "Initialize_variable_8": [ "Succeeded" ] }, "type": "Until" }
A következő példa-munkafolyamatban, amely minden nap 8:00-tól kezdődik, a Until művelet addig növeli a változót, amíg a változó értéke nem lesz 10. A munkafolyamat ezután egy e-mailt küld, amely megerősíti az aktuális értéket. A példa az Office 365 Outlookot használja, de bármely olyan e-mail-szolgáltatót használhat, amelyet az Azure Logic Apps támogat. Ha egy másik e-mail-fiókot használ, az általános lépések változatlanok maradnak, de kissé másnak tűnnek.
Az Azure Portalon hozzon létre egy logikaialkalmazás-erőforrást egy üres munkafolyamattal. Tekintse meg a korábbi eljárást.
A tervezőben kövesse az általános lépéseket az Ütemezés beépített, Ismétlődés nevű eseményindító hozzáadásához a Fogyasztás vagy Standard munkafolyamathoz.
Az Ismétlődés eseményindítóban adja meg az eseményindító indításának időközét, gyakoriságát és idejét.
Paraméter Érték Intervallum 1 Gyakoriság Nap Ezekben az órákban 8 Ezekben a pillanatokban 00 Ezekben az órákban és ezekben a percekben jelenik meg a gyakoriságnapi értékre beállítása után.
Ha végzett, az Ismétlődés eseményindító a következő példához hasonlóan néz ki:
Az eseményindító alatt kövesse az alábbi általános lépéseket, hogy hozzáadja a Változók inicializálása nevű beépített változók műveletét a Használat vagy a Standard logikai alkalmazás munkafolyamatához.
A változók inicializálása műveletben adja meg a következő értékeket:
Paraméter Érték Leírás Név Korlát A változó neve Típus Egész szám A változó adattípusa Érték 0 A változó kezdőértéke A Változók inicializálása művelet alatt kövesse az alábbi általános lépéseket, hogy hozzáadja a Vezérlés beépített, Until nevű műveletét a Consumption vagy Standard logikaialkalmazás-munkafolyamathoz.
A Until műveletben adja meg a következő értékeket a ciklus leállítási feltételének beállításához.
Jelölje ki a Loop Until mezőben lévő területet, majd válassza a villám ikont a dinamikustartalom-lista megnyitásához.
A listából a Változók csoportban válassza ki a Korlát nevű változót.
A Darabszám csoportban adja meg a 10 értéket összehasonlítási értékként.
A Amíg műveleten belül válassza +> a Művelet hozzáadása lehetőséget.
Az alábbi általános lépésekkel adhatja hozzá a Változók beépített Változó növelése nevű műveletét a Fogyasztási vagy Standard logikaialkalmazás-munkafolyamat Until műveletéhez.
A Változó növekménye műveletben adja meg a következő értékeket a korlátváltozó értékének 1-zel való növeléséhez:
Paraméter Érték Korlát Válassza ki a Korlát változót. Érték 1 A Until műveleten kívül és alatt kövesse az alábbi általános lépéseket egy olyan művelet hozzáadásához, amely e-maileket küld a Használat vagy a Standard logikai alkalmazás munkafolyamatában.
Ez a példa az E-mail küldése nevű Office 365 Outlook-művelettel folytatódik.
Az e-mail műveletben adja meg a következő értékeket:
Paraméter Érték Leírás Címzett: < e-mail-address@domain> A címzett e-mail-címe. Teszteléshez használja a saját e-mail-címét. Tárgy A "Limit" változó jelenlegi értéke:Korlát Az e-mail tárgya. Ebben a példában győződjön meg arról, hogy a Limit változót is tartalmazza annak ellenőrzéséhez, hogy az aktuális érték megfelel-e a megadott feltételnek:
1. Jelölje ki a Tárgy mezőben, majd válassza a villám ikont.
2. A megnyíló dinamikus tartalomlistában a Változók szakasz fejléce mellett válassza a Továbbiak lehetőséget.
3. Válassza a Korlát lehetőséget.Törzsszöveg < e-mail-tartalom> A küldeni kívánt e-mail-tartalom. Ebben a példában adja meg a kívánt szöveget. Ha végzett, az e-mail-művelet az alábbi példához hasonlóan néz ki:
Mentse a munkafolyamatot.
A munkafolyamat tesztelése
A logikai alkalmazás munkafolyamatának manuális tesztelése:
- A tervező eszköztár Futtatás lehetőségében válassza a Futtatás lehetőséget.
A munkafolyamat futtatása után egy e-mailt kap a megadott tartalommal:
Végtelen hurkok megakadályozása
A Mindaddig művelet leállítja a végrehajtást az opcionális Darabszám és Időtúllépés paraméterek alapján. Győződjön meg arról, hogy a paraméterértékeket ennek megfelelően állítja be:
| Paraméter | Leírás |
|---|---|
| Darabszám | A ciklus kilépése előtt futó iterációk maximális száma. A munkafolyamatokban használható Until műveletek számára vonatkozó alapértelmezett és maximális korlátokról lásd: Párhuzamossági, ciklus- és kötegbontási korlátok. |
| Időkorlát | Az a maximális időtartam, ameddig a Until művelet , beleértve az összes iterációt is, a ciklus kilépése előtt fut. Ez az érték ISO 8601 formátumban van megadva, és az egyes iterációk esetében kiértékelésre kerül. Ha a ciklus bármely művelete hosszabb időtúllépési korlátot vesz igénybe, az aktuális iteráció nem áll le. A következő iteráció azonban nem indul el, mert az időtúllépési korlát feltétel teljesül. A Timeout érték alapértelmezett és maximális korlátairól lásd a Concurrency, looping, and debatching limits című témakört. |
Az Until ciklus iterációi futási előzményeinek áttekintése
Ha egy Addig ciklust tartalmazó munkafolyamat futtatási előzményeit tekinti meg, a cikluson belüli műveletek részletes állapota és eredményei csak a teljes ciklus futtatása után érhetők el. Bár a Amíg ciklus továbbra is végrehajtja az iterációit, a ciklusművelet a Futtatás állapotot jeleníti meg, de az egyes iterációk eredményei csak akkor bonthatók ki vagy léphetők át, ha a hurok kilép.
A ciklus akkor lép ki, ha az alábbi feltételek valamelyike teljesül:
- A megadott kifejezés értéke igaz.
- A ciklus eléri a Count korlátját.
- A ciklus eléri a Időtúllépés korlátját.
A ciklus befejeződése után a futtatási előzményekben kiválaszthatja a Until műveletet, hogy megtekintse az egyes iterációkat, valamint az adott iteráción belüli alárendelt műveletek állapotát.
Megjegyzés
Ha a Until ciklus hosszabb ideig fut, meg kell várnia a ciklus teljes befejezését, mielőtt megvizsgálhatja az egyes iterációk eredményeinek futtatási előzményeit. A hosszú ideig futó, folyamatban lévő hurkok monitorozásához érdemes lehet olyan naplózási vagy értesítési műveleteket hozzáadni a cikluson belül, amelyek egymástól függetlenül bocsátanak ki állapotot, például üzenetsorba küldve vagy egy olyan változó frissítésével, amelyet egy párhuzamos ág képes olvasni.
"Until" definíció (JSON)
Ha kódnézetben dolgozik, meghatározhat egy Until műveletet a munkafolyamat JSON-definíciójában, például:
"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"
]
}
}
}
Ez a példa egy Until ciklusban egy HTTP-végpontot hív meg, amely létrehoz egy erőforrást. A ciklus leáll, amikor az HTTP-válasz törzse Completed állapotot ad vissza. A végtelen ciklusok megakadályozása érdekében a hurok akkor is leáll, ha az alábbi feltételek valamelyike teljesül:
A ciklus a
countattribútum által meghatározottak szerint 10 alkalommal futott le. Az alapértelmezett érték 60-szor.A ciklus két órán át futott az
timeoutISO 8601 formátumban megadott attribútumnak megfelelően. Az alapértelmezett érték egy óra.
"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": {}
}
}