Loop
Übersicht
Abschnitt betitelt „Übersicht“Die Operation Loop führt die Aktionen in Do einmal für jedes Element von Items aus, zum Beispiel für jede Zeile einer CSV-Datei oder jeden Eintrag einer API-Antwort.
Items |
Durchläufe | item |
|---|---|---|
eine Zahl, z. B. 5 |
5 | {{item.value}} = 1 … 5 |
Range(10,15) |
6 | {{item.value}} = 10 … 15 |
eine JSON-Liste, z. B. ["a","b"] oder {{Abfrage.Response.Body.items}} |
je Element | Objekte bleiben Objekte ({{item.id}}), einfache Werte stehen in {{item.value}} |
Pfad einer .json-Datei mit einer Liste |
je Element | wie oben |
Pfad einer .csv-Datei oder CSV-Text über mehrere Zeilen |
je Zeile | {{item.<Spaltenname>}} |
| irgendetwas anderes | 1 | {{item.value}} = der Text |
CSV: Trennzeichen ist ;, wenn die erste Zeile eines enthält, sonst ,. Die erste Zeile ist die Kopfzeile, außer eine ihrer Zellen ist eine ganze Zahl; ohne Kopfzeile heißen die Spalten col0, col1, … Werte in Anführungszeichen mit Trennzeichen darin werden nicht unterstützt.
Im Diagramm des Workflow-Editors hat Loop ein Formular: Elemente (Items, Werte wie oben; darin gelten {{item}} und {{index}}), Höchstens Durchläufe, Abbrechen nach Fehlern und Pause zwischen Durchläufen (ms). Werte ziehen Sie aus der Testansicht hinein.
Struktur
Abschnitt betitelt „Struktur“{ "Type": "Loop", "Name": "JedenKundenAnschreiben", "Parameters": { "Items": "C:\\RUNOS\\Daten\\kunden.csv", "Do": [ { "Type": "SMTP", "Name": "Anschreiben", "Parameters": { … } } ], "MaxLoopCount": 100, "BreakOnErrors": 3, "DelayMs": 1000 }}| Parameter | Standard | Bedeutung |
|---|---|---|
Items |
– | Was durchlaufen wird, siehe oben |
Do |
– | Aktionen je Durchlauf |
MaxLoopCount |
alle | Höchstens so viele Durchläufe |
BreakOnErrors |
unbegrenzt | Nach so vielen fehlgeschlagenen Durchläufen abbrechen; die Schleife endet dann als fehlgeschlagen |
DelayMs |
– | Pause nach jedem Durchlauf in Millisekunden |
| Platzhalter im Durchlauf | Inhalt |
|---|---|
{{item}} |
das aktuelle Element (immer ein Objekt) |
{{item.value}} |
der Wert bei einfachen Elementen |
{{index}} |
Position, beginnend bei 0 |
{{count}} |
Anzahl aller Elemente |
Das Ergebnis einer Aktion in Do steht unter ihrem Namen und wird bei jedem Durchlauf überschrieben; nach der Schleife enthält es den letzten Durchlauf. Verschachtelte Schleifen teilen sich item, index und count: In der inneren Schleife beziehen sie sich auf deren Element, nach der inneren Schleife wieder auf das der äußeren. Laufen zwei Schleifen gleichzeitig in zwei Zweigen eines Parallel, hat jede ihr eigenes item.
Ergebnis
Abschnitt betitelt „Ergebnis“"Response": { "Results": [ { … Ergebnis jeder Aktion jedes Durchlaufs … } ], "ExecutedCount": 12, "ErrorCount": 0, "StopReason": "Completed"}StopReason ist Completed, BreakOnErrors oder StopWorkflow (eine StopWorkflow-Aktion in Do hat Schleife und Lauf beendet).
Schlägt eine Aktion in Do fehl, werden die restlichen Aktionen dieses Durchlaufs übersprungen, und der Fehler wird mit der Nummer des Elements in Status.Errors und ErrorCount vermerkt. Die Schleife macht mit dem nächsten Element weiter, bis BreakOnErrors erreicht ist. Ein Lauf mit Fehlern in einzelnen Durchläufen erscheint in der Workflow-Liste rot.
Beispiel
Abschnitt betitelt „Beispiel“kunden.csv:
Name;Email;KundennummerMuster GmbH;info@muster.de;1001Beispiel AG;post@beispiel.de;1002{ "Type": "Loop", "Name": "JedenKundenAnschreiben", "Parameters": { "Items": "C:\\RUNOS\\Daten\\kunden.csv", "DelayMs": 1000, "BreakOnErrors": 3, "Do": [ { "Type": "SMTP", "Name": "Anschreiben", "Parameters": { "SmtpServer": "smtp.example.com", "SmtpUser": "{{connector.Mailserver.Username}}", "SmtpPassword": "{{connector.Mailserver.Password}}", "From": "service@example.com", "To": "{{item.Email}}", "Subject": "Ihre Kundennummer {{item.Kundennummer}}", "Body": "Guten Tag {{item.Name}},\n\nIhre Kundennummer lautet {{item.Kundennummer}}." } } ] }}