- Get Started
- Product
- Resources
- Tools & SDKs
- Framework
- Reference
- Get Started
- Product
- Resources
- Tools & SDKs
- Framework
- Reference
5.8.2. Conditions in Workflows with When-Then
In this chapter, you'll learn how to execute an action based on a condition in a workflow using the when-then utility.
Why If-Conditions Aren't Allowed in Workflows?#
Medusa creates an internal representation of the workflow definition you pass to createWorkflow
to track and store its steps.
At that point, variables in the workflow don't have any values. They only do when you execute the workflow.
So, you can't use an if-condition that checks a variable's value, as the condition will be evaluated when Medusa creates the internal representation of the workflow, rather than during execution.
Instead, use the when-then utility.
What is the When-Then Utility?#
The when-then utility functions execute an action if a condition is satisfied.
The when
function accepts as a parameter a function that returns a boolean value, and the then
function is chained to when
. then
accepts as a parameter a function that's executed if when
's parameter function returns a true
value.
For example:
1import { 2 createWorkflow,3 WorkflowResponse,4 when,5} from "@medusajs/framework/workflows-sdk"6// step imports...7 8const workflow = createWorkflow(9 "workflow", 10 function (input: {11 is_active: boolean12 }) {13 14 const result = when(15 input, 16 (input) => {17 return input.is_active18 }19 ).then(() => {20 const stepResult = isActiveStep()21 return stepResult22 })23 24 // executed without condition25 const anotherStepResult = anotherStep(result)26 27 return new WorkflowResponse(28 anotherStepResult29 )30 }31)
In this code snippet, you execute the isActiveStep
only if the input.is_active
's value is true
.
When Parameters#
when
utility is a function imported from @medusajs/framework/workflows-sdk
. It accepts the following parameters:
- The first parameter is either an object or the workflow's input. This data is passed as a parameter to the function in
when
's second parameter. - The second parameter is a function that returns a boolean indicating whether to execute the action in
then
.
Then Parameters#
To specify the action to perform if the condition is satisfied, chain a then
function to when
and pass it a callback function.
The callback function is only executed if when
's second parameter function returns a true
value.