Hurkok létrehozása a munkafolyamatok műveleteinek ismétléséhez az Azure Logic Apps használatával

A következőkre vonatkozik: Azure Logic Apps (Használat + Standard)

Az Azure Logic Apps a munkafolyamatban használható alábbi ciklusműveleteket tartalmazza:

  • Ha egy tömb elemein egy vagy több műveletet szeretne megismételni, adja hozzá az egyes műveletekhez tartozó műveletet a munkafolyamathoz.

    Ha olyan eseményindítóval rendelkezik, amely egy tömböt fogad, és minden tömbelemhez szeretne iterációt futtatni, akkor a SplitOn eseményindító tulajdonsággal megszakíthatja a tömböt.

  • Ha egy vagy több műveletet meg szeretne ismételni, amíg egy feltétel teljesül vagy egy állapot megvá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 hurok ismétlődik. A munkafolyamatok által használható hurkok számának alapértelmezett és maximális korlátjaiért tekintse meg az egyidejűségi, a hurkolási és a feloldási korlátokat.

Előfeltételek

Mindegyikhez

Az Egyes műveletek csak tömbökön működnek, és egy vagy több műveletet ismételnek meg egy tömb minden elemén. Az alábbi lista néhány szempontot tartalmaz arra vonatkozóan, hogy mikor szeretne minden egyes művelethez használni egy-egy műveletet:

  • Az Egyes műveletek csak korlátozott számú tömbelemet dolgozhatnak fel. Ehhez a korláthoz lásd az egyidejűségi, a hurkolási és a feloldási 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. Az egyes iterációkhoz azonban szekvenciális beállításokat is beállíthat. 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 viselkedés kivételeként az egyes műveletek iterációihoz tartozó beágyazott műveletek mindig egymás után futnak, nem párhuzamosan. Ha párhuzamos műveleteket szeretne futtatni egy beágyazott hurok elemeihez, hozzon létre és hívjon meg egy gyermeklogikaalkalmazás-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. Ha például egy egyidejűleg futó iteráció véget ér, a Növekmény változó, a Decrement változó és a Változóhoz fűzés művelet kiszámítható eredményeket ad 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.

  • Az egyes ciklusokban lévő műveletek a item() függvény használatával hivatkoznak és dolgozzák fel a tömb egyes elemeit. 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 minden egyes művelethez egy e-mailt küld minden új elemhez.

Attól függően, hogy használatalapú vagy standard munkafolyamattal rendelkezik-e, kövesse a megfelelő lépéseket:

  1. Az Azure Portalon hozzon létre egy példát a Használat logikai alkalmazás munkafolyamatára a megadott sorrendben az alábbi lépésekkel:

  2. Ugyanezeket az általános lépéseket követve adja hozzá az RSS-eseményindító és az E-mail küldése művelet közötti minden műveletet a munkafolyamatban.

  3. Most hozza létre a hurkot:

    1. Válassza ki a Select an output from previous steps box(Kimenet kiválasztása az előző lépésekből ) mezőben, hogy megnyílik a dinamikus tartalomlista.

    2. A Dinamikus tartalom hozzáadása listában, a Hírcsatornaelem közzétételekor szakaszban válassza a Hírcsatornahivatkozások lehetőséget, amely az RSS-eseményindító tömbkimenete.

      Megjegyzés:

      Ha a Hírcsatorna csatolások kimenete nem jelenik meg, az eseményindító szakasz felirata mellett válassza a Továbbiak elemet. A dinamikus tartalomlistában csak az előző lépések kimeneteit választhatja ki.

      Screenshot shows Azure portal, Consumption workflow designer, action named For each, and opened dynamic content list.

      Ha elkészült, a kijelölt tömbkimenet az alábbi példában látható módon jelenik meg:

      Screenshot shows Consumption workflow, action named For each, and selected array output.

    3. Ha egy meglévő műveletet szeretne futtatni az egyes tömbelemeken, húzza az E-mail küldése műveletet az Egyes hurkokhoz.

      A munkafolyamat most az alábbi példához hasonlóan néz ki:

      Screenshot shows Consumption workflow, action named For each, and action named Send an email, now inside For each loop.

  4. When you're done, save your workflow.

  5. A munkafolyamat manuális teszteléséhez a tervező eszköztárán válassza az Eseményindító futtatása parancsot>.

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"
   }
},

Mindegyikhez: Futtatás sorrendben

Alapértelmezés szerint az egyes ciklusok iterációi párhuzamosan futnak. Ha azonban beágyazott hurkok vagy változók vannak a hurkokban, ahol kiszámítható eredményeket vár, ezeket a hurkokat egyenként vagy egymás után kell futtatnia.

  1. Az egyes műveletek jobb felső sarkában válassza a három pontot (...) >Gépház.

  2. Az Egyidejűség-vezérlés csoportban módosítsa a beállítást Kiről Be értékre.

  3. Helyezze a párhuzamosság foka csúszkát 1-re, és válassza a Kész lehetőséget.

    Screenshot shows Consumption workflow, action named For each, concurrency control setting turned on, and degree of parallelism slider set to 1.

Minden műveletdefinícióhoz (JSON): Futtassa egymást követően

Ha kódnézetben dolgozik a For_each munkafolyamat JSON-definíciójában szereplő művelettel, a paraméter hozzáadásával operationOptions használhatja a Sequential lehetőséget, például:

"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 hurok ismétlődik. A munkafolyamatok által végrehajtható műveletek vagy iterációk számának alapértelmezett és maximális korlátjaiért tekintse meg az egyidejűségi, hurkolási és feloldási korlátokat.

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.

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.

Megjegyzés:

Ez 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 a felhasználói felület kissé eltérő lehet.

  1. Az Azure Portalon hozzon létre egy Használat logikai alkalmazás erőforrást egy üres munkafolyamattal.

  2. A tervezőben az alábbi általános lépéseket követve adja hozzá az Ütemezés nevű ismétlődő beépített eseményindítót a munkafolyamathoz.

  3. Az Ismétlődés eseményindítóban adja meg az eseményindító indításának napi időközét, gyakoriságát és óráját.

    Tulajdonság Érték
    Intervallum 1
    Gyakoriság Nap
    Ezekben az órákban 8

    Az At these hours paraméter hozzáadásához nyissa meg az Új paraméter hozzáadása listát, és válassza az Aktuális időpont lehetőséget, amely csak a Gyakoriság napi értékre beállítása után jelenik meg.

    Screenshot shows Azure portal, Consumption workflow designer, and Recurrence trigger parameters with selected option for At these hours.

    Ha végzett, az Ismétlődés eseményindító a következő példához hasonlóan néz ki:

    Screenshot shows Azure portal, Consumption workflow, and Recurrence trigger parameters set up.

  4. Az eseményindító alatt kövesse az alábbi általános lépéseket a változók inicializálása nevű beépített műveletének a munkafolyamathoz való hozzáadásához.

  5. Az Inicializálás változó műveletben adja meg a következő értékeket:

    Tulajdonság Value Description
    Név Korlát A változó neve
    Típus Egész A változó adattípusa
    Érték 0 A változó kezdőértéke

    Screenshot shows Azure portal, Consumption workflow, and parameters for built-in action named Initialize variable.

  6. A változó inicializálása művelet alatt kövesse az alábbi általános lépéseket a Control beépített műveletének a munkafolyamathoz való hozzáadásához.

  7. 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.

    1. Válassza ki a bal szélső mezőben az Érték kiválasztása lehetőséget, amely automatikusan megnyitja a dinamikus tartalomlistát.

    2. A listából a Változók csoportban válassza ki a Korlát nevű változót.

    3. A középső operátorok listájában válassza ki az operátorral egyenlő elemet.

    4. Az Érték kiválasztása jobb szélső mezőben adja meg a 10 értéket összehasonlítási értékként.

    Screenshot shows Consumption workflow and built-in action named Until with finished stop condition.

  8. A Amíg műveleten belül válassza a Művelet hozzáadása lehetőséget.

  9. A Művelet kiválasztása keresőmezőben az alábbi általános lépéseket követve adja hozzá a Változók beépített műveletét, a Növekmény változóta Until művelethez.

  10. 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:

    Tulajdonság Érték
    Név Válassza ki a Korlát változót.
    Érték 1

    Screenshot shows Consumption workflow and built-in action named Until with Name set to the Limit variable and Value set to 1.

  11. Az e-maileket küldő művelet hozzáadásához kövesse az alábbi általános lépéseket a művelet végrehajtásához.

    Ez a példa az E-mail küldése nevű Office 365 Outlook-művelettel folytatódik.

  12. Az e-mail műveletben adja meg a következő értékeket:

    Tulajdonság Value Description
    Ide: <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ó aktuális é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. Válassza ki a Tárgy mezőben, hogy megjelenjen a dinamikus tartalomlista.

    2. A 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örzs <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:

    Screenshot shows Consumption workflow and action named Send an email with property values.

  13. Mentse a munkafolyamatot.

A munkafolyamat tesztelése

A logikai alkalmazás munkafolyamatának manuális teszteléséhez kövesse a lépéseket annak alapján, hogy használatalapú vagy standard logikai alkalmazással rendelkezik-e.

A tervező eszköztáron válassza az Eseményindító futtatása parancsot>.

A munkafolyamat futtatása után egy e-mailt kap a megadott tartalommal:

Screenshot shows sample email received from example workflow.

Végtelen hurkok megakadályozása

A Művelet végrehajtásának leállítása a következő tulajdonságok alapján, amelyet a Művelet korlátainak módosítása lehetőség választásával tekinthet meg. Győződjön meg arról, hogy a tulajdonságértékeket ennek megfelelően állítja be:

Property Leírás
Gróf A ciklus kilépése előtt futó iterációk maximális száma.

A munkafolyamatok által végrehajtható műveletek számának alapértelmezett és maximális korlátjaiért tekintse meg az egyidejűségi, a hurkolási és a feloldási korlátokat.
Időtúllépés 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.

Az időtúllépési érték alapértelmezett és maximális korlátjaiért tekintse meg az egyidejűségi, a hurkolási és a feloldási korlátokat.

"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 , amíg a hurok meghív egy HTTP-végpontot, amely létrehoz egy erőforrást. A ciklus leáll, amikor a HTTP-válasz törzse állapottal Completed tér 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 hurok az attribútum által count megadott 10-szer futott. Az alapértelmezett érték 60-szor.

  • A ciklus két órán át futott az timeout ISO 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",
               "body": {
                  "resourceId": "@triggerBody()"
               }
            },
            "runAfter": {},
            "type": "ApiConnection"
         }
      },
      "expression": "@equals(triggerBody(), 'Completed')",
      "limit": {
         "count": 10,
         "timeout": "PT2H"
      },
      "runAfter": {}
   }
}

További lépések