← Cloudflare Workflows / workflows / get-started
Vytvoření prvního Workflow
Workflows umožňují vytvářet odolné vícekrokové aplikace na platformě Workers. Workflow dokáže automaticky opakovat neúspěšné kroky, ukládat stav, běžet hodiny až dny a koordinovat komunikaci mezi API třetích stran.
Workflows můžete použít k následnému zpracování souborů nahraných do Objektové úložiště R2, automatizovat generování Workers AI embeddingy do Vectorize vektorovou databázi nebo k odesílání lifecycle e-mailů uživatelům pomocí Email Service.
V tomto průvodci vytvoříte a nasadíte Workflow, který načte data, pozastaví se a zpracuje výsledky.
Rychlý start
Pokud chcete kroky přeskočit a stáhnout kompletní Workflow, který v tomto průvodci vytváříme, spusťte:
npm create cloudflare@latest workflows-starter -- --template "cloudflare/workflows-starter"Tuto možnost použijte, pokud znáte Cloudflare Workers nebo chcete nejprve prozkoumat kód a podrobnosti se dozvědět později.
Podle následujících kroků se naučíte, jak vytvořit Workflow od začátku.
Předpoklady
- Zaregistrujte si účet Cloudflare ↗.
- Nainstalujte
Node.js↗.
Správce verzí Node.js
Použijte správce verzí Node, jako je Volta ↗ nebo nvm ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler, o kterém se dozvíte dále v této příručce, vyžaduje verzi Node 16.17.0 nebo novější.
1. Vytvořte nový projekt Worker
-
Otevřete terminál a spusťte
create cloudflare(C3), nástroj CLI pro vytvoření vašeho projektu Worker:npm create cloudflare@latest -- my-workflowPři nastavení vyberte následující možnosti:
- Pro S čím byste chtěli začít?, vyberte
Hello World example. - Pro Jakou šablonu chcete použít?, vyberte
Worker only. - Pro Jaký jazyk chcete použít?, vyberte
TypeScript. - Pro Chcete používat git pro správu verzí?, vyberte
Yes. - Pro Chcete nasadit svou aplikaci?, vyberte
No(před nasazením provedeme ještě několik změn).
- Pro S čím byste chtěli začít?, vyberte
-
Přejděte do adresáře nového projektu:
cd my-workflowJaké soubory C3 vytvořil?
Ve složce projektu C3 vygeneruje následující:
wrangler.jsonc: Váš Konfigurační soubor Wrangler.src/index.ts: Minimální Worker napsaný v TypeScriptu.package.json: Minimální konfigurační soubor závislostí Node.tsconfig.json: Konfigurace TypeScriptu.
2. Napište svůj Workflow
-
Vytvořte nový soubor
src/workflow.ts:src/workflow.tsimport { WorkflowEntrypoint, WorkflowStep } from "cloudflare:workers"; import type { WorkflowEvent } from "cloudflare:workers"; type Params = { name?: string }; type IPResponse = { result: { ipv4_cidrs: string[] } }; export class MyWorkflow extends WorkflowEntrypoint<Env, Params> { async run(event: WorkflowEvent<Params>, step: WorkflowStep) { const data = await step.do("fetch data", async () => { const response = await fetch( "https://api.cloudflare.com/client/v4/ips", ); return await response.json<IPResponse>(); }); await step.sleep("pause", "20 seconds"); const result = await step.do( "process data", { retries: { limit: 3, delay: "5 seconds", backoff: "linear" } }, async () => { return { name: event.payload.name ?? "World", ipCount: data.result.ipv4_cidrs.length, }; }, ); return result; } }Workflow rozšiřuje
WorkflowEntrypointa implementujerunmetoda. Tento kód také předává nášParamsjako parametr typu aby byly události, které spouštějí náš Workflow, typované.stepobjekt je jádrem API Workflows. Poskytuje metody pro definování trvalých kroků ve vašem Workflow:step.do(name, callback)- Provede kód a trvale uloží výsledek. Pokud je Workflow přerušen nebo opakován, pokračuje od posledního úspěšného kroku místo toho, aby znovu prováděl již dokončenou práci. Callback vrací serializovatelná data, včetněReadableStream<Uint8Array>pro velké binární výstupy v JavaScript Workflows.step.sleep(name, duration)- Pozastaví Workflow na danou dobu (například"10 seconds","1 hour").
Pokud vracíte stream, vraťte nový, neuzamčený
ReadableStream<Uint8Array>. Streamy BYOB ani čtečky BYOB nejsou podporovány.Můžete předat konfigurace opakování na
step.do()pro přizpůsobení způsobu zpracování selhání. Více informací najdete v úplné step API pro požadavky na streamy, limity a další metody, jako jesleepUntilawaitForEvent.Při rozhodování, zda kód rozdělit do samostatných kroků, si položte otázku: „Chci, aby se celý tento kód spustil znovu, pokud selže jen jeho část?“ Samostatné kroky se hodí zejména pro operace jako volání externích API, dotazování databází nebo čtení souborů z úložiště. Pokud pozdější krok selže, může váš Workflow pokračovat od tohoto místa s již načtenými daty, čímž se vyhne zbytečným API voláním nebo databázovým dotazům.
Další pokyny k definování logiky Workflow najdete v Pravidla pro Workflows.
3. Nakonfigurujte svůj Workflow
-
Otevřete
wrangler.jsonc, což je váš Konfigurační soubor Wrangler pro váš projekt Workers a váš Workflow a přidejteworkflowskonfigurace:{ "$schema": "node_modules/wrangler/config-schema.json", "name": "my-workflow", "main": "src/index.ts", // Set this to today's date "compatibility_date": "2026-08-28", "observability": { "enabled": true }, "workflows": [ { "name": "my-workflow", "binding": "MY_WORKFLOW", "class_name": "MyWorkflow" } ] }"$schema" = "node_modules/wrangler/config-schema.json" name = "my-workflow" main = "src/index.ts" # Set this to today's date compatibility_date = "2026-08-28" [observability] enabled = true [[workflows]] name = "my-workflow" binding = "MY_WORKFLOW" class_name = "MyWorkflow"class_namemusí odpovídat vaší exportované třídě abindingje název proměnné, kterou používáte pro přístup k Workflow ve svém kódu (napříkladenv.MY_WORKFLOW).Pokud chcete, aby se stejný Workflow spouštěl automaticky v pravidelném intervalu, přidejte
schedulesdo definice Workflow:{ "$schema": "node_modules/wrangler/config-schema.json", "name": "my-workflow", "main": "src/index.ts", // Set this to today's date "compatibility_date": "2026-08-28", "workflows": [ { "name": "my-workflow", "binding": "MY_WORKFLOW", "class_name": "MyWorkflow", "schedules": ["0 * * * *"] } ] }"$schema" = "node_modules/wrangler/config-schema.json" name = "my-workflow" main = "src/index.ts" # Set this to today's date compatibility_date = "2026-08-28" [[workflows]] name = "my-workflow" binding = "MY_WORKFLOW" class_name = "MyWorkflow" schedules = [ "0 * * * *" ]Každý odpovídající cron výraz automaticky vytvoří novou instanci Workflow, takže na nejvyšší úrovni nepotřebujete
triggers.cronsa samostatnýscheduledhandler pro opakované spouštění specifické pro Workflow.Naplánované instance obsahují odpovídající cron výraz a naplánovaný čas spuštění na
event.schedule.Při konfiguraci plánů Workflow používejte nejnovější verzi Wrangleru. Pokud vaše místní schéma Wrangleru nerozpoznává
schedulesještě nemáte, před nasazením aktualizujte Wrangler.Přistupovat můžete také k vazby (například KV, R2, nebo D1) přes
this.envve vašem Workflow. Další informace o bindings ve Workers najdete v Bindings (env). -
Nyní vygenerujte typy pro své bindingy:
npx wrangler typesTím se vytvoří
worker-configuration.d.tssoubor pomocíEnvtyp, který obsahuje vašeMY_WORKFLOWbinding.
4. Napište své API
Nyní budete potřebovat místo, odkud svůj Workflow zavoláte.
-
Nahraďte
src/index.tss obslužná rutina fetch ke spouštění instancí Workflow a kontrole jejich stavu:src/index.tsexport { MyWorkflow } from "./workflow"; export default { async fetch(request: Request, env: Env): Promise<Response> { const url = new URL(request.url); const instanceId = url.searchParams.get("instanceId"); if (instanceId) { const instance = await env.MY_WORKFLOW.get(instanceId); return Response.json(await instance.status()); } const instance = await env.MY_WORKFLOW.create(); return Response.json({ instanceId: instance.id }); }, } satisfies ExportedHandler<Env>;
5. Vyvíjejte lokálně
-
Spusťte místní vývojový server:
npx wrangler dev -
Chcete-li spustit instanci Workflow, otevřete nové okno terminálu a spusťte:
curl http://localhost:8787instanceIdse vygeneruje automaticky:{ "instanceId": "abc-123-def" } -
Zkontrolujte stav pomocí vráceného
instanceId:curl "http://localhost:8787?instanceId=abc-123-def"Workflow projde svými kroky. Po přibližně 20 sekundách (doba spánku) se dokončí.
6. Nasaďte svůj Workflow
-
Nasaďte svůj Workflow:
npx wrangler deployV produkci testujte pomocí stejných příkazů curl vůči nasazené URL. Můžete také aktivovat instanci workflow v produkci pomocí Workers, Wrangler nebo dashboardu Cloudflare.
Po nasazení můžete instance Workflow zkontrolovat také pomocí CLI:
npx wrangler workflows instances describe my-workflow latestVýstup
instances describezobrazuje:- Stav (success, failure, running) každého kroku
- Stav, který krok vygeneruje. U streamovaného výstupu zobrazí CLI místo celého obsahu jen náhled nebo souhrn.
- Jakýkoli
sleepstavu, včetně informace o tom, kdy se Workflow probudí - Opakování přiřazená ke každému kroku
- Chyby, včetně chybových zpráv výjimek