Zum Hauptinhalt springen

Iterator

Aktuelle Konfiguration des Tasks Iterator im Workflow Designer
  • Aufgabentyp: iterator

Der Task Iterator ist ein leistungsstarkes Automatisierungswerkzeug, das entwickelt wurde, um einen wiederholten Prozess über einen Datensatz auszuführen. Er nimmt einen Datensatz entgegen und startet für jede einzelne Zeile dieses Datensatzes einen „Kind“-Workflow.

Dies ermöglicht die Massenverarbeitung großer Datenmengen, indem die Werte jeder Zeile als Parameter an den Kind-Workflow übergeben werden. Es entspricht einer "for-each"-Schleife für Automatisierungsprozesse.

Voraussetzungen

Damit er ordnungsgemäß funktioniert, muss der Task Iterator einen der folgenden Tasks als Eingabe haben:

Konfiguration

Die Konfiguration der Aufgabe definiert, welchen Workflow auszuführen und wie Daten bei jeder Iteration übergeben werden.

  • Workflow filtern: Ermöglicht das Filtern der Liste der verfügbaren Workflows und erleichtert so die Auffindung derjenigen, die gestartet werden sollen.
  • Workflow iterieren: Wählen Sie im Menü den Namen des "Kind"-Workflows, der für jede Zeile des Datensatzes ausgeführt werden soll.
  • Bei erster fehlgeschlagener Iteration stoppen: Wenn dieses Kästchen aktiviert ist, stoppt der Iterator sofort, sobald eine der Ausführungen des Kind-Workflows fehlschlägt. Wenn es nicht aktiviert ist, versucht der Iterator, alle Iterationen abzuschließen, auch wenn einige davon fehlschlagen.

Konfiguration der Parameter

Dieser Abschnitt ermöglicht die Zuordnung von Daten aus dem Eingabedatensatz zu den Parametern des Kind-Workflows.

  • Parameter: Der Name des Parameters, wie er im Kind-Workflow definiert wurde (z. B. „department“).
  • Wert: Der Wert, der dem Parameter für die aktuelle Iteration zugewiesen werden soll.
  • Beispiel: #>JSON to Table.Dataset.department<# gibt an, dass für jede Zeile der Wert der Spalte name des vom Task JSON to Table erzeugten Datensatzes als Wert übergeben wird.
  • Typ: Der Datentyp des Parameters (z. B. String, Numeric usw.).

Praktisches Funktionsbeispiel

Konfiguration des Iterators

  1. Workflow Eltern (Datenvorbereitung):
  • Der Task Text importieren liest eine JSON-Datei, die eine Liste von Mitarbeitern enthält.
[
{
"name": "John",
"surname": "Smith",
"department": "Human Resources"
},
{
"name": "Emily",
"surname": "Johnson",
"department": "Finance"
},
{
"name": "Michael",
"surname": "Brown",
"department": "IT"
},
{
"name": "Sarah",
"surname": "Davis",
"department": "Marketing"
}
]
  • Anschließend führt die Aufgabe JSON zu Tabelle ihre Hauptfunktion aus: Sie verbindet sich mit einer Datenbank und schreibt die JSON-Daten in eine Tabelle. Das Ausführungslog bestätigt dies mit der Meldung „4 rows inserted into table“. Neben dem Schreiben in die Datenbank stellt die Aufgabe spezifische Ausgabe-Parameter bereit, die die verarbeiteten und in die Tabelle eingefügten Daten darstellen und deren Wiederverwendung in nachfolgenden Aufgaben des Workflows ermöglichen.
  1. Konfiguration und Aktion des Iterators:
  • Workflow zum Iterieren: ist auf „dev_iterator“ eingestellt.
  • Parameter: Der Kind-Workflow erwartet einen Parameter namens „department“.
  • Wert: Der Wert der Spalte „department“ des Datensatzes wird auf Parameter abgebildet: #>JSON to Table.Dataset.department<#.
  1. Ausführung von Iterationen: Der Iterator führt nun den Workflow „dev_iterator“ 4 Mal aus, einmal für jede Zeile (Abhängigkeit) des Datensatzes:
  • Erste Iteration: Starten Sie „dev_iterator“ und übergeben Sie den Parameter department = "Human Resources".
  • Zweite Iteration: Starten Sie „dev_iterator“ mit department = "Finance".
  • Dritte Iteration: Starten Sie „dev_iterator“ mit department = "IT".
  • Vierterer Durchlauf: Starten Sie “dev_iterator” mit department = "Marketing".
  1. Logik des Kind-Workflows (dev_iterator):
  • Bei jeder Ausführung bewertet der Task Conditional, der darin enthalten ist, den Wert des Parameters "department" und leitet den Workflow zum korrekten E-Mail-Versand-Task weiter. Für "IT" folgt, da keine spezifische Bedingung gefunden wird, der Pfad "Andernfalls".
  1. Endgültiges Ergebnis:
  • Es werden vier separate E-Mails gesendet, je eine für jeden im ursprünglichen JSON-File enthaltenen Mitarbeiter. Das Ausführungs-Log des Task Iterator bestätigt den Erfolg mit der Meldung: "All iterations completed successfully".

Parent Workflow

Child Workflow

Wichtiger Hinweis

  • Es können nur Workflows ausgeführt werden, die zum Zeitpunkt der Ausführung nicht in Bearbeitung blockiert sind.
  • Der Task Iterator wird nur mit dem Status "Success" enden, wenn alle Iterationen erfolgreich durchlaufen wurden (es sei denn, die Option "Stop at first failed iteration" ist aktiviert, in diesem Fall stoppt er beim ersten Fehler).

Ausgabe-Parameter

Am Ende aller seiner Iterationen gibt der Task Iterator eine Reihe von Ausgabe-Parameter aus. Diese Parameter sind äußerst nützlich für nachfolgende Tasks, beispielsweise für Protokollierungszwecke, zum Senden eines zusammenfassenden Berichts oder zur Implementierung einer bedingten Logik basierend auf dem Ergebnis des Zyklus.

  • targetWorkflow: Gibt den Namen oder die Kennung des "Kind"-Workflows zurück, der bei jeder Iteration ausgeführt wurde.
  • Dataset.Count: Gibt die Gesamtzahl der Zeilen im Eingabe-Dataset an.
  • Iterations.Total: Die Gesamtzahl der tatsächlich durchgeführten Iterationen. Bei einer normalen Ausführung entspricht dieser Wert Dataset.Count.
  • Iterations.Success: Der Zähler der erfolgreich abgeschlossenen Iterationen. Bei jeder erfolgreichen Beendigung der Ausführung des Kind-Workflows wird dieser Zähler erhöht.
  • Iterations.Failed: Der Zähler der fehlgeschlagenen Iterationen. Wird bei einer fehlerhaften Beendigung der Ausführung des Kind-Workflows erhöht.
  • result: Gibt den allgemeinen Status des Task Iterators selbst zurück. Zeigt normalerweise nur "Success", wenn alle Iterationen erfolgreich abgeschlossen wurden.
  • resultJson: Stellt das Ergebnis der Task-Ausführung im JSON-Format dar und enthält allgemeine Informationen, Konfigurationen und Details zur Ausführung.