usher
Version:
Simple DSL for composing decision workflows for AWS Simple Workflow
49 lines (34 loc) • 1.1 kB
JavaScript
/*!
* Usher
* Copyright(c) 2014 meltmedia <mike@meltmedia.com>
*/
;
var util = require('util'),
Task = require('./task'),
STATUS = require('./status');
module.exports = Activity;
function Activity(name, deps, options) {
if (!(this instanceof Activity)) {
return new Activity(name, deps, options);
}
Task.apply(this, Array.prototype.slice.call(arguments));
this.options = options || {};
}
util.inherits(Activity, Task);
Activity.prototype.execute = function execute(context, done) {
// Check to see if we ran and failed
if (context.didActivityFail(this)) {
return done(STATUS.mask('failed'));
}
// Check to see if we ran and completed
if (context.didActivityComplete(this)) {
context.addActivityResult(this);
return done(STATUS.mask('complete', 'resolved'));
}
// If we have been scheduled, and are not failed or completed, we must still be outstanding
if (context.isActivityOutstanding(this)) {
return done(STATUS.mask('outstanding'));
}
context.scheduleActivity(this);
return done(STATUS.mask('scheduled'));
};