usher
Version:
Simple DSL for composing decision workflows for AWS Simple Workflow
40 lines (30 loc) • 1.02 kB
JavaScript
var usher = require('usher'),
_ = require('lodash');
/**
* activity1
* |
* loop1 -> activity1 -> activity2 <-
* |
* activity3
*/
// Define fragment used for the loop
var loopBranch = usher.fragment('loop-fragment')
.activity('activity1')
.activity('activity2', ['activity1']);
// Define workflow
var loopWorkflow = usher.workflow('loop-workflow', 'your-domain-name');
loopWorkflow
.version('1.0.0')
// activity1 is the entry point
.activity('activity1')
// child1 workflow will execute once activity1 is complete
.loop('loop1', ['activity1'], loopBranch, function (input) {
return _.map(input.activity1, function (item) { return item.id; });
}, {
batchDelay: 1, // delay 1 second per batch
itemsPerBatch: 1 // process only 1 item per batch
})
// activity2 will execute once child1 workflow is complete
.activity('activity3', ['loop1']);
// Start polling for decision tasks
loopWorkflow.start();