Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Azure Logic Apps (Verbruik + Standard)
Als u acties in een werkstroom van een logische app wilt herhalen, kunt u de Voor elke lus of Until-lus toevoegen aan uw werkstroom, op basis van de behoeften voor uw scenario.
Notitie
Op zoek naar Power Automate-documentatie over lussen? Zie Use-lussen.
Op basis van uw use-case kunt u kiezen uit de volgende typen lusacties:
Als u één of meer acties wilt herhalen op items in een array of verzameling, voegt u de Voor elke actie toe aan uw werkstroom.
Als u een trigger hebt die arrays kan verwerken en een werkstroominstantie voor elk array-item wilt uitvoeren, kunt u de array opsplitsen door de triggereigenschap 'Splitsen op' in te stellen.
Als u een of meer acties wilt herhalen totdat aan een voorwaarde wordt voldaan of een bepaalde status wordt gewijzigd, voegt u de actie Until toe aan uw werkstroom.
Uw werkstroom voert eerst alle acties in de lus uit en controleert vervolgens de voorwaarde of status. Als aan de voorwaarde wordt voldaan, stopt de lus. Anders wordt de lus herhaald. Voor de standaard- en maximumlimieten voor het aantal Until-lussen dat een werkstroom kan hebben, raadpleegt u Gelijktijdigheid, lussen en debatching-limieten.
Vereisten
Een Azure-account en -abonnement. Als u nog geen abonnement hebt, meld u dan aan voor een gratis Azure-account.
Een resource voor logische apps waar u een werkstroom kunt maken en bewerken. Bekijk wat Azure Logic Apps is.
De resource en werkstroom van de logische app waarin u een actie in een lus wilt herhalen en een trigger waarmee de werkstroom wordt gestart.
Voordat u een lusactie kunt toevoegen, moet uw werkstroom beginnen met een trigger als eerste stap. Zie Een trigger of actie toevoegen om een werkstroom te maken voor meer informatie.
In de volgende stappen wordt Azure Portal gebruikt, maar met de juiste Azure Logic Apps-extensie kunt u ook de volgende hulpprogramma's gebruiken om werkstromen voor logische apps te bouwen:
- Werkstromen voor verbruik: Visual Studio Code
- Standaardwerkstromen: Visual Studio Code
Sommige stappen verschillen enigszins, afhankelijk van of u een verbruikswerkstroom of een standaardwerkstroom hebt.
Voor elk
De actie Voor elke actie werkt alleen op matrices. Deze lus herhaalt een of meer acties voor elk item in een matrix. Bekijk de volgende overwegingen voor de actie Voor elke actie:
De actie Voor elke actie kan een beperkt aantal matrixitems verwerken. Zie Gelijktijdigheid, lussen en debatching-limieten voor deze limiet.
Standaard worden de cycli of iteraties in een Voor elke actie parallel uitgevoerd.
Dit gedrag verschilt van de toepassing van Power Automate op elke lus waarbij iteraties één voor één worden uitgevoerd, of opeenvolgend. Als voor uw use-case sequentiële verwerking is vereist, kunt u instellen dat elke iteratie één voor één wordt uitgevoerd. Als u bijvoorbeeld de volgende iteratie in een Voor elke actie wilt onderbreken met behulp van de actie Vertraging, moet u elke iteratie instellen om opeenvolgend uit te voeren.
Als uitzondering op het standaardgedrag worden iteraties van elke actie altijd opeenvolgend uitgevoerd, niet parallel. Als u acties tegelijk wilt uitvoeren op matrixitems in een geneste actie voor elke actie, maakt en roept u een onderliggende werkstroom aan.
Als u voorspelbare resultaten wilt krijgen van bewerkingen op variabelen tijdens elke iteratie, voert u de iteraties sequentieel uit. Wanneer bijvoorbeeld een gelijktijdige iteratie eindigt, retourneren de variabele Increment, Decrement-variabele en Toevoegen aan variabelebewerkingen voorspelbare resultaten. Tijdens elke iteratie in de gelijktijdig actieve lus kunnen deze bewerkingen echter onvoorspelbare resultaten opleveren.
Acties in een Voor elke lus gebruiken de
item()functie om naar elk item in de matrix te verwijzen en te verwerken. Als u gegevens opgeeft die zich niet in een matrix bevindt, mislukt de werkstroom.
Met de volgende voorbeeldwerkstroom wordt een dagelijkse samenvatting verzonden voor een RSS-feed van een website. De werkstroom maakt gebruik van een voor elke actie die een e-mail verzendt voor elk nieuw item.
Maak in Azure Portal een werkstroom voor een logische app met de volgende stappen in de opgegeven volgorde:
De RSS-trigger met de naam Wanneer een feeditem wordt gepubliceerd
Volg deze algemene stappen om een trigger toe te voegen aan een werkstroom voor logische of standaard logische apps.
De actie Outlook.com of Office 365 Outlook met de naam Een e-mailbericht verzenden
Volg deze algemene stappen om een actie toe te voegen aan een werkstroom voor de logische app Verbruik of Standard .
Volg dezelfde algemene stappen om de actie Voor elke actie toe te voegen tussen de RSS-trigger en een e-mailactie verzenden in uw werkstroom.
Bouw nu de lus:
Selecteer in het vak Een uitvoer uit vorige stappen selecteren in het vak Voor elk item en selecteer vervolgens het bliksempictogram.
Selecteer in de lijst met dynamische inhoud die wordt geopend, onder Wanneer een feeditem wordt gepubliceerd, feedkoppelingen. Dit is een matrixuitvoer van de RSS-trigger.
Notitie
Als de uitvoer van de feedkoppelingen niet wordt weergegeven, selecteert u naast het label triggersectie meer. In de lijst met dynamische inhoud kunt u alleen uitvoer uit de vorige stappen selecteren.
Wanneer u klaar bent, wordt de geselecteerde matrixuitvoer weergegeven zoals in het volgende voorbeeld:
Als u een bestaande actie wilt uitvoeren op elk matrixitem, sleept u de actie Een e-mail verzenden naar de lus Voor elke lus.
Uw werkstroom ziet er nu uit zoals in het volgende voorbeeld:
Sla uw werkstroom op als u gereed bent.
Als u uw werkstroom handmatig wilt testen, selecteert u Uitvoeren> op de werkbalk van de ontwerpfunctie.
Voor elke actiedefinitie (JSON)
Als u in de codeweergave werkt, kunt u de actie definiëren in de For_each JSON-definitie van uw werkstroom, bijvoorbeeld:
"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"
}
},
Voor elk: sequentieel uitvoeren
Standaard worden de iteraties in een Voor elke actie parallel uitgevoerd. Als u echter geneste lussen hebt of variabelen in lussen hebt waarin u voorspelbare resultaten verwacht, moet u deze lussen één voor één sequentie uitvoeren.
Selecteer in de ontwerpfunctie de actie Voor elke actie om het informatievenster te openen en selecteer vervolgens Instellingen.
Wijzig onder Gelijktijdigheidsbeheer de instelling van Uit in Aan.
Verplaats de schuifregelaar Mate van parallelle uitvoering naar 1.
Voor elke actiedefinitie (JSON): Voer sequentieel uit
Als u in de codeweergave werkt met de actie in de For_each JSON-definitie van uw werkstroom, voegt u de parameter toe en stelt u de operationOptions parameterwaarde Sequentialin op:
"actions": {
"For_each": {
"actions": {
"Send_an_email_(V2)": { }
},
"foreach": "@triggerBody()?['links']",
"runAfter": {},
"type": "Foreach",
"operationOptions": "Sequential"
}
}
Totdat
De actie Until wordt uitgevoerd en herhaalt een of meer acties totdat aan de vereiste opgegeven voorwaarde is voldaan. Als aan de voorwaarde wordt voldaan, stopt de lus. Anders wordt de lus herhaald. Zie Gelijktijdigheids-, lus- en debatchinglimieten voor de standaard- en maximumlimieten voor het aantal acties of iteraties.
De volgende lijst bevat enkele veelvoorkomende scenario's waarin u een actie Until kunt gebruiken:
Roep een eindpunt aan totdat u het gewenste antwoord krijgt.
Maak een record in een database. Wacht totdat een specifiek veld in die record wordt goedgekeurd. Doorgaan met verwerken.
De actie Until slaagt of mislukt standaard op de volgende manieren:
De Until lus slaagt als alle acties in de lus slagen, en als de luslimiet is bereikt, gebaseerd op het gedrag na uitvoering.
Als alle acties in de laatste iteratie van de lus Until zijn geslaagd, wordt de hele Until-lus gemarkeerd als Geslaagd.
Als een actie mislukt in de laatste iteratie van de Until-lus, wordt de hele Until-lus gemarkeerd als Mislukt.
Als een actie mislukt in een andere iteratie dan de laatste iteratie, blijft de volgende iteratie actief en wordt de hele actie Pas gemarkeerd als Mislukt.
Als u de actie wilt laten mislukken, wijzigt u het standaardgedrag in de JSON-definitie van de lus door de parameter met de naam
operationOptionstoe te voegen en de waarde in te stellen opFailWhenLimitsReached, bijvoorbeeld:"Until": { "actions": { "Execute_stored_procedure": { <...> } }, "expression": "@equals(variables('myUntilStop'), true)", "limit": { "count": 5, "timeout": "PT1H" }, "operationOptions": "FailWhenLimitsReached", "runAfter": { "Initialize_variable_8": [ "Succeeded" ] }, "type": "Until" }
In de volgende voorbeeldwerkstroom, beginnend om 8:00 uur per dag, wordt met de actie Until een variabele verhoogd totdat de waarde van de variabele gelijk is aan 10. De werkstroom verzendt vervolgens een e-mailbericht dat de huidige waarde bevestigt. In het voorbeeld wordt Office 365 Outlook gebruikt, maar u kunt elke e-mailprovider gebruiken die door Azure Logic Apps wordt ondersteund. Als u een ander e-mailaccount gebruikt, blijven de algemene stappen hetzelfde, maar zien er iets anders uit.
Maak in Azure Portal een logische app-resource met een lege werkstroom. Raadpleeg de eerdere procedure.
Volg in de ontwerpfunctie de algemene stappen om de ingebouwde schematrigger terugkeerpatroon toe te voegen aan uw verbruiks - of standaardwerkstroom .
Geef in de trigger Terugkeerpatroon het interval, de frequentie en de tijd op waarop de trigger moet worden geactiveerd.
Kenmerk Weergegeven als Interval 1 Frequentie dag Deze uren 8 Op deze minuten 00 Op deze uren en op deze minuten worden weergegeven nadat u Frequentie op Dag hebt ingesteld.
Wanneer u klaar bent, ziet de trigger terugkeerpatroon eruit zoals in het volgende voorbeeld:
Volg onder de trigger deze algemene stappen om de ingebouwde variabelen met de naam Variabelen met de naam Variabelen initialiseren toe te voegen aan de werkstroom van uw logische app Verbruik of Standaard .
Geef in de actie Variabelen initialiseren de volgende waarden op:
Kenmerk Weergegeven als Beschrijving Naam Limiet De naam van uw variabele Typ Geheel getal Het gegevenstype van uw variabele Waarde 0 De beginwaarde van uw variabele Volg onder de actie Variabelen initialiseren deze algemene stappen om de ingebouwde besturingselementactie Met de naam Until toe te voegen aan uw werkstroom voor de logische app Verbruik of Standard .
Geef in de actie Until de volgende waarden op om de stopvoorwaarde voor de lus in te stellen.
Selecteer in het vak Herhalen tot en selecteer het bliksempictogram om de lijst met dynamische inhoud te openen.
Selecteer in de lijst onder Variabelen de variabele Limit.
Voer onder Aantal10 in als de vergelijkingswaarde.
Selecteer + een > in de actie Until.
Volg deze algemene stappen om de ingebouwde actie Variabelen met de naam Increment-variabele toe te voegen aan de actie Until in uw werkstroom voor de logische app Verbruik of Standaard .
Geef in de actie Variabele verhogen de volgende waarden op om de waarde van de variabele Limiet met 1 te verhogen:
Kenmerk Weergegeven als Limiet Selecteer de variabele Limiet . Waarde 1 Volg deze algemene stappen buiten en onder de actie Until om een actie toe te voegen waarmee e-mail wordt verzonden in uw werkstroom voor logische apps verbruik of Standaard .
In dit voorbeeld wordt de actie Office 365 Outlook met de naam Een e-mailbericht verzenden voortgezet.
Geef in de e-mailactie de volgende waarden op:
Kenmerk Weergegeven als Beschrijving Als u dit wilt doen < e-mail address@domain> Het e-mailadres van de geadresseerde. Gebruik uw eigen e-mailadres voor testen. Onderwerp De huidige waarde voor de variabele Limiet is:Limiet Het e-mailonderwerp. Zorg er voor dit voorbeeld voor dat u de variabele Limiet opneemt om te bevestigen dat de huidige waarde voldoet aan de opgegeven voorwaarde:
1. Selecteer in het vak Onderwerp en selecteer vervolgens het bliksempictogram.
2. Selecteer meer in de lijst met dynamische inhoud die wordt geopend, naast de koptekst van de sectie Variabelen.
3. Selecteer Limiet.Tekst < e-mailinhoud> De inhoud van het e-mailbericht dat u wilt verzenden. Voer voor dit voorbeeld de gewenste tekst in. Wanneer u klaar bent, ziet uw e-mailactie er ongeveer als volgt uit:
Sla uw werkstroom op.
Uw werkstroom testen
Uw werkstroom voor logische apps handmatig testen:
- Selecteer Uitvoeren op de werkbalk van de ontwerpfunctie in de optie Uitvoeren.
Nadat uw werkstroom wordt uitgevoerd, ontvangt u een e-mailbericht met de inhoud die u hebt opgegeven:
Eindeloze lussen voorkomen
De actie Until stopt de uitvoering op basis van de optionele parameters Aantal en Time-out . Zorg ervoor dat u deze parameterwaarden dienovereenkomstig instelt:
| Kenmerk | Beschrijving |
|---|---|
| Tellen | Het maximum aantal iteraties dat wordt uitgevoerd voordat de lus wordt afgesloten. Zie Gelijktijdigheids-, lus- en debatchinglimieten voor de standaard- en maximumlimieten voor het aantal acties die een werkstroom kan hebben. |
| Time-out | De maximale tijdsduur dat de actie Until , inclusief alle iteraties, wordt uitgevoerd voordat de lus wordt afgesloten. Deze waarde wordt opgegeven in ISO 8601-indeling en wordt geëvalueerd voor elke iteratie. Als een actie in de lus langer duurt dan de time-outlimiet, stopt de huidige iteratie niet. De volgende iteratie wordt echter niet gestart omdat aan de voorwaarde voor de time-outlimiet wordt voldaan. Zie Gelijktijdigheids-, lus- en debatchinglimieten voor de standaard- en maximumlimieten voor de time-outwaarde. |
'Until'-definitie (JSON)
Als u in de codeweergave werkt, kunt u een Until actie definiëren in de JSON-definitie van uw werkstroom, bijvoorbeeld:
"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"
]
}
}
}
In dit voorbeeld totdat een lus een HTTP-eindpunt aanroept, waarmee een resource wordt gemaakt. De lus stopt wanneer de hoofdtekst van het HTTP-antwoord wordt geretourneerd met Completed de status. Om eindeloze lussen te voorkomen, stopt de lus ook als een van de volgende omstandigheden plaatsvindt:
De lus is 10 keer uitgevoerd zoals opgegeven door het
countkenmerk. De standaardwaarde is 60 keer.De lus werd twee uur uitgevoerd zoals opgegeven door het
timeoutkenmerk in ISO 8601-indeling. De standaardwaarde is één uur.
"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": {}
}
}