Files
Workflow/tasks/foreach_parallel.md

2.0 KiB

foreach_parallel — Parallele Multi-Instanz über eine Liste

Zweck: Führt die Kind-Tasks für JEDES Listenelement unabhängig aus — im Gegensatz zu loop_foreach blockiert ein wartendes Element nicht die übrigen. Optional mit Abschlussbedingung: Sind z. B. 80 % der Elemente fertig, werden die restlichen storniert.

Parameter

Name Pflicht? Default Beschreibung
items ja Quelle der Elemente: Kontext-Array, JSON-String oder CSV (wie loop_foreach)
as nein item Variablenname des aktuellen Elements
completion_condition nein Abbruchbedingung a op b (>=,<=,>,<,==,!=); Variablen {{fertig}}, {{gesamt}}
rest nein cancel Bei erfüllter Bedingung: cancel (Rest stornieren) oder weiter (Rest zu Ende laufen)
Kind-Tasks ja <task>-Elemente direkt im Element; je Listenelement eigener Zustand

Eingangswerte: Die Liste unter <items>; je Element {{<as>}}, {{<as>_index}} und bei Objekt-Elementen flache Felder {{<as>_feld}}.

Ausgangswerte:

  • <task_id>_fertig — Anzahl komplett abgeschlossener Elemente
  • <task_id>_gesamt — Gesamtanzahl
  • <task_id>_storniert — Anzahl stornierter Elemente (bei rest=cancel)
  • pro fertigem Element: <task_id>_<index>_<var> mit dessen Ergebnisvariablen

XML-Beispiel

<task type="foreach_parallel" id="stellungnahmen">
  <config>
    <items>{{empfaenger_json}}</items>
    <as>person</as>
    <completion_condition>{{fertig}} >= 3</completion_condition>
    <rest>cancel</rest>
  </config>
  <task type="webhook" id="fp_call"></task>
</task>

Hinweis (Engine-Grenze): Gedacht für automatische Kind-Tasks (webhook, email, PDF-Verarbeitung, signal_wait, wait_until …). Interaktive Formulare pro Element funktionieren nur eingeschränkt, weil die Engine pro Aufruf nur eine Formularseite ausliefern kann — für Mehrpersonen-Eingaben stattdessen quorum verwenden.