Mit Kindprozessen arbeiten

https://www.loom.com/share/08883fb2f3914073aafe1dd5e852793f

1. Einleitung

In Xentral Connect können Flows nicht nur einzeln ausgeführt, sondern auch miteinander verschachtelt werden. Das bedeutet: Ein Flow kann automatisch einen anderen starten – entweder direkt (synchron) oder über die Queue (asynchron). Diese Funktion ist besonders hilfreich, wenn du umfangreiche Prozesse modular aufbauen und wiederverwenden möchtest.


2. Warum Flows verschachteln?

Das Verschachteln von Flows ermöglicht:

  • Modularisierung: komplexe Abläufe in kleinere, wartbare Teilprozesse zerlegen

  • Wiederverwendung: Teilprozesse (z. B. Validierungen, Datenimporte, API-Aufrufe) mehrfach nutzen

  • Struktur und Übersicht: Hauptprozesse („Elternprozesse“) steuern ihre Unterprozesse („Kindprozesse“)

  • Parallelisierung oder Abhängigkeiten: Prozesse sequenziell oder parallel ausführen

Beispiel: Ein Hauptprozess ruft eine Bestellliste ab, iteriert über alle Einträge und startet für jede Bestellung einen Unterprozess zur Einzelverarbeitung.


3. Eltern- und Kind-Flows in Connect

In der Flow-Übersicht können Flows optisch verschachtelt dargestellt werden (siehe Flow gruppieren, verschieben, verschachteln). Diese Struktur dient zunächst nur der Übersicht, hat aber noch keine funktionale Verknüpfung. Damit ein Flow tatsächlich einen anderen ausführt, muss er über einen internen Trigger oder ein internes Event aufgerufen werden.


4. Variante 1: Interner Trigger

4.1 Zweck

Mit dem internen Trigger kann ein Flow direkt einen anderen starten. Die Ausführung erfolgt dabei in Echtzeit oder über die Queue, je nach Konfiguration.

4.2 Anwendung

1

Flow-Editor öffnen

Öffne den Flow-Editor deines Haupt-Flows (Elternprozess).

2

Interner Trigger hinzufügen

Füge aus der Komponentenbibliothek die Komponente „Interner Trigger“ hinzu.

3

Konfiguration öffnen

Öffne die Konfiguration der Komponente.

4

Ziel-Flow wählen

Wähle den Ziel-Flow (Kindprozess) aus. Der Ziel-Flow kann im gleichen oder in einem anderen Projekt liegen.

5

Synchron oder asynchron auswählen

Wähle aus, ob du den Flow synchron oder asynchron starten möchtest (“Sofortige Ausführung”):

  • Sofortige Ausführung (synchron): Der Elternprozess wartet auf die Ausführung des Kind-Flows. Das Ergebnis der Kind-Flows kann im Eltern-Flow weiterverarbeitet werden.

    • Nutze das Response Element im Kind-Flow, um die Daten zu definieren, die an den Elternprozess zurückgegeben werden sollten.

  • Asynchrone Ausführung: Die Iteration des Flows wird auf die Queue gelegt. Die Queue entscheidet (je nach Anzahl an Workern), wann der Flow ausgeführt wird. Der Elternprozess wartet nicht auf die Ausführung des Kind-Flows und hat keinen Zugriff auf das Ergebnis.

6

Parameter übergeben (optional)

Definiere Parameter, die an den Kindprozess übergeben werden sollen (z. B. id, name). Diese Parameter stehen im Kindprozess unter {{parameter.id}}, {{parameter.name}} usw. zur Verfügung.

7

Response-Variable definieren (optional)

Definiere unter Ausgabe > Ergebnis eine Response Variable, in die die Daten geschrieben werden, die vom Kind-Flow über das Response Element zurückgegeben werden.

4.3 Beispiel

Feld
Beschreibung
Beispielwert

Ziel-Flow

Flow, der aufgerufen werden soll

FlowTest2

Parameter

Werte, die übergeben werden

id = 1234, name = "Order_01"

Sofortige Ausführung

führt den Kindprozess ohne Queue-Verzögerung aus

✅ aktiviert


4.4 Erweiterte Steuerung: Wait-for-Children

Wenn der Elternprozess warten soll, bis der Kindprozess abgeschlossen ist, verwende den Operator „Wait-for-Children“.

1

Füge die Komponente Wait-for-Children nach dem internen Trigger ein.

2

Wähle, auf welchen Kindprozess gewartet werden soll.

3

Der Hauptprozess pausiert an dieser Stelle, bis der Kindprozess beendet wurde.

Anwendungsfall: Ein Hauptprozess ruft nacheinander Teilprozesse auf und soll erst fortfahren, wenn der vorherige vollständig abgeschlossen ist.

4.4.1 Abgrenzung zum synchronem Triggern

Das "Wait-for-Children"-Element wird verwendet, wenn ein übergeordneter Prozess (Elternprozess) einen untergeordneten Prozess (Kindprozess) asynchron startet. Vorteile gegenüber synchrone Triggerung:

  • Pausieren des Elternprozesses:

    • Wenn ein Kindprozess asynchron getriggert wird, pausiert das "Wait-for-Children"-Element den Elternprozess.

    • Der Elternprozess läuft erst dann weiter, wenn alle getriggerten Kindprozesse abgeschlossen sind.

    • Der Elternprozess blockiert die Ressourcen nicht aktiv, sondern ist technisch nur pausiert, bis die Kindprozesse ihre Arbeit beendet haben.

  • Vermeidung von Timeouts:

    • Diese Pause verhindert, dass der Elternprozess aufgrund der langen Ausführungszeit der Kindprozesse ein Timeout meldet und abbricht.

    • Das verbessert die Performance und Stabilität des Ablaufs.

  • Parallele Abarbeitung der Kind-Jobs:

    • Die Kindprozesse werden durch das asynchrone Triggern auf die Queue gelegt und können von mehreren Workern parallel abgearbeitet werden.

  • Warten auf Prozessketten:

    • Das Element erlaubt es dem Elternprozess, auf eine gesamte Kette von Prozessen zu warten, selbst wenn der ursprünglich gestartete Kindprozess weitere Prozesse triggert.


5. Variante 2: Internes Event

5.1 Zweck

Statt einen Flow direkt auszulösen, kannst du auch ein internes Event erzeugen, das von einem oder mehreren Flows verarbeitet wird. Damit lassen sich mehrere Folgeprozesse parallel starten.

5.2 Anwendung

1

Füge aus der Komponentenbibliothek den Operator „Event“ hinzu.

2

Definiere das Event als intern über das Topic “Internal”.

3

Wähle den Event-Typ aus einer vordefinierten Liste (z. B. New Sales Order).

4

Definiere optional Parameter, die mit dem Event übergeben werden.

5

In einem anderen Flow verwende den Trigger „Event Trigger“, um auf dieses Event zu reagieren.

5.3 Unterschiede zum internen Trigger

Merkmal
Interner Trigger
Event Trigger

Ausführung

Asynchron über Queue oder synchron (optional sofort)

Asynchron über Event-Bus

Zielanzahl

Ein einzelner Workflow

Beliebig viele Workflows

Parameterübergabe

Direkt

Über Event-Payload

Wartefunktion (Wait-for-Children)

Ja

Nein

Typischer Einsatz

Steuerungs- oder Prozessketten

Broadcast-Ereignisse (z. B. bei Statusänderungen)


7. Typische Anwendungsfälle

Szenario
Empfohlene Lösung

Verarbeitung von Datensätzen in Schleife

Interner Trigger pro Item

Prozesskette mit Abhängigkeiten

Interner asynchroner Trigger + Wait-for-Children

Ein Ereignis löst mehrere Prozesse aus

Event Trigger

Modularisierung großer Workflows

Elternprozess mit Kindprozessen

Echtzeit-Weitergabe von Daten

Interner Trigger mit Sofortausführung


Zuletzt aktualisiert

War das hilfreich?