Workflow

class Workflow(name: String, val edges: List<Edge> = emptyList(), description: String = "", val maxConcurrency: Int? = null, rerunOnResume: Boolean = true, waitForOutput: Boolean = false, config: NodeConfig = NodeConfig(), inputSchema: Schema? = null, outputSchema: Schema? = null, stateSchema: Schema? = null) : BaseNode

A graph of nodes, and a Node itself, so graphs nest: a workflow drops into another workflow wherever an ordinary node goes.

Running it schedules nodes as their predecessors complete, so independent branches run concurrently and a chain runs in order. The graph is assembled and validated when the workflow is constructed, so a malformed graph throws GraphValidationException here rather than at run time.

Constructors

Link copied to clipboard
constructor(name: String, edges: List<Edge> = emptyList(), description: String = "", maxConcurrency: Int? = null, rerunOnResume: Boolean = true, waitForOutput: Boolean = false, config: NodeConfig = NodeConfig(), inputSchema: Schema? = null, outputSchema: Schema? = null, stateSchema: Schema? = null)

Types

Link copied to clipboard
class Builder

Fluent builder for Workflow, provided primarily for Java callers. Any property left unset falls back to the same default as the constructor.

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
open override val config: NodeConfig

The node's retry policy and execution timeout.

Link copied to clipboard
open override val description: String

What the node does, for humans and for a model that may call it.

Link copied to clipboard

The edges of the graph, which edges or the workflow DSL can declare. A workflow with no edges runs nothing and produces nothing.

Link copied to clipboard
open override val inputSchema: Schema?

Checks the input as JSON; the node receives the checked value unless it takes a Content. An edge fails to build when the predecessor's output schema admits values this one rejects; what that schema leaves open (no type, undeclared keys, undescribed ARRAY items) is checked at run time.

Link copied to clipboard

The most nodes to run at once. Null does not limit.

Link copied to clipboard
override val name: String

Identifies the node within its graph.

Link copied to clipboard
open override val outputSchema: Schema?

Validates the output value the node emits with the same rules, and the checked value is the output. A value set with Context.setOutput and a message-as-output event's content are not checked.

Link copied to clipboard
open override val requiresAllPredecessors: Boolean

Whether the node runs only once every predecessor has completed, receiving all their outputs keyed by node name. A fan-in node overrides this to true.

Link copied to clipboard
open override val rerunOnResume: Boolean

On resume, whether to run the node again from scratch rather than completing it with the resuming answer as its output.

Link copied to clipboard
open override val stateSchema: Schema?

Declares the state keys the node uses. Child nodes inherit it unless they declare their own.

Link copied to clipboard
open override val waitForOutput: Boolean

Whether the node stays re-triggerable until it produces an output or a route, instead of completing when runNode returns. A node that never produces either then waits forever, which is a graph-authoring error.

Functions

Link copied to clipboard
fun run(context: Context, nodeInput: Any?): Flow<Event>

Runs the node and normalizes each raw emission of runNode into an Event: null and Unit are skipped, a RequestInput becomes an adk_request_input interrupt event, an Event keeps its content and has its output validated, and any other value becomes the output.

Link copied to clipboard
open override fun runNode(context: Context, nodeInput: Any?): Flow<Any?>

The user-facing implementation of the node's execution logic.