Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Azure Logic Apps (Verbrauch + Standard)
Um Aktionen in einem Logik-App-Workflow zu wiederholen, können Sie dem Workflow die For each-Schleife oder Until-Schleife basierend auf den Anforderungen für Ihr Szenario hinzufügen.
Hinweis
Suchen Sie nach Dokumentation zu Schleifen in Power Automate? Weitere Informationen finden Sie unter Verwenden von Schleifen.
Basierend auf Ihrem Anwendungsfall können Sie aus den folgenden Arten von Schleifenaktionen wählen:
Um eine oder mehrere Aktionen für Elemente in einem Array oder einer Sammlung zu wiederholen, fügen Sie Ihrem Workflow die For each-Aktion hinzu.
Wenn Sie über einen Trigger verfügen, der Arrays verarbeiten und eine Workflow-Instanz für jedes Arrayelement ausführen soll, können Sie das Array aufteilen, indem Sie die Trigger-Eigenschaft Split on festlegen.
Wenn Sie eine oder mehrere Aktionen wiederholen möchten, bis eine Bedingung erfüllt ist oder ein bestimmter Zustand geändert wird, fügen Sie die Aktion "Bis" zu Ihrem Workflow hinzu.
Ihr Workflow führt zuerst alle Aktionen innerhalb der Schleife aus und überprüft anschließend die Bedingung oder den Status. Wenn die Bedingung erfüllt ist, wird die Schleife beendet. Andernfalls wird die Schleife wiederholt. Informationen zu den Standard- und Maximalgrenzwerten für die Anzahl der Bis-Schleifen, die ein Workflow aufweisen kann, finden Sie unter Grenzwerte für Parallelität, Schleifen und Auflösen von Batches.
Voraussetzungen
Ein Azure-Konto und ein Azure-Abonnement. Falls Sie kein Abonnement besitzen, können Sie sich für ein kostenloses Azure-Konto registrieren.
Eine Logik-App-Ressource, in der Sie einen Workflow erstellen und bearbeiten können. Weitere Informationen finden Sie unter Was ist Azure Logic Apps.
Die Logik-App-Ressource und der Workflow, in dem Sie eine Aktion in einer Schleife wiederholen möchten, und einen Trigger, der den Workflow startet.
Bevor Sie eine Schleifenaktion hinzufügen können, muss der Workflow mit einem Trigger als ersten Schritt beginnen. Weitere Informationen finden Sie unter Hinzufügen eines Triggers oder einer Aktion zum Erstellen eines Workflows.
In den folgenden Schritte wird das Azure-Portal verwendet. Mit der entsprechenden Azure Logic Apps-Erweiterung können Sie aber auch die folgenden Tools verwenden, um Logik-App-Workflows zu erstellen:
- Verbrauchsworkflows: Visual Studio Code
- Standardworkflows: Visual Studio Code
Einige Schritte unterscheiden sich geringfügig, je nachdem, ob Sie über einen Verbrauchs- oder Standardworkflow verfügen.
Für jede
Die For each-Aktion funktioniert nur bei Arrays. Diese Schleife wiederholt eine oder mehrere Aktionen für jedes Element in einem Array. Überprüfen Sie die folgenden Überlegungen für die For each-Aktion:
Die For each-Aktion kann eine begrenzte Anzahl von Arrayelementen verarbeiten. Informationen zu diesem Grenzwert finden Sie unter Grenzwerte für Parallelität, Schleifen und Auflösen von Batches.
Standardmäßig werden die Zyklen oder Iterationen in einer For each-Aktion parallel ausgeführt.
Dieses Verhalten unterscheidet sich von der Apply to each-Schleife von Power Automate, bei der Iterationen einzeln bzw. nacheinander ausgeführt werden. Wenn Ihr Anwendungsfall eine sequenzielle Verarbeitung erfordert, können Sie For each-Iterationen für jeweils eine Ausführung einrichten. Wenn Sie beispielsweise die nächste Iteration in einer For each-Aktion mit der Verzögerungsaktion anhalten möchten, müssen Sie jede Iteration so einrichten, dass sie sequenziell ausgeführt wird.
Als Ausnahme des Standardverhaltens werden die Iterationen einer geschachtelten For each-Aktion immer sequenziell und nicht parallel ausgeführt. Zum gleichzeitigen Ausführen von Aktionen für Arrayelemente in einer geschachtelten For each-Aktion erstellen Sie einen untergeordneten Workflow und rufen diesen auf.
Führen Sie die Iterationen sequenziell aus, um vorhersehbare Ergebnisse von Vorgängen für Variablen während jeder Iteration zu erhalten. Wenn beispielsweise eine gleichzeitig ausgeführte Iteration endet, geben die Operationen Variablenwert erhöhen, Variablenwert verringern und Anfügen an Variable vorhersagbare Ergebnisse zurück. Bei jeder Iteration in der gleichzeitig laufenden Schleife können diese Vorgänge jedoch zu unvorhersehbaren Ergebnissen führen.
Aktionen in einer For each-Schleife verwenden die
item()-Funktion, um auf jedes Element im Array zu referenzieren und zu verarbeiten. Wenn Sie Daten angeben, die sich nicht in einem Array befinden, tritt beim Workflow ein Fehler auf.
Der folgende Beispielworkflow sendet eine tägliche Zusammenfassung für einen RSS-Feed einer Website. Der Workflow verwendet eine For each-Aktion, die eine E-Mail für jedes neue Element sendet.
Erstellen Sie im Azure-Portal einen Logik-App-Workflow mit den folgenden Schritten in der angegebenen Reihenfolge:
RSS-Trigger mit dem Namen Wenn ein Feedelement veröffentlicht wird
Führen Sie die folgenden allgemeinen Schritte aus, um einem Logik-App-Workflow Verbrauch oder Standard einen Trigger hinzuzufügen.
Outlook.com- oder Office 365 Outlook-Aktion mit dem Namen E-Mail senden
Führen Sie die folgenden allgemeinen Schritte aus, um einem Logik-App-Workflow Verbrauch oder Standard eine Aktion hinzuzufügen.
Führen Sie die gleichen allgemeinen Schritte aus, um die For each-Aktion zwischen dem RSS-Trigger und der Aktion Send an email in Ihrem Workflow hinzuzufügen.
Erstellen Sie nun die Schleife:
Wählen Sie im For each-Element das FeldAusgabe aus vorherigen Schritten auswählen und dann das Blitzsymbol aus.
Wählen Sie in der daraufhin geöffneten Liste dynamischer Inhalte unter Wenn ein Feedelement veröffentlicht wird die OptionFeedlinks aus, bei der es sich um eine Arrayausgabe des RSS-Triggers handelt.
Hinweis
Wenn die Ausgabe Feedlinks nicht angezeigt wird, wählen Sie neben der Bezeichnung für den Triggerabschnitt Mehr anzeigen aus. In der Liste der dynamischen Inhalte können Sie nur Ausgaben von vorherigen Schritten auswählen.
Wenn Sie fertig sind, wird die ausgewählte Arrayausgabe wie im folgenden Beispiel angezeigt:
Um eine vorhandene Aktion für jedes Arrayelement auszuführen, ziehen Sie die Aktion E-Mail senden in die For each-Schleife.
Jetzt sieht Ihr Workflow wie im folgenden Beispiel aus:
Wenn Sie fertig sind, speichern Sie Ihren Workflow.
Um Ihren Workflow manuell zu testen, wählen Sie auf der Designersymbolleiste Ausführen>Ausführen aus.
For each-Aktionsdefinition (JSON)
Wenn Sie in der Codeansicht arbeiten, können Sie die For_each-Aktion in der JSON-Definition Ihres Workflows definieren, z. B.:
"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: Sequenziell ausführen
Standardmäßig werden die Iterationen in einer For each-Aktion gleichzeitig parallel ausgeführt. Wenn Sie jedoch geschachtelte Schleifen verwenden oder Variablen innerhalb von Schleifen haben, in denen sie vorhersagbare Ergebnisse erwarten, müssen Sie diese Schleifen jeweils einzeln ausführen.
Wählen Sie im Designer die Aktion For each aus, um den Informationsbereich zu öffnen, und wählen Sie dann Einstellungen aus.
Ändern Sie unter Parallelitätssteuerung die Einstellung von Aus in Ein.
Verschieben Sie den Schieberegler für den Grad der Parallelität auf 1.
For each-Aktionsdefinition (JSON): Sequenziell ausführen
Wenn Sie in der Codeansicht mit der For_each-Aktion in der JSON-Definition Ihres Workflows arbeiten, fügen Sie den Parameter operationOptions hinzu, und legen Sie den Parameterwert auf Sequential fest:
"actions": {
"For_each": {
"actions": {
"Send_an_email_(V2)": { }
},
"foreach": "@triggerBody()?['links']",
"runAfter": {},
"type": "Foreach",
"operationOptions": "Sequential"
}
}
Until
Die Bis-Aktion wird ausgeführt und wiederholt eine oder mehrere Aktionen, bis die erforderliche angegebene Bedingung erfüllt ist. Wenn die Bedingung erfüllt ist, wird die Schleife beendet. Andernfalls wird die Schleife wiederholt. Informationen zu den Standard- und Maximalgrenzwerten für die Anzahl der Until-Aktionen oder Iterationen finden Sie unter Grenzwerte für Parallelität, Schleifen und Auflösen von Batches.
Die folgende Liste enthält einige häufige Szenarien, in denen Sie eine Bis-Aktion verwenden können:
Rufen Sie einen Endpunkt auf, bis Sie die gewünschte Antwort erhalten.
Erstellen Sie einen Datensatz in der Datenbank. Warten Sie, bis ein bestimmtes Feld in diesem Datensatz genehmigt wird. Setzen Sie die Verarbeitung fort.
Standardmäßig ist die Aktion Until erfolgreich oder schlägt auf folgende Weisen fehl:
Die "Until "-Schleife ist erfolgreich, wenn alle Aktionen innerhalb der Schleife erfolgreich ausgeführt werden und der Schleifengrenzwert erreicht ist, basierend auf dem Verhalten nach der Ausführung.
Wenn alle Aktionen in der letzten Iteration der Until-Schleife erfolgreich ausgeführt werden, wird die gesamte Until-Schleife als erfolgreich markiert.
Wenn eine Aktion in der letzten Iteration der Until-Schleife fehlschlägt, wird die gesamte Until-Schleife als fehlgeschlagen markiert.
Wenn eine Aktion in einer anderen Iteration als der letzten Iteration fehlschlägt, wird die nächste Iteration weiterhin ausgeführt, und die gesamte Aktion Until wird nicht als Fehler markiert.
Wenn die Aktion fehlschlägt, ändern Sie stattdessen das Standardverhalten in der JSON-Definition der Schleife, indem Sie den Parameter namens
operationOptionshinzufügen und den Wert z. B. aufFailWhenLimitsReachedfestlegen:"Until": { "actions": { "Execute_stored_procedure": { <...> } }, "expression": "@equals(variables('myUntilStop'), true)", "limit": { "count": 5, "timeout": "PT1H" }, "operationOptions": "FailWhenLimitsReached", "runAfter": { "Initialize_variable_8": [ "Succeeded" ] }, "type": "Until" }
Im folgenden Beispielworkflow ab 08:00 Uhr pro Tag erhöht die Bis-Aktion eine Variable, bis ihr Wert gleich 10 ist. Der Workflow sendet dann eine E-Mail, die den aktuellen Wert bestätigt. Im Beispiel wird Office 365 Outlook verwendet, Sie können jedoch jeden E-Mail-Anbieter verwenden, den Azure Logic Apps unterstützt. Wenn Sie ein anderes E-Mail-Konto verwenden, bleiben die allgemeinen Schritte gleich, sehen aber etwas anders aus.
Erstellen Sie im Azure-Portal eine Logik-App-Ressource und einen leeren Workflow. Weitere Informationen finden Sie im vorherigen Verfahren.
Führen Sie im Designer die allgemeinen Schritte aus, um Ihrem Verbrauch- oder Standard-Workflow den integrierten Zeitplan-Trigger namens Serie hinzuzufügen.
Geben Sie im Trigger Serie das Intervall, die Häufigkeit und die Uhrzeit für das Auslösen des Triggers an.
Parameter Wert Intervall 1 Frequenz Day Zu diesen Stunden 8 Zu diesen Minuten 00 Zu diesen Stunden und Zu diesen Minuten werden nach dem Festlegen von Häufigkeit auf Tag angezeigt.
Wenn Sie fertig sind, sieht der Trigger Wiederholung wie im folgenden Beispiel aus:
Führen Sie unter dem Trigger die folgenden allgemeinen Schritte aus, um Ihrem Logik-App-Workflow Verbrauch oder Standard die integrierte Variables-Aktion namens Initialize variables hinzuzufügen.
Geben Sie in der Aktion Initialize variables die folgenden Werte an:
Parameter Wert BESCHREIBUNG Name Begrenzung Name Ihrer Variablen Typ Integer Datentyp Ihrer Variablen Wert 0 Startwert Ihrer Variablen Führen Sie unter der Aktion Initialize variables die folgenden allgemeinen Schritte aus, um Ihrem Logik-App-Workflow Verbrauch oder Standard die integrierte Control-Aktion namens Until hinzuzufügen.
Geben Sie in der Bis-Aktion die folgenden Werte an, um die Stoppbedingung für die Schleife einzurichten.
Wählen Sie im Feld Loop Until das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.
Wählen Sie in der Liste unter Variablen die Variable mit dem Namen Limit aus.
Geben Sie unter Count den Wert 10 als Vergleichswert ein.
Wählen Sie in der Until-Aktion die Option +>Add an action aus.
Führen Sie die folgenden allgemeinen Schritte aus, um die integrierte Variables-Aktion namens Increment variable der Aktion Until in Ihrem Logik-App-Workflow Verbrauch oder Standard hinzuzufügen.
Geben Sie in der Aktion Variablenwert erhöhen die folgenden Werte an, um den Wert der Variable Limit um 1 zu erhöhen:
Parameter Wert Begrenzung Wählen Sie die Variable Limit aus. Wert 1 Führen Sie außerhalb und unter der Aktion Until die folgenden allgemeinen Schritte aus, um eine Aktion hinzuzufügen, die E-Mails in Ihrem Logik-App-Workflow Verbrauch oder Standard sendet.
In diesem Beispiel wird als Nächstes die Office 365 Outlook-Aktion mit dem Namen E-Mail senden verwendet.
Geben Sie in der E-Mail-Aktion die folgenden Werte an:
Parameter Wert BESCHREIBUNG An < E-Mail-Adress@Domäne> Die E-Mail-Adresse des Empfängers. Geben Sie zum Testen Ihre eigene E-Mail-Adresse an. Subject Der aktuelle Wert für die Variable „Limit“ ist:Limit Der E-Mail-Betreff. Stellen Sie für dieses Beispiel sicher, dass Sie die Variable Limit einschließen, um zu bestätigen, dass der aktuelle Wert die angegebene Bedingung erfüllt:
1. Wählen Sie darin das Feld Betreff aus, und wählen Sie dann das Blitzsymbol aus.
2. Wählen Sie in der daraufhin geöffneten dynamischen Inhaltsliste neben der Abschnittsüberschrift Variablen die Option Weitere Informationen aus.
3. Wählen Sie Limit aus.Text < E-Mail-Inhalt> Der Inhalt der E-Mail-Nachricht, die Sie senden möchten. Geben Sie in diesem Beispiel den gewünschten Text ein. Wenn Sie fertig sind, ähnelt Ihre E-Mail-Aktion dem folgenden Beispiel:
Speichern Sie den Workflow.
Testen des Workflows
So testen Sie den Logik-App-Workflow manuell:
- Wählen Sie in der Designersymbolleiste in der Option Ausführen die Option Ausführen aus.
Wenn Ihr Workflow ausgeführt wird, erhalten Sie eine E-Mail mit dem angegebenen Inhalt:
Verhindern von Endlosschleifen
Die Aktion Until beendet die Ausführung basierend auf den optionalen Parametern Anzahl und Timeout. Stellen Sie sicher, dass Sie diese Parameterwerte entsprechend festlegen:
| Parameter | BESCHREIBUNG |
|---|---|
| Zählen | Die maximale Anzahl von Iterationen, die ausgeführt werden, bevor die Schleife beendet wird. Informationen zu den Standard- und Höchstwerten für die Anzahl von Bis-Aktionen in einem Workflow finden Sie unter Grenzwerte für Parallelität, Schleifen und Auflösen von Batches. |
| Timeout | Die maximale Zeit, die die Bis-Aktion einschließlich aller Iterationen ausgeführt wird, bevor die Schleife beendet wird. Dieser Wert wird im ISO 8601-Format angegeben und für jede Iteration ausgewertet. Wenn eine Aktion in der Schleife länger als das Timeout dauert, wird die aktuelle Iteration nicht beendet. Die nächste Iteration beginnt jedoch nicht, da die Timeoutbedingung nicht erfüllt ist. Informationen zu den Standard- und Höchstwerten für den Timeout-Wert finden Sie unter Grenzwerte für Parallelität, Schleifen und Auflösen von Batches. |
„Until“-Definition (JSON)
Wenn Sie in der Codeansicht arbeiten, können Sie eine Until-Aktion in der JSON-Definition Ihres Workflows definieren, z. B.:
"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"
]
}
}
}
Diese beispielhafte Bis-Schleife ruft einen HTTP-Endpunkt auf, der eine Ressource erzeugt. Die Schleife wird angehalten, wenn der HTTP-Antworttext mit dem Status Completed zurückgegeben wird. Um Endlosschleifen zu verhindern, wird die Schleife auch beendet, wenn eine der folgenden Bedingungen erfüllt ist:
Die Schleife wurde gemäß
count-Attribut 10-mal ausgeführt. Der Standardwert ist 60-mal.Die Schleife wurde gemäß
timeout-Attribut im ISO 8601-Format zwei Stunden ausgeführt. Der Standardwert ist eine Stunde.
"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": {}
}
}