Cyclium.Workflow (Cyclium v0.2.0)

Copy Markdown View Source

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