processus
Version:
A simple node workflow engine
339 lines (336 loc) • 8.96 kB
JavaScript
db["workflow-definitions"].insert({
"name": "Demo1",
"description": "A demo showing 3 tasks in series.",
"tasks":{
"task 1": {
"description": "I am the task 1, I take 1500msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1500,
"error": false
}
},
"task 2": {
"description": "I am the task 2, I take 1000msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
}
},
"task 3": {
"description": "I am the task 3, I take 500msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 500,
"error": false
}
}
}
});
db["workflow-definitions"].insert({
"name": "Demo2",
"description": "A demo showing 3 tasks in parallel.",
"tasks":{
"task 1": {
"description": "I am the task 1, I take 1500msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1500,
"error": false
}
},
"task 2": {
"description": "I am the task 2, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
}
},
"task 3": {
"description": "I am the task 3, I take 500msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 500,
"error": false
}
}
}
});
db["workflow-definitions"].insert({
"name": "Demo3",
"description": "A demo showing nested tasks in series.",
"tasks":{
"task 1": {
"description": "I am the task 1, I take 1500msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1500,
"error": false
}
},
"task 2": {
"description": "I am the task 2, I take 1000msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
},
"tasks": {
"task 2-1": {
"description": "I am the task 2-1, I take 1000msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
}
},
"task 2-2": {
"description": "I am the task 2-2, I take 1000msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
}
}
}
},
"task 3": {
"description": "I am the task 3, I take 500msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 500,
"error": false
}
}
}
}
);
db["workflow-definitions"].insert({
"name": "Demo3a",
"description": "A demo showing multi nested tasks in parallel.",
"tasks":{
"task 1": {
"description": "I am the task 1, I take 1500msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
}
},
"task 2": {
"description": "I am the task 2, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
},
"tasks": {
"task 2-1": {
"description": "I am the task 2-1, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
},
"tasks": {
"task 2-1-1": {
"description": "I am the task 2-1-1, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
}
},
"task 2-1-2": {
"description": "I am the task 2-1-2, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
},
"tasks": {
"task 2-1-2-1": {
"description": "I am the task 2-1-2-1, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
}
},
"task 2-1-2-2": {
"description": "I am the task 2-1-2-2, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
}
}
}
}
}
},
"task 2-2": {
"description": "I am the task 2-2, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
}
}
}
},
"task 3": {
"description": "I am the task 3, I take 500msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1,
"error": false
}
}
}
}
);
db["workflow-definitions"].insert({
"name": "Demo4",
"description": "A demo showing nested tasks in parallel.",
"tasks":{
"task 1": {
"description": "I am the task 1, I take 1500msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1500,
"error": false
}
},
"task 2": {
"description": "I am the task 2, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
},
"tasks": {
"task 2-1": {
"description": "I am the task 2-1, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
}
},
"task 2-2": {
"description": "I am the task 2-2, I take 1000msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
}
}
}
},
"task 3": {
"description": "I am the task 3, I take 500msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 500,
"error": false
}
}
}
}
);
db["workflow-definitions"].insert({
"name": "Demo5",
"description": "A demo showing a mixture of parallel and series.",
"tasks":{
"task 1": {
"description": "I am the task 1, I take 1500msecs.",
"blocking": false,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1500,
"error": false
}
},
"task 2": {
"description": "I am the task 2, I take 1000msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1000,
"error": false
}
},
"task 3": {
"description": "I am the task 3, I take 500msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 500,
"error": false
}
}
}
}
);
db["workflow-definitions"].insert({
"name": "Demo6",
"description": "A demo showing passing data between tasks.",
"tasks":{
"task 1": {
"description": "I am the task 1, I take 1500msecs.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": 1500,
"error": false
}
},
"task 2": {
"description": "I am the task 2, I take as long as task1.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": "$[tasks.task 1.parameters.delay]",
"error": false
}
},
"task 3": {
"description": "I am the task 3, I take as long as task1.",
"blocking": true,
"handler" : "../taskhandlers/testHandler",
"parameters": {
"delay": "$[tasks.task 1.parameters.delay]",
"error": false
}
}
}
}
);