aion/workflow
Workflow authoring surface.
This module is an aggregator only: it forwards declarations from the
workflow submodules and contains no workflow business logic. run is the
only recorded activity dispatch surface in this brief; deterministic time
and random values come from AD through aion/internal/ffi.
Types
pub type ChildHandle(output, workflow_error) =
child.ChildHandle(output, workflow_error)
pub type SignalRef(payload) =
signal.SignalRef(payload)
pub type TimerRef =
timer.TimerRef
pub type Timestamp =
run.Timestamp
pub type WorkflowDefinition(input, output, workflow_error) =
define.WorkflowDefinition(input, output, workflow_error)
Values
pub fn all(
activities: List(activity.Activity(input, output)),
) -> Result(List(output), error.ActivityError)
pub fn cancel_timer(
reference: timer.TimerRef,
) -> Result(Nil, error.EngineError)
pub fn continue_as_new(
input: a,
input_codec: codec.Codec(a),
) -> Result(Nil, error.WorkflowError)
pub fn define(
name: String,
input_codec: codec.Codec(input),
output_codec: codec.Codec(output),
error_codec: codec.Codec(workflow_error),
entry_fn: fn(input) -> Result(output, workflow_error),
) -> define.WorkflowDefinition(input, output, workflow_error)
pub fn entry_fn(
definition: define.WorkflowDefinition(
input,
output,
workflow_error,
),
) -> fn(input) -> Result(output, workflow_error)
pub fn error_codec(
definition: define.WorkflowDefinition(
input,
output,
workflow_error,
),
) -> codec.Codec(workflow_error)
pub fn input_codec(
definition: define.WorkflowDefinition(
input,
output,
workflow_error,
),
) -> codec.Codec(input)
pub fn map(
items: List(value),
to_activity: fn(value) -> activity.Activity(input, output),
) -> Result(List(output), error.ActivityError)
pub fn name(
definition: define.WorkflowDefinition(
input,
output,
workflow_error,
),
) -> String
pub fn now() -> Result(run.Timestamp, error.EngineError)
pub fn output_codec(
definition: define.WorkflowDefinition(
input,
output,
workflow_error,
),
) -> codec.Codec(output)
pub fn race(
activities: List(activity.Activity(input, output)),
) -> Result(output, error.ActivityError)
pub fn random() -> Result(Float, error.EngineError)
pub fn random_int(
min: Int,
max: Int,
) -> Result(Int, error.EngineError)
pub fn receive(
reference: signal.SignalRef(payload),
) -> Result(payload, error.ReceiveError)
pub fn run(
activity: activity.Activity(input, output),
) -> Result(output, error.ActivityError)
pub fn sleep(
duration: duration.Duration,
) -> Result(Nil, error.EngineError)
pub fn spawn(
name: String,
workflow_fn: fn(input) -> Result(output, workflow_error),
input: input,
input_codec: codec.Codec(input),
output_codec: codec.Codec(output),
error_codec: codec.Codec(workflow_error),
) -> Result(
child.ChildHandle(output, workflow_error),
error.EngineError,
)
pub fn spawn_and_wait(
name: String,
workflow_fn: fn(input) -> Result(output, workflow_error),
input: input,
input_codec: codec.Codec(input),
output_codec: codec.Codec(output),
error_codec: codec.Codec(workflow_error),
) -> Result(output, error.ChildError(workflow_error))
pub fn start_timer(
name: String,
duration: duration.Duration,
) -> Result(timer.TimerRef, error.EngineError)
pub fn timer_id(reference: timer.TimerRef) -> String
pub fn timestamp_to_milliseconds(timestamp: run.Timestamp) -> Int
pub fn with_timeout(
operation: fn() -> Result(value, inner_error),
deadline: duration.Duration,
) -> Result(value, error.TimeoutResultError(inner_error))