16 neue Task-Typen dokumentiert (S+M-Ausbau), README-Index erweitert, SQL-Migrationen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# `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**
|
||||
|
||||
```xml
|
||||
<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.
|
||||
Reference in New Issue
Block a user