Moose Stack

Moose Workflows

Workflows

Viewing:

Overview

The Workflows capability 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.

Basic Usage

DataFlow.ts
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 (input: Foo) => {
    const greeting = `hello, ${input.name}!`;
    return {
      name: input.name,
      greeting,
      counter: 1
    };
  },
});
 
export const task2 = new Task<Bar, void>("task2", {
  run: async (input: Bar) => {
    console.log(`${input.greeting} (count: ${input.counter})`);
  },
});
 
export const myworkflow = new Workflow("myworkflow", {
  startingTask: task1
});

Enabling Workflows

To enable workflows, you need to add the workflows feature to your moose.config.toml file:

moose.config.toml
[features]
workflows = true

Core Capabilities

Definition

Define Workflows

Create workflow definitions with task sequences and data flow
Scheduling

Schedule Workflows

Set up recurring and scheduled workflow execution
Triggers

Trigger Workflows

Start workflows from events, APIs, or external triggers

Integration with Other Capabilities

While the Workflows capability works independently, it is designed to be used in conjunction with other MooseStack capabilities: