# `Cyclium.Workflow`
[🔗](https://github.com/Cyclium/cyclium_ex/blob/main/lib/cyclium/workflow.ex#L1)

Macro for defining multi-actor workflows.

## Usage

    defmodule MyApp.Workflows.VendorOnboarding do
      use Cyclium.Workflow

      workflow do
        trigger {:event, "vendor.registration_submitted"}

        step :compliance_check,
          actor: MyApp.Actors.Compliance,
          expectation: :vendor_risk,
          input: fn trigger, _prior -> %{vendor_id: trigger["vendor_id"]} end

        step :connector_setup,
          actor: MyApp.Actors.Integration,
          expectation: :setup_connector,
          depends_on: [:compliance_check],
          input: fn trigger, prior ->
            %{vendor_id: trigger["vendor_id"], risk: prior.compliance_check.vendor_risk}
          end

        on_failure :compliance_check, :abort
        on_failure :connector_setup, :retry, max_step_attempts: 2, backoff_ms: 30_000
      end
    end

The generated module provides:
- `__workflow_config__/0` — returns `%Cyclium.Workflow.Config{}` with all step metadata
- `__workflow_step_input__/3` — dispatches `(step_id, trigger, prior)` to the input function

---

*Consult [api-reference.md](api-reference.md) for complete listing*
