oeWorkflow Engine

oeWorkflow is a workflow engine developed on oeCloud framework and based on BPMN 2.0 specifications.

Business Process Model and Notation ( BPMN) is a graphical representation for specifying business processes in a business process model.

Why oeWorkflow?

oeWorkflow was originally conceptualized as a tiny javascript engine for handling maker-checker or change approval process in oeCloud based applications. Majority of legacy applications today suffer from having a fixed number of (usually only one) approvers and fixed flow usually hard wired in application code. Need for hanving shadow models for storing temporary changes until approval, further complicates the application code.

Hence right from beginning, developers decided to keep the approval flow flexible and shadow data abstracted out and maintained by engine. A flexible approval flow needed a common language and tooling that business users can use to define and alter the business process. BPMN is a very powerful modeling language for modeling complex business processes. It allows to describe the entire business flow visually for better understanding for all stakeholders. By virtue of the visual representation, it is also possible to introduce changes in the business processes that are easily understood. Also since the BPMN standardizes the process flow constructs, the BPMN diagrams and flows have become an indisposable part of designing complex business processes.

The need was for a BPMN based workflow engine that could be embedded as a component in oeCloud based microservice/application as well as be able to run standalone. There are good number of BPMN based Workflow Engines out in the market. However,

  • most of them are written in Java
  • A few written in JavaScript/NodeJs did not have any support for extensions
  • they all run as standalone servers and can not be embedded in application
  • the deployment would be complicated due to need for a webserver, separate from NodeJs application cluster

An initial version also sported a thin NodeJS module that provided integration with Activiti. This soon proved very limiting as adding oeCloud specific functionalities was difficult and also deployment was complicated.

Considering above challenges, team started development of in-house workflow engine written entirely in NodeJs and utilizing oeCloud framework features. Core features like access control, audit, versioing, and flexibility of persistence storage (Oracle, EDB or MongoDb) along with event driven architecture of oeCloud made it a great choice for the implementation of workflow engine. A number of features inherently coming from oeCloud, means the oeWorkflow core is a very light-weight compared to other industry standard workflow engines.

The core philosophy of oeCloud framework is to enbale enterprises to develop applications with zero-coding. oeWorkflow provides a way to create and attach complex business processes on oeCloud models/APIs dynamically during run-time. It is based on BPMN 2.0 specifications and can also run as a standalone workflow engine.

Running oeWorkflow

oeWorkflow is a NodeJS based module and you should have NodeJS(8+) and NPM pre installed. If you are installing from behind a corporate proxy, you should configure .npmrc and .gitconfig files for proxy server authentication.

Standalone

  • git clone https://github.com/EdgeVerve/oe-workflow.git
  • cd oe-workflow
  • npm install --no-optional
  • Configure data store
    • By default oeWorkflow connects to a MongoDB (oe-workflow) on localhost:27017
    • You can change the settings in bin\datasources.json (Refer other files in same folder for Oracle and EDB settings)
    • Make sure the database is started
  • Start server using npm run app or node bin\app.js
  • Server should start on http://localhost:3000 showing running status
  • /explorer shows swagger UI for workflow APIs
  • /wfmodeler opens the modeler for designing BPMN 2.0 process diagrams.

oeCloud Application

  • npm install --save oe-workflow
  • Add oe-workflow as dependent in server/app-list.json file:
{
    ...
    {
	   "path" : "oe-workflow",
	   "enabled" : true
	},
    ...
}
  • Start your application npm run start

This enables the workflow engine and related models in the application.

Development and Contributing

  • Clone and Build Project
git clone https://github.com/Edgeverve/oe-workflow.git
npm install
  • Configure server/datasources.json with your mongo server details. Install mongo if not available for persistence.

  • Start the engine using npm run app or node bin\app.js

  • Modeler and APIs would be available at /wfmodeler and /explorer respectively.

  • Test Driven Development is strongly advised. Create test cases for any defect or enhancement and proceed on to the implementation.

  • After implementation of a particular feature or fix for a bug, make sure all the other test cases are working properly by running mocha test cases. npm run checks performs linting, test execution and code coverage.

  • Submit a merge request.

Guides