DesignMint
  • DesignMint Designer Docs
  • DesignMint Medusa Monorepo Setup
  • admin
    • integration-tests
      • Integration Tests
    • src
      • Admin Customizations
      • Custom API Routes
      • Custom scheduled jobs
      • Module Links
      • Custom Module
      • Custom CLI Script
      • Custom subscribers
      • Custom Workflows
  • storefront
  • DesignMint License Notice
Powered by GitBook
On this page
  1. admin
  2. src

Custom Workflows

PreviousCustom subscribersNextstorefront

Last updated 18 days ago

A workflow is a series of queries and actions that complete a task.

The workflow is created in a TypeScript or JavaScript file under the src/workflows directory.

Learn more about workflows in .

For example:

import {
  createStep,
  createWorkflow,
  WorkflowResponse,
  StepResponse,
} from "@medusajs/framework/workflows-sdk"

const step1 = createStep("step-1", async () => {
  return new StepResponse(`Hello from step one!`)
})

type WorkflowInput = {
  name: string
}

const step2 = createStep(
  "step-2",
  async ({ name }: WorkflowInput) => {
    return new StepResponse(`Hello ${name} from step two!`)
  }
)

type WorkflowOutput = {
  message1: string
  message2: string
}

const helloWorldWorkflow = createWorkflow(
  "hello-world",
  (input: WorkflowInput) => {
    const greeting1 = step1()
    const greeting2 = step2(input)
    
    return new WorkflowResponse({
      message1: greeting1,
      message2: greeting2
    })
  }
)

export default helloWorldWorkflow

Execute Workflow

You can execute the workflow from other resources, such as API routes, scheduled jobs, or subscribers.

For example, to execute the workflow in an API route:

import type {
  MedusaRequest,
  MedusaResponse,
} from "@medusajs/framework"
import myWorkflow from "../../../workflows/hello-world"

export async function GET(
  req: MedusaRequest,
  res: MedusaResponse
) {
  const { result } = await myWorkflow(req.scope)
    .run({
      input: {
        name: req.query.name as string,
      },
    })

  res.send(result)
}
this documentation