- Get Started
- Product
- Resources
- Tools & SDKs
- Framework
- Reference
- Get Started
- Product
- Resources
- Tools & SDKs
- Framework
- Reference
4.8.13. Multiple Step Usage in Workflow
In this chapter, you'll learn how to use a step multiple times in a workflow.
Problem Reusing a Step in a Workflow#
In some cases, you may need to use a step multiple times in the same workflow.
The most common example is using the useQueryGraphStep
multiple times in a workflow to retrieve multiple unrelated data, such as customers and products.
Each workflow step must have a unique ID, which is the ID passed as a first parameter when creating the step:
This causes an error when you use the same step multiple times in a workflow, as it's registered in the workflow as two steps having the same ID:
1const helloWorkflow = createWorkflow(2 "hello",3 () => {4 const { data: products } = useQueryGraphStep({5 entity: "product",6 fields: ["id"]7 })8 9 // ERROR OCCURS HERE: A STEP HAS THE SAME ID AS ANOTHER IN THE WORKFLOW10 const { data: customers } = useQueryGraphStep({11 entity: "customer",12 fields: ["id"]13 })14 }15)
The next section explains how to fix this issue to use the same step multiple times in a workflow.
How to Use a Step Multiple Times in a Workflow?#
When you execute a step in a workflow, you can chain a config
method to it to change the step's config.
Use the config
method to change a step's ID for a single execution.
So, this is the correct way to write the example above:
1const helloWorkflow = createWorkflow(2 "hello",3 () => {4 const { data: products } = useQueryGraphStep({5 entity: "product",6 fields: ["id"]7 })8 9 // ✓ No error occurs, the step has a different ID.10 const { data: customers } = useQueryGraphStep({11 entity: "customer",12 fields: ["id"]13 }).config({ name: "fetch-customers" })14 }15)
The config
method accepts an object with a name
property. Its value is a new ID of the step to use for this execution only.
The first useQueryGraphStep
usage has the ID use-query-graph
, and the second useQueryGraphStep
usage has the ID fetch-customers
.