Skip to content

Branching

Details about branching in workflows

Branching in Workflows is the concept of one handler emitting multiple possible event types.

In the most simple form, you might have a workflow that has different handlers for different input types.

import {
createWorkflow,
workflowEvent,
} from "@llamaindex/workflow-core";
const workflow = createWorkflow();
const inputEvent = workflowEvent<string | number>();
const processStringEvent = workflowEvent<string>();
const processNumberEvent = workflowEvent<number>();
const successEvent = workflowEvent<string>();
workflow.handle([inputEvent], async (context, event) => {
if (typeof event.data === "string") {
return processStringEvent.with(event.data);
} else {
return processNumberEvent.with(event.data);
}
});
workflow.handle([processStringEvent], async (context, event) => {
return successEvent.with(`Processed string ${event.data}`);
});
workflow.handle([processNumberEvent], async (context, event) => {
return successEvent.with(`Processed number ${event.data}`);
});
let context1 = workflow.createContext();
context1.sendEvent(inputEvent.with("I am some data"));
const result = await context1.stream.until(successEvent).toArray();
console.log(result.at(-1)!.data);
let context2 = workflow.createContext();
context2.sendEvent(inputEvent.with(1));
const result2 = await context2.stream.until(successEvent).toArray();
console.log(result2.at(-1)!.data);
Note for AI agents: this documentation is built for programmatic access. - Overview of all docs: https://developers.llamaindex.ai/llms.txt - Any page is available as raw Markdown by appending index.md to its URL — e.g. https://developers.llamaindex.ai/llamaparse/parse/getting_started/index.md - Agent-friendly REST search APIs live under https://developers.llamaindex.ai/api/ — search (BM25 full-text), grep (regex), read (fetch a page), and list (browse the doc tree). See https://developers.llamaindex.ai/llms.txt for parameters. - A hosted documentation MCP server is available at https://developers.llamaindex.ai/mcp. If you support MCP, you can ask the user to install it for browsing these docs directly (an alternative to the REST API). Setup: https://developers.llamaindex.ai/python/shared/mcp/