async-workflow

1.2.0 • Public • Published

async-workflow

Run JSON based workflows

npm Travis branch

Example

const Bluebird = require('bluebird')
const Runner = require('async-workflow')
 
const runner = new Runner({
  startTaskId: 'clone',
  tasks: {
    clone: {
      fn(options) {
        return Bluebird.resolve('clone')
      },
      options: {
        repo: 'knownasilya/async-workflow'
      },
      successTaskId: 'install',
      failureTaskId: 'cleanup'
    },
 
    install: {
      // Run in parallel
      tasks: {
        installA: {
          fn() {
            return new Bluebird((resolve) => {
              setTimeout(() => {
                resolve('installA')
              }, 300)
            })
          }
        },
        installB: {
          fn() {
            return new Bluebird((resolve) => {
              setTimeout(() => {
                resolve('installB')
              }, 100)
            })
          }
        }
      },
      // Run once all pass or any fail
      successTaskId: 'test',
      failureTaskId: 'cleanup'
    },
 
    test: {
      fn() {
        return Bluebird.resolve('test')
      },
      successTaskId: 'deploy',
      failureTaskId: 'cleanup'
    },
 
    deploy: {
      fn() {
        return Bluebird.resolve('deploy')
      }
    },
 
    cleanup: {
      fn() {
        return Bluebird.resolve('cleanup')
      }
    }
  }
})
 
const results = await runner.start()

TODO

  • Test parallel tasks
  • Figure out how results should be formatted/passed along
  • Time tasks
  • docker shell run

Readme

Keywords

none

Package Sidebar

Install

npm i async-workflow

Weekly Downloads

1

Version

1.2.0

License

ISC

Last publish

Collaborators

  • knownasilya