workflow
is a Node JS library designed to facilitate the execution of simple workflows with
rollback support. This allows you to take small units of code and combine them together into
a larger workflow to accomplish a single large task.
See the documentation for more details.
npm install @sammarks/workflow
yarn add @sammarks/workflow
import { execute } from '@sammarks/workflow'
interface WorkflowContext {
firstStepRun: boolean
secondStepRun: boolean
test: string
}
const workflow = [
{
name: 'first',
run: async (context: WorkflowContext): Promise<void> => {
context.firstStepRun = true
},
revert: async (context: WorkflowContext): Promise<void> => {
context.firstStepRun = false
}
},
{
name: 'second',
run: async (context: WorkflowContext): Promise<void> => {
context.secondStepRun = true
},
revert: async (context: WorkflowContext): Promise<void> => {
context.secondStepRun = false
}
}
]
const result = await execute<WorkflowContext>('test-workflow', workflow, { test: 'foo' })
console.log(result)
// {
// firstStepRun: true,
// secondStepRun: true,
// test: 'foo'
// }
Breaking the large task into smaller units of code allows a less complicated end result, and greater unit testing abilities since each step in the workflow is broken into its own function.
Rollback support allows a transactional nature for executing workflows. If one step in the process fails to execute, all previously-executed steps with a configured rollback are executed.
workflow
provides TypeScript hinting and a predictable error interface to handle issues when they
arise.
Determines whether or not a step should be run.
A callback executed whenever running a step, or reverting it.
Executes a workflow.
the name of the workflow to execute
an array of steps used to define the workflow
the default context to pass to all steps
a promise resolving to the final context
Generated using TypeDoc
The context passed to all steps and their filter functions.