Jido.Messaging.Onboarding.StateMachine (Jido Messaging v1.0.0)

Copy Markdown View Source

Deterministic onboarding state transitions with persisted idempotency.

Summary

Functions

Returns valid transitions for a status.

Apply a validated transition to a flow.

Types

transition()

@type transition() :: :resolve_directory | :pair_identity | :complete | :cancel

transition_result()

@type transition_result() :: %{
  :onboarding_id => String.t(),
  :transition => transition(),
  :previous_status => atom(),
  :status => atom(),
  :idempotent => boolean(),
  :classification => :ok,
  optional(:completion_metadata) => map() | nil
}

Functions

allowed_transitions(status)

@spec allowed_transitions(atom()) :: [transition()]

Returns valid transitions for a status.

transition(flow, transition, metadata, opts \\ [])

@spec transition(Jido.Messaging.Onboarding.Flow.t(), transition(), map(), keyword()) ::
  {:ok, Jido.Messaging.Onboarding.Flow.t(), transition_result()}
  | {:error,
     {:invalid_transition,
      %{
        from: atom(),
        transition: transition(),
        allowed: [transition()],
        class: :fatal
      }}}

Apply a validated transition to a flow.