Process automation for Node.js
npm install process-engine
var ProcessEngine = require('process-engine');
// Create a process engine object
var processEngine = ProcessEngine.create();
var simpleDefinition = {
name: 'simple process',
tasks: {
start: {type: 'start'},
'service1': {type: 'service', action: function (variables, complete) {
console.log('do work');
complete();
}
},
end: {type: 'end'}
},
flows: [
{from: 'start', to: 'service1'},
{from: 'service1', to: 'end'}
]
};
// Create process instance from the above process definition
var processDefinition = processEngine.importProcessDefinition(simpleDefinition);
var processInstance = processEngine.createProcessInstance(processDefinition);
// Start the execution of the process instance
processInstance.start();
Process definition
describes the workflow using tasks and flows.
The built-in task types:
start
: mark the start of process, must be the first taskend
: mark the end of process.service
: automatic task type that execute any code in itdecision
: Certain things can only be done under certain circumstances. The decision task is used to mark the fork and join of execution pathhuman
: manual task type, they are assigned by engine, e.g. place it in the task list, the engine expect confirmation to continue the executionThe flow is something to connect the tasks and can take a condition function if the from
task is decision task.
human task service is used to manipulate the task list.
See examples/tests for all usage that process engine supports
ProcessEngine
importProcessDefinition(definition)
: Create a new process definition based on definition
objectcreateProcessDefinition(name)
: Create an empty process definition with name
loadProcessDefinition(id)
: Load a process definition by id
queryProcessDefinition(conditions, options)
: Query process definitions by conditions and optionscreateProcessInstance(def)
: Create a new process instance with definition def
loadProcessInstance(id)
: Load a process instance by id
queryProcessInstance(conditions)
: Query process instances by conditionscompleteTask(processId, taskId, variables)
: Complete a task with processId
, taskId
, variables
ProcessInstance
is a Node event emitter.
Events
before
: emitted before each task is executedafter
: emitted after each task is executedend
: emitted when the whole process instance is endedstart(variables)
: Start the process instance with given variables
getNode(taskName)
: Get the runtime node with taskName
HumanTaskService
complete(taskId, variables)
: Complete the human task taskId
with variables
claim(taskId, user)
: Claim the human task taskId
with User user
startWorking(taskId)
: Start to work on the human task taskId
query(conditions)
: Query the human tasks by conditions
process-engine.js contains a Node.js web application to manage the process instances and human task list.
ui
foldernpm install
bower install
npm install -g nodemon
brunch watch --server
to launch the serverhttp://localhost:3000/#/definitions
in your browsernpm install -g mocha
npm install -g bower
npm install -g brunch
npm install -g istanbul