For-Each-Schleife
Verwende die For-Each-Schleife, um eine Folge von Aktionen einmal pro Element einer Sammlung zu wiederholen. Zeige mit dem Schritt auf ein SmartField, das entweder ein Array oder eine Datensatzreferenz-Menge auflöst – AutoFlow durchläuft die verbundenen Schritte je Element und stellt das aktuelle Element dem Schleifenrumpf bereit.
Typische Anwendungsfälle:
- Alle Zeilen eines Belegs verarbeiten. Über die zu einem Verkaufskopf verlinkten Zeilen iterieren und je Zeile einen Webhook senden.
- Ein JSON-Array abarbeiten. Nachdem ein Parser-Schritt einen Payload zerlegt hat, je Element einen Datensatz einfügen.
- Externe Aufrufe fächern. Eine Liste von Debitoren durchlaufen und je Debitor ein externes System aufrufen, mit der Antwort pro Iteration.
Schritt konfigurieren
Öffne den Flow-Editor, füge For-Each-Schleife hinzu und fülle die Konfigurationskarte aus.
Beschreibung
- Zweck: Die Absicht der Schleife auf einen Blick verständlich machen.
- Wann ausfüllen: Immer. Die Beschreibung wird im Editor und in der Ausführungshistorie angezeigt.
- Tipps: Benenne das, worüber iteriert wird, zum Beispiel
Pro VerkaufszeileoderPro Position im Payload.
Selektor
- Zweck: Ein SmartField-Selektor, der auf die zu durchlaufende Sammlung zeigt.
- Wann ausfüllen: Erforderlich. Der Selektor muss entweder ein SmartKit-Array (zum Beispiel die
items-Ausgabe eines Parser-Schrittes) oder eine Datensatzreferenz-Menge (zum Beispiel die Zeilen eines übergeordneten Datensatzes) auflösen. - Tipps: Nutze den SmartField-Picker (Assist-Edit) und füge den Platzhalter unverändert ein – der Selektor wird in der Standard-
{{name}}-Notation geschrieben, genauso wie jede andere SmartField-Eingabe.
Verhalten
Die For-Each-Schleife veröffentlicht folgende Ausgaben für nachfolgende Schritte:
total– die Anzahl der Elemente in der Sammlung, gesetzt in der ersten Iteration.iteration– der 1-basierte Index der aktuellen Iteration.items[i]– die vollständige Sammlung (nullbasiert), in der ersten Iteration eingefroren, damit sie über alle Iterationen stabil bleibt.currentItem– das Element der aktuellen Iteration. Bei einer Sammlung primitiver Werte ist es ein Wert, bei einer Sammlung von Datensätzen eine Datensatzreferenz.
Wenn der Schritt läuft:
- In der ersten Iteration wird der Selektor aufgelöst. Zeigt er auf eine Datensatzreferenz-Menge, lädt AutoFlow je
RecordId; zeigt er auf ein Wertearray, speichert AutoFlow die Werte direkt. In beiden Fällen wird die Anzahl alstotalveröffentlicht. - In jeder Iteration wird
currentItemausitems[iteration - 1]befüllt und die an die For Each-Kante gehängten Schritte werden ausgeführt. - Solange
iteration < total, fordert der Schritt die Engine zur Wiederholung auf. Sobalditeration = total, endet die Schleife und der Flow setzt mit den Schritten nach der For-Each-Schleife fort.
Löst der Selektor weder ein Array noch eine Referenz-Menge auf, bricht der Schritt mit Der angegebene Selektor '<Selektor>' verweist nicht auf ein Array oder eine iterierbare Referenz. ab und die Ausführung stoppt.
Best Practices
- Mengengerüst beschränken. Die Schleife führt jeden verbundenen Schritt einmal pro Element aus – bei einer Sammlung mit 10 000 Zeilen sind das 10 000 Schrittausführungen. Filtere die Quelle, bevor iteriert wird, statt im Schleifenrumpf.
currentItemlesen, nichtitems[iteration].currentItemberücksichtigt bereits den nullbasierten Index; ein direkter Zugriff überitems[…]ist fragiler und macht den Flow schwerer lesbar.- Quelle nicht im Rumpf verändern. Datensätze, über die du gerade iterierst, im Schleifenrumpf einzufügen, zu modifizieren oder zu löschen, kann Anzahl oder Reihenfolge der Iterationen verändern. Snapshotte zuerst, mutiere danach.
- Mit Entscheidung kombinieren für vorzeitigen Ausstieg. Ein natives
breakgibt es nicht – aber eine Entscheidung im Schleifenrumpf kann die Arbeit für eine Iteration kurzschließen; in Kombination mit einem Job-Queue-Cancel lässt sich die Schleife notfalls ganz abbrechen.