Nous.Workflow.Edge (nous v0.13.3)

View Source

A directed edge connecting two nodes in a workflow graph.

Edges define execution flow between nodes. They can be unconditional (sequential), conditional (evaluated against workflow state), or default (fallback when no conditional edge matches).

Edge Types

TypeBehavior
:sequentialAlways followed (A -> B)
:conditionalFollowed when condition.(state) returns true
:defaultFollowed when no sibling conditional edges match

Examples

Nous.Workflow.Edge.new(%{
  from_id: "search",
  to_id: "synthesize",
  type: :sequential
})

Nous.Workflow.Edge.new(%{
  from_id: "evaluate",
  to_id: "publish",
  type: :conditional,
  condition: fn state -> state.data.quality >= 0.8 end
})

Summary

Functions

Create a new workflow edge.

Types

edge_type()

@type edge_type() :: :sequential | :conditional | :default

t()

@type t() :: %Nous.Workflow.Edge{
  condition: (Nous.Workflow.State.t() -> boolean()) | nil,
  from_id: String.t(),
  id: String.t(),
  label: String.t() | nil,
  metadata: map(),
  to_id: String.t(),
  type: edge_type()
}

Functions

new(attrs)

@spec new(map()) :: t()

Create a new workflow edge.

Required: :from_id and :to_id.

Examples

iex> edge = Nous.Workflow.Edge.new(%{from_id: "a", to_id: "b"})
iex> edge.type
:sequential
iex> is_binary(edge.id)
true