pe
5.0/51
process-engine
npm i process-engine
pe

process-engine

Node.js Business Process/Workflow Engine

by Oliver Zhou (毓杰)

0.5.3 (see all)License:BSD-2-ClauseTypeScript:Not Found
npm i process-engine
Readme

Process automation for Node.js

###Best For

  • Task Orchestration
  • Human Task Management
  • Process Management and Monitoring via a Node.js web application

###Features

  • Start/End/Decision/Parallel/Service/Human Task
  • Human Task Management
  • Process Definition Management and Visualization
  • Process Instance Management and Visualization

###Get Started 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();

See examples/tests for all usage that process engine supports

###API

  • ProcessEngine
    • importProcessDefinition(definition): Create a new process definition based on definition object
    • createProcessDefinition(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 options
    • createProcessInstance(def): Create a new process instance with definition def
    • loadProcessInstance(id): Load a process instance by id
    • queryProcessInstance(conditions): Query process instances by conditions
    • completeTask(processId, taskId, variables): Complete a task with processId, taskId, variables
  • ProcessInstance is a Node event emitter.
    • Events
      • before: emitted before each task is executed
      • after: emitted after each task is executed
      • end: emitted when the whole process instance is ended
    • start(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

###UI image

process-engine.js contains a Node.js web application to manage the process instances and human task list.

  • Go to ui folder
  • Run npm install
  • Run bower install
  • Run npm install -g nodemon
  • Run brunch watch --server to launch the server
  • Open http://localhost:3000/#/definitions in your browser

###Development

  • Test Runner: npm install -g mocha
  • Front End Package Manager: npm install -g bower
  • Front End Build: npm install -g brunch
  • Code Coverage: npm install -g istanbul

###Roadmap

  • Planned
    • Human Task Form Builder
    • User Management Service
    • Performance Benchmark
  • Future
    • Message/Timer Event Support
    • Separate Running and Histronic Process Instances into different collections
    • Sub Process
    • BPMN 2.0 XML Import/Export