const subWorkflow1 = createWorkflow({
id: 's1',
inputSchema: z.any(),
outputSchema: z.any(),
})
.then(
createStep({
id: 's1s',
inputSchema: z.any(),
outputSchema: z.any(),
execute: async ctx => {
console.log('s1', ctx.state);
return;
},
})
)
.commit();
const subWorkflow2 = createWorkflow({
id: 's2',
inputSchema: z.any(),
outputSchema: z.any(),
})
.then(
createStep({
id: 's2s',
inputSchema: z.any(),
outputSchema: z.any(),
execute: async ctx => {
console.log('s2', ctx.state);
ctx.setState({...ctx.state, output: 2});
return;
},
})
)
.commit();
const routing = createWorkflow({
id: 'routing',
inputSchema: z.any(),
outputSchema: z.any(),
})
.branch([
[async s => s.inputData === 1, subWorkflow1],
[async s => s.inputData === 2, subWorkflow2],
])
.commit();
const workflows = createWorkflow({
id: 'root',
inputSchema: z.array(z.any()),
outputSchema: z.any(),
})
.foreach(routing)
.commit();
async function run() {
const run = await workflows.createRun();
run.start({inputData: [2, 1]});
}
run();
const subWorkflow1 = createWorkflow({
id: 's1',
inputSchema: z.any(),
outputSchema: z.any(),
})
.then(
createStep({
id: 's1s',
inputSchema: z.any(),
outputSchema: z.any(),
execute: async ctx => {
console.log('s1', ctx.state);
return;
},
})
)
.commit();
const subWorkflow2 = createWorkflow({
id: 's2',
inputSchema: z.any(),
outputSchema: z.any(),
})
.then(
createStep({
id: 's2s',
inputSchema: z.any(),
outputSchema: z.any(),
execute: async ctx => {
console.log('s2', ctx.state);
ctx.setState({...ctx.state, output: 2});
return;
},
})
)
.commit();
const routing = createWorkflow({
id: 'routing',
inputSchema: z.any(),
outputSchema: z.any(),
})
.branch([
[async s => s.inputData === 1, subWorkflow1],
[async s => s.inputData === 2, subWorkflow2],
])
.commit();
const workflows = createWorkflow({
id: 'root',
inputSchema: z.array(z.any()),
outputSchema: z.any(),
})
.foreach(routing)
.commit();
async function run() {
const run = await workflows.createRun();
run.start({inputData: [2, 1]});
}
run();