Dapr Workflow brings durable execution to distributed applications. Long-running processes — multi-step orchestrations, sagas, approval flows, data pipelines, and agent plans — survive crashes, restarts, and network failures because every step is checkpointed to state storage. Write workflows as ordinary code in Go, Python, .NET, Java, or JavaScript, and let Dapr handle the hard parts: retries, timers, fan-out/fan-in, and compensation.
Define workflows as regular functions in your language of choice. Dapr turns them into durable executions automatically — no DSL, no state machine editor, no separate workflow engine to learn. Your existing testing tools and IDE work unchanged.
Declare retry policies, timeouts, and compensation steps in code. Dapr handles transient failures, exponential backoff, and saga rollback. When a workflow can't recover, you get a clear failure path, not a hung job.
Pause workflows waiting for approvals, webhook callbacks, or events from other services. Dapr parks the execution in state storage and resumes instantly when the signal arrives — even weeks later, even after the host restarts.
There's no separate workflow server to deploy, patch, or scale. Dapr Workflow runs inside the same sidecar as the rest of your Dapr APIs, using your existing state store (Redis, Postgres, Cosmos DB, and more) as the durable backend.
Call service invocation, pub/sub, state, bindings, actors, and AI agents directly from workflow activities. The entire Dapr building-block surface is compatible with Dapr workflow, with the same security and observability guarantees.
Every workflow instance, activity, and retry is traced with OpenTelemetry. Inspect running workflows, replay history, and debug failures using standard tracing backends — Jaeger, Zipkin, Grafana Tempo, Application Insights, and more.