Jidoka.Workflow.Scheduler (Jidoka v0.9.0)

Copy Markdown View Source

OTP scheduler that creates normal Jidoka.Workflow.Background runs.

The scheduler owns schedule definitions, timers, and trigger history. Use an application supervisor for lifecycle ownership. Set auto_schedule: false in deterministic tests and call trigger_due/2 with an explicit time.

Summary

Functions

Adds one validated schedule.

Cancels future triggers and applies the declared active-run policy.

Returns a child specification for a named workflow scheduler.

Returns one schedule by ID.

Returns trigger history for one schedule in chronological order.

Lists all schedules in stable ID order.

Starts a scheduler for one named background workflow runner.

Triggers one schedule immediately while applying overlap and retry policy.

Triggers every due schedule at an explicit time.

Types

server()

@type server() :: GenServer.server()

Functions

add(server, attrs)

@spec add(server(), keyword() | map()) ::
  {:ok, Jidoka.Workflow.Schedule.t()} | {:error, term()}

Adds one validated schedule.

cancel(server, schedule_id)

@spec cancel(server(), String.t()) ::
  {:ok, Jidoka.Workflow.Schedule.t()} | {:error, :not_found}

Cancels future triggers and applies the declared active-run policy.

child_spec(init_arg)

@spec child_spec(keyword()) :: Supervisor.child_spec()

Returns a child specification for a named workflow scheduler.

get(server, schedule_id)

@spec get(server(), String.t()) ::
  {:ok, Jidoka.Workflow.Schedule.t()} | {:error, :not_found}

Returns one schedule by ID.

history(server, schedule_id)

Returns trigger history for one schedule in chronological order.

list(server)

@spec list(server()) :: [Jidoka.Workflow.Schedule.t()]

Lists all schedules in stable ID order.

start_link(opts)

@spec start_link(keyword()) :: GenServer.on_start()

Starts a scheduler for one named background workflow runner.

trigger(server, schedule_id, now \\ nil)

@spec trigger(server(), String.t(), DateTime.t() | nil) ::
  {:ok, Jidoka.Workflow.Schedule.Trigger.t()} | {:error, term()}

Triggers one schedule immediately while applying overlap and retry policy.

trigger_due(server, now \\ nil)

@spec trigger_due(server(), DateTime.t() | nil) :: [
  Jidoka.Workflow.Schedule.Trigger.t()
]

Triggers every due schedule at an explicit time.