Tekekarape
A tiny workflow engine.
It is inspired by @hakobera's Let's create workflow engine! articles(part 1, part 2, part 3).
It uses files for status management.
USAGE
Let example.js:
var workflow = require("tekekarape/index.es5").default;
var tenNumbersTask = workflow.createTask({
output: "./numbers.txt",
run(output) {
var data = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n";
// Return a Promise.
return output.write(data);
}
});
var sumTask = workflow.createTask({
requires: tenNumbersTask,
output: "./sum.txt",
run(output, inputs) {
// inputs is an Array of input file paths.
var input = inputs[0];
return input.read()
.then(data => data.split("\n")
.map(Number)
.filter(Number.isFinite)
.reduce((sum, number) => sum + number))
.then(sum => output.write(sum));
}
});
workflow.run(sumTask, {verbose: true}).catch(error => {
console.error(error.stack);
process.exit(1);
});
% node example.js
[run]./numbers.txt
[run]./sum.txt
% cat numbers.txt
1
2
3
4
5
6
7
8
9
10
% cat sum.txt
55
If output files are exist already, tasks are skipped.
% node example.js
[skip]./numbers.txt
[skip]./sum.txt
LICENSE
LGPL-3.0