Installation
Install the hkit CLI and apply migrations to your Postgres database
curl -sSfL https://releases.usehelical.com/install.sh | sh
Apply migrations to your Postgres instance
hkit migrate --databaseUrl postgresql://postgres:postgres@localhost:5432/postgres
Install the @usehelical/workflows npm package to use it in your project
pnpm add @usehelical/workflows
Defining a workflow
Define a workflow by using the defineWorkflow function and execute steps by using the runStep function. It is important that the steps you run are idempotent to ensure correct and reliable execution of your workflow.
import { defineWorkflow, runStep } from '@usehelical/workflows/workflows'
export const checkoutWorkflow = defineWorkflow(async (id: string) => {
await runStep(async () => {
await decrementInventory()
})
await runStep(async () => {
await createOrder(id)
})
)
Creating an executor
Create an executor by using the createInstance function registering the workflows it can run. And connecting it to the previously setup Postgres database.
import { createInstance } from '@usehelical/workflows'
export const helical = createInstance({
workflows: {
checkoutWorkflow
},
options: {
connectionString: process.env.DATABASE_URL
}
})
Starting a workflow
Pass the workflow to the runWorkflow function and pass the arguments to the workflow as an array. The waitForResult function will await the workflow completion.
const { id, getStatus, waitForResult } = await helical.runWorkflow(checkoutWorkflow, [id])
const { success, data, error } = await waitForResult()