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
endThe 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