Getting started

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()
Updated on