The Workflows module provides standalone task orchestration and automation. You can use this capability independently to build ETL pipelines, run scheduled jobs, trigger background tasks, and manage long-running tasks without requiring other MooseStack components like databases or streams.
Ensure your Workflow and Task is correctly exported from your app/index.ts file.
Example: export { myworkflow, task1, task2 }
Learn more about export pattern: local development / hosted.
import { Task, Workflow } from "@514labs/moose-lib"; export interface Foo { name: string;} export interface Bar { name: string; greeting: string; counter: number;} export const task1 = new Task<Foo, Bar>("task1", { run: async (ctx) => { const greeting = `hello, ${ctx.input.name}!`; return { name: ctx.input.name, greeting, counter: 1 }; },}); export const task2 = new Task<Bar, void>("task2", { run: async (ctx) => { console.log(`${ctx.input.greeting} (count: ${ctx.input.counter})`); },}); export const myworkflow = new Workflow("myworkflow", { startingTask: task1});To enable workflows, you need to add the workflows feature to your moose.config.toml file:
[features]workflows = trueWhile the Workflows capability works independently, it is designed to be used in conjunction with other MooseStack capabilities: