Thanks to visit codestin.com
Credit goes to developers.llamaindex.ai

Skip to content

Branching

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);