Skip to content

Repository files navigation

Statebox Logo

Tymly Packagenpm (scoped)CircleCIcodecovCodeFactorDependabot badgeCommitizen friendlyJavaScript Style Guidelicense

Orchestrate Node functions using Amazon States Language

Useful links

Install

$ npm install @wmfs/statebox --save

Usage

constStatebox=require('@wmfs/statebox')conststatebox=newStatebox({})constmain=asyncfunction(){// STEP 1:// Create some 'module' resources (i.e. Javascript// classes with 'run' and optional 'init' methods)// that state machines can then refer to...// -------------------------------------------------awaitstatebox.readystatebox.createModuleResources({// Simple module to add two numbers togetheradd: classAdd{run(event,context){context.sendTaskSuccess(event.number1+event.number2)}},// Simple module to subtract one number from anothersubtract: classSubtract{// Init methods are optional, but all allow// resource-instances to be configured...init(resourceConfig,env,callback){callback(null)}run(event,context){context.sendTaskSuccess(event.number1-event.number2)}}})// STEP 2:// Next create a new 'calculator' state// machine using Amazon States Language...// ---------------------------------------awaitstatebox.createStateMachines({'calculator': {Comment: 'A simple calculator',StartAt: 'OperatorChoice',States: {OperatorChoice: {Type: 'Choice',Choices: [{Variable: '$.operator',StringEquals: '+',Next: 'Add'},{Variable: '$.operator',StringEquals: '-',Next: 'Subtract'}]},Add: {Type: 'Task',InputPath: '$.numbers',Resource: 'module:add',// See createModuleResources()ResultPath: '$.result',End: true},Subtract: {Type: 'Task',InputPath: '$.numbers',Resource: 'module:subtract',ResultPath: '$.result',End: true}}}},{},// 'env': An environment/context/sandbox)// STEP 3:// Start a new execution on a state machine// ----------------------------------------constexecutionDescription=awaitstatebox.startExecution({numbers: {number1: 3,number2: 2},operator: '-'},// input'calculator',// state machine name{}// options)// STEP 4:// Look at the results...// ----------------------console.log(executionDescription)// Result object// -------------// {// executionName: '...',// ctx: {// numbers': {// number1: 3,// number2: 2// },// operator: '-',// result: 1 <--- The important bit :-)// },// currentStateName:'Subtract',// currentResource:'module:subtract',// stateMachineName:'calculator',// startDate: '2018-09-03T21:58:04.287Z'// }}if(require.main===module){main();}

Testing

$ npm test

License

MIT

About

Orchestrate workflows using Amazon States Language

Topics

Resources

Stars

45 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages