WorkflowStem.Adapters.EventSink behaviour (workflow_stem v0.3.0)

Copy Markdown View Source

Host adapter for execution event persistence and live publication.

Events carry an opaque :metadata map so hosts can thread metering, provenance, and other policy context without changing the shared runner contract.

Summary

Types

event()

@type event() :: %{
  :execution_id => WorkflowStem.Types.execution_id(),
  :kind => atom(),
  optional(:payload) => map(),
  optional(:metadata) => map(),
  optional(:seq) => non_neg_integer(),
  optional(:at) => DateTime.t()
}

Callbacks

append_event(tenant_id, event)

@callback append_event(WorkflowStem.Types.tenant_id(), event()) ::
  {:ok, event()} | {:error, term()}

publish_event(event)

@callback publish_event(event()) :: :ok

replay(tenant_id, execution_id, keyword)

@callback replay(
  WorkflowStem.Types.tenant_id(),
  WorkflowStem.Types.execution_id(),
  keyword()
) ::
  {:ok, [event()]} | {:error, term()}