Tutorial: Floxide, an easy distributed workflow engine¶
Floxide is a workflow engine for Rust designed to make building and running distributed task sequences easy. Think of it like a digital assembly line where different steps (Nodes) can run on different computers. It uses a central WorkQueue to assign tasks to Workers and Checkpointing to recover from failures, making your workflows scalable and fault-tolerant. An Orchestrator manages starting, stopping, and monitoring these distributed runs.
Source Repository: None
flowchart TD
A0["Node Trait & node! Macro"]
A1["Workflow Trait & workflow! Macro"]
A2["Transition Enum"]
A3["WorkflowCtx & Context Trait"]
A4["Checkpoint & CheckpointStore Trait"]
A5["WorkQueue Trait"]
A6["DistributedWorker"]
A7["DistributedOrchestrator"]
A8["Distributed Stores (RunInfoStore, MetricsStore, ErrorStore, LivenessStore, WorkItemStateStore)"]
A9["RetryPolicy & RetryNode"]
A1 -- "Contains / Defines Flow Bet..." --> A0
A0 -- "Returns Outcome As" --> A2
A0 -- "Uses Shared Context" --> A3
A9 -- "Wraps Node For Retries" --> A0
A1 -- "Uses Workflow Context" --> A3
A1 -- "Uses For Distributed State" --> A4
A1 -- "Uses For Distributed Steps" --> A5
A6 -- "Executes Workflow Step" --> A1
A6 -- "Dequeues/Enqueues Work Items" --> A5
A6 -- "Loads/Saves Checkpoints" --> A4
A6 -- "Updates Run State/Metrics" --> A8
A7 -- "Starts Distributed Run" --> A1
A7 -- "Manages Run via Queue" --> A5
A7 -- "Manages Run via Checkpoints" --> A4
A7 -- "Queries Run State/Metrics" --> A8
A1 -- "Applies Retry Policy (via m..." --> A9
A9 -- "Uses Context for Delay" --> A3
Chapters¶
Transition
EnumNode
Trait &node!
MacroWorkflowCtx
&Context
TraitWorkflow
Trait &workflow!
MacroWorkQueue
TraitCheckpoint
&CheckpointStore
TraitDistributedWorker
DistributedOrchestrator
- Distributed Stores (
RunInfoStore
,MetricsStore
,ErrorStore
,LivenessStore
,WorkItemStateStore
) RetryPolicy
&RetryNode