Zum Hauptinhalt springen

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 Verkaufszeile oder Pro 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:

  1. 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 als total veröffentlicht.
  2. In jeder Iteration wird currentItem aus items[iteration - 1] befüllt und die an die For Each-Kante gehängten Schritte werden ausgeführt.
  3. Solange iteration < total, fordert der Schritt die Engine zur Wiederholung auf. Sobald iteration = 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.
  • currentItem lesen, nicht items[iteration]. currentItem berücksichtigt bereits den nullbasierten Index; ein direkter Zugriff über items[…] 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 break gibt 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.