|
1 | 1 | --- |
2 | | -title: Workflow |
| 2 | +title: Workflow-Block |
| 3 | +description: Führe einen anderen Workflow innerhalb des aktuellen Ablaufs aus |
3 | 4 | --- |
4 | 5 |
|
5 | 6 | import { Callout } from 'fumadocs-ui/components/callout' |
6 | | -import { Step, Steps } from 'fumadocs-ui/components/steps' |
7 | | -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' |
8 | 7 | import { Image } from '@/components/ui/image' |
9 | 8 |
|
10 | | -Der Workflow-Block ermöglicht es, andere Workflows als wiederverwendbare Komponenten innerhalb deines aktuellen Workflows auszuführen. Dies ermöglicht modulares Design, Codewiederverwendung und die Erstellung komplexer verschachtelter Workflows, die aus kleineren, fokussierten Workflows zusammengesetzt werden können. |
| 9 | +## Was er macht |
11 | 10 |
|
12 | | -<div className="flex justify-center my-6"> |
| 11 | +<div className='flex justify-center my-6'> |
13 | 12 | <Image |
14 | | - src="/static/blocks/workflow.png" |
15 | | - alt="Workflow-Block" |
| 13 | + src='/static/blocks/workflow.png' |
| 14 | + alt='Workflow-Block-Konfiguration' |
16 | 15 | width={400} |
17 | 16 | height={280} |
18 | | - className="rounded-xl border border-border shadow-sm" |
| 17 | + className='rounded-xl border border-border shadow-sm' |
19 | 18 | /> |
20 | 19 | </div> |
21 | 20 |
|
22 | | -<Callout type="info"> |
23 | | - Workflow-Blöcke ermöglichen modulares Design, indem sie es erlauben, komplexe Workflows aus kleineren, wiederverwendbaren Komponenten zusammenzusetzen. |
24 | | -</Callout> |
25 | | - |
26 | | -## Überblick |
27 | | - |
28 | | -Der Workflow-Block dient als Brücke zwischen Workflows und ermöglicht es dir: |
29 | | - |
30 | | -<Steps> |
31 | | - <Step> |
32 | | - <strong>Bestehende Workflows wiederzuverwenden</strong>: Führe zuvor erstellte Workflows als Komponenten innerhalb neuer Workflows aus |
33 | | - </Step> |
34 | | - <Step> |
35 | | - <strong>Modulare Designs zu erstellen</strong>: Zerlege komplexe Prozesse in kleinere, überschaubare Workflows |
36 | | - </Step> |
37 | | - <Step> |
38 | | - <strong>Trennung der Zuständigkeiten beizubehalten</strong>: Halte verschiedene Geschäftslogik in separaten Workflows isoliert |
39 | | - </Step> |
40 | | - <Step> |
41 | | - <strong>Teamzusammenarbeit zu ermöglichen</strong>: Teile und verwende Workflows über verschiedene Projekte und Teammitglieder hinweg wieder |
42 | | - </Step> |
43 | | -</Steps> |
44 | | - |
45 | | -## Funktionsweise |
46 | | - |
47 | | -Der Workflow-Block: |
| 21 | +Füge einen Workflow-Block hinzu, wenn du einen untergeordneten Workflow als Teil eines größeren Ablaufs aufrufen möchtest. Der Block führt die neueste bereitgestellte Version dieses Workflows aus, wartet auf dessen Abschluss und setzt dann mit dem übergeordneten Workflow fort. |
48 | 22 |
|
49 | | -1. Nimmt eine Referenz zu einem anderen Workflow in deinem Workspace |
50 | | -2. Übergibt Eingabedaten vom aktuellen Workflow an den untergeordneten Workflow (verfügbar über start.input) |
51 | | -3. Führt den untergeordneten Workflow in einem isolierten Kontext aus |
52 | | -4. Gibt das Ergebnis zur weiteren Verarbeitung an den übergeordneten Workflow zurück |
| 23 | +## Konfiguration |
53 | 24 |
|
54 | | -## Konfigurationsoptionen |
| 25 | +1. **Wähle einen Workflow** aus dem Dropdown-Menü (Selbstreferenzen sind blockiert, um Schleifen zu verhindern). |
| 26 | +2. **Eingaben zuordnen**: Wenn der untergeordnete Workflow einen Eingabeformular-Trigger hat, siehst du jedes Feld und kannst übergeordnete Variablen verbinden. Die zugeordneten Werte sind das, was der untergeordnete Workflow erhält. |
| 27 | +3. **Ausgaben**: Nach Abschluss des untergeordneten Workflows stellt der Block folgendes bereit: |
| 28 | + - `result` – die endgültige Antwort des untergeordneten Workflows |
| 29 | + - `success` – ob er ohne Fehler ausgeführt wurde |
| 30 | + - `error` – Nachricht, wenn die Ausführung fehlschlägt |
55 | 31 |
|
56 | | -### Workflow-Auswahl |
| 32 | +## Ausführungshinweise |
57 | 33 |
|
58 | | -Wähle aus einer Dropdown-Liste der verfügbaren Workflows in deinem Workspace aus, welcher Workflow ausgeführt werden soll. Die Liste umfasst: |
| 34 | +- Untergeordnete Workflows laufen im gleichen Workspace-Kontext, sodass Umgebungsvariablen und Tools übernommen werden. |
| 35 | +- Der Block verwendet Deployment-Versionierung: Jede API-, Zeitplan-, Webhook-, manuelle oder Chat-Ausführung ruft den bereitgestellten Snapshot auf. Stelle den untergeordneten Workflow neu bereit, wenn du ihn änderst. |
| 36 | +- Wenn der untergeordnete Workflow fehlschlägt, löst der Block einen Fehler aus, es sei denn, du behandelst ihn nachgelagert. |
59 | 37 |
|
60 | | -- Alle Workflows, auf die du im aktuellen Workspace Zugriff hast |
61 | | -- Workflows, die von anderen Teammitgliedern mit dir geteilt wurden |
62 | | -- Sowohl aktivierte als auch deaktivierte Workflows (obwohl nur aktivierte Workflows ausgeführt werden können) |
63 | | - |
64 | | -### Ausführungskontext |
65 | | - |
66 | | -Der untergeordnete Workflow wird ausgeführt mit: |
67 | | - |
68 | | -- Seinem eigenen isolierten Ausführungskontext |
69 | | -- Zugriff auf dieselben Workspace-Ressourcen (API-Schlüssel, Umgebungsvariablen) |
70 | | -- Korrekten Workspace-Mitgliedschafts- und Berechtigungsprüfungen |
71 | | -- Verschachteltem Tracespan im Ausführungsprotokoll |
72 | | - |
73 | | -<Callout type="warning"> |
74 | | - **Zykluserkennung**: Das System erkennt und verhindert automatisch zirkuläre Abhängigkeiten zwischen Workflows, um Endlosschleifen zu vermeiden. |
| 38 | +<Callout> |
| 39 | +Halte untergeordnete Workflows fokussiert. Kleine, wiederverwendbare Abläufe machen es einfacher, sie zu kombinieren, ohne tiefe Verschachtelungen zu erzeugen. |
75 | 40 | </Callout> |
76 | | - |
77 | | -## Eingaben und Ausgaben |
78 | | - |
79 | | -<Tabs items={['Configuration', 'Variables', 'Results']}> |
80 | | - <Tab> |
81 | | - <ul className="list-disc space-y-2 pl-6"> |
82 | | - <li> |
83 | | - <strong>Workflow-Auswahl</strong>: Wählen Sie aus, welcher Workflow ausgeführt werden soll |
84 | | - </li> |
85 | | - <li> |
86 | | - <strong>Eingabedaten</strong>: Variable oder Blockreferenz, die an den untergeordneten Workflow übergeben wird |
87 | | - </li> |
88 | | - <li> |
89 | | - <strong>Ausführungskontext</strong>: Isolierte Umgebung mit Workspace-Ressourcen |
90 | | - </li> |
91 | | - </ul> |
92 | | - </Tab> |
93 | | - <Tab> |
94 | | - <ul className="list-disc space-y-2 pl-6"> |
95 | | - <li> |
96 | | - <strong>workflow.success</strong>: Boolescher Wert, der den Abschlussstatus angibt |
97 | | - </li> |
98 | | - <li> |
99 | | - <strong>workflow.childWorkflowName</strong>: Name des ausgeführten untergeordneten Workflows |
100 | | - </li> |
101 | | - <li> |
102 | | - <strong>workflow.result</strong>: Vom untergeordneten Workflow zurückgegebenes Ergebnis |
103 | | - </li> |
104 | | - <li> |
105 | | - <strong>workflow.error</strong>: Fehlerdetails, falls der Workflow fehlgeschlagen ist |
106 | | - </li> |
107 | | - </ul> |
108 | | - </Tab> |
109 | | - <Tab> |
110 | | - <ul className="list-disc space-y-2 pl-6"> |
111 | | - <li> |
112 | | - <strong>Workflow-Antwort</strong>: Primäre Ausgabe des untergeordneten Workflows |
113 | | - </li> |
114 | | - <li> |
115 | | - <strong>Ausführungsstatus</strong>: Erfolgsstatus und Fehlerinformationen |
116 | | - </li> |
117 | | - <li> |
118 | | - <strong>Zugriff</strong>: Verfügbar in Blöcken nach dem Workflow |
119 | | - </li> |
120 | | - </ul> |
121 | | - </Tab> |
122 | | -</Tabs> |
123 | | - |
124 | | -## Beispielanwendungsfälle |
125 | | - |
126 | | -### Modulares Kunden-Onboarding |
127 | | - |
128 | | -<div className="mb-4 rounded-md border p-4"> |
129 | | - <h4 className="font-medium">Szenario: Komplexes Onboarding in wiederverwendbare Komponenten aufteilen</h4> |
130 | | - <ol className="list-decimal pl-5 text-sm"> |
131 | | - <li>Hauptworkflow empfängt Kundendaten</li> |
132 | | - <li>Workflow-Block führt Validierungs-Workflow aus</li> |
133 | | - <li>Workflow-Block führt Kontoeinrichtungs-Workflow aus</li> |
134 | | - <li>Workflow-Block führt Willkommens-E-Mail-Workflow aus</li> |
135 | | - </ol> |
136 | | -</div> |
137 | | - |
138 | | -### Microservice-Architektur |
139 | | - |
140 | | -<div className="mb-4 rounded-md border p-4"> |
141 | | - <h4 className="font-medium">Szenario: Unabhängige Service-Workflows erstellen</h4> |
142 | | - <ol className="list-decimal pl-5 text-sm"> |
143 | | - <li>Zahlungsabwicklungs-Workflow verarbeitet Transaktionen</li> |
144 | | - <li>Bestandsverwaltungs-Workflow aktualisiert den Lagerbestand</li> |
145 | | - <li>Benachrichtigungs-Workflow sendet Bestätigungen</li> |
146 | | - <li>Hauptworkflow orchestriert alle Dienste</li> |
147 | | - </ol> |
148 | | -</div> |
149 | | - |
150 | | -### Bedingte Verarbeitung |
151 | | - |
152 | | -<div className="mb-4 rounded-md border p-4"> |
153 | | - <h4 className="font-medium">Szenario: Führe verschiedene Workflows basierend auf Bedingungen aus</h4> |
154 | | - <ol className="list-decimal pl-5 text-sm"> |
155 | | - <li>Bedingungsblock bewertet den Benutzertyp</li> |
156 | | - <li>Enterprise-Benutzer → Komplexer Genehmigungsworkflow</li> |
157 | | - <li>Standard-Benutzer → Einfacher Genehmigungsworkflow</li> |
158 | | - <li>Kostenlose Benutzer → Grundlegender Verarbeitungsworkflow</li> |
159 | | - </ol> |
160 | | -</div> |
161 | | - |
162 | | -## Bewährte Praktiken |
163 | | - |
164 | | -- **Workflows fokussiert halten**: Gestalte untergeordnete Workflows für spezifische, klar definierte Aufgaben mit eindeutigen Ein- und Ausgaben |
165 | | -- **Verschachtelungstiefe minimieren**: Vermeide tief verschachtelte Workflow-Hierarchien für bessere Wartbarkeit und Leistung |
166 | | -- **Fehler elegant behandeln**: Implementiere eine ordnungsgemäße Fehlerbehandlung für Fehler in untergeordneten Workflows und stelle Fallback-Mechanismen bereit |
167 | | -- **Unabhängig testen**: Stelle sicher, dass untergeordnete Workflows unabhängig von übergeordneten Workflows getestet und validiert werden können |
168 | | -- **Semantische Benennung verwenden**: Gib Workflows beschreibende Namen, die ihren Zweck und ihre Funktionalität klar angeben |
0 commit comments