Optimal BPM

From Optimal BPM
Jump to: navigation, search



Optimal BPM is an emerging Business Process Management system that will:

  • attempt to greatly simplify all aspects of Business Process Management. From design and implementation to deployment and maintenance.
  • attempt the above while maintaining flexibility and extensibility by being based on the Python programming language instead of XML.
  • have at least a magnitude lower TCO than the traditional implementations
  • have a primary audience of smaller businesses
  • simply not use the exceedingly overly complicated and symbol- and shape-heavy BPMN notation but provide an alternative that will actually be usable for all parties involved.

Recent developments

  • The Optimal BPM Tools 0.9 packages, notably containing Optimal Sync, has been released.
  • Proof of concepts of *all* technical aspects of the system have now been made. So there should be nothing hindering the development. Hopefully.
  • MBE and MBE Front end has been released.


Optimal BPM builds upon the shoulders of open source giants.

A business process management system needs to be able to communicate and interact with anything, to achieve this, a large number of technologies had to be investigated and evaluated.

Why a certain technology?

What is used by Optimal BPM is determined according to the following criteria:

  • Simplicity: The components should be simple to use in development, easy to configure, and easy to deploy.
    A business process management system is certainly complicated enough without having to configure all subsystems.
  • Lightweight: The system should leave a small memory footprint.
  • Stability: All components need to be mature and stable.
  • Free and open source: Only open source components are used.


  • Back end
    • Python: The Python programming language is both one of the most flexible and has one of the easiest syntaxes to understand.
      It also has a vibrant community, package management and all modules imaginable. Javascript is catching up, however it has a long way to go to be as powerful a scripting language as Python.
      On windows, Python 3.4 is used as it ships with pip and easy_install, greatly simplifying installation on windows as the system uses a large number of external libraries.
    • The database backend of the system is MongoDB, This instead of all the different SQL server backends supported by QAL, as MongoDB is an almost perfect match for a system that needs to be able to store a wide variety of data.
      That SQL-injection is not an issue for a NoSQL-solutions doesn't hurt, either. Neither does tailable oplog cursors.
    • The choice of MongoDB also means that QAL doesn't have do be further developed with regards to DDL-functionality but can retain its data mining and pushing profile.
    • CherryPy is the web framework. It has a very clean and intuitive structure, is lightweight and flexible and has the features needed for the system. Also, it doesn't need any configuration files or separate installation.
      If high performance is needed, it is fully WSGI-compatible and able to run under for example Apache.
    • Pythons' own multiprocessing queues and libraries are used for process isolation and asynchronicity.
    • The Dulwich GIT client. Associated with the samba project, this component is used for keeping project code updated, both internally and externally.
    • JSON schemas will be used and is enforced in a general data access layer (MBE, Mongo Back End) over the MongoDB database.
    • All IPC between the system not done using queues will be made using JSON, greatly simplifying development with little performance penalty.
    • Validation will be done using jsonschema
  • Front end
    • Web based: The interface of Optimal BPM is not more complicated than a web interface will suffice.
      The Javascript-based frameworks of today provide a user experience that resembles desktop applications to a degree that only very usage intensive applications need it.
      In Optimal BPMs case, anyway, the pros of a web based solution far outweight the cons, even though some more specialized applications and apps may be desktop based.
    • TypeScript: The code that belongs to the system is as far as possible written [TypeScript http://www.typescriptlang.org/].
    • AngularJS is the web front end platform. It is a major platform and has all the features needed by the system. And more.
    • Validation will be done using tv4
    • Angular-iu-tree is used to display entity trees and some
    • Angular Schema form is used for schema bound client side editing .
    • Layout controller is angular-ui/ui-layout

During the development of the application, articles on using the different techniques used in realizing the project will be presented on this wiki.


This guide deals so far only with Optimal BPM Tools.

Please create tickets for any bugs, lacking documentation or installation issues you encounter. (Documentation for optimal sync is at http://www.optimalbpm.se/wiki/index.php/Optimal_Sync)


To install, first uninstall any earlier versions, then download and run optimalbpm-tools-bundle_0.9.0.exe, which installs the Optimal BPM Tools package and its proper dependencies(see below).

To install example files, select "custom" installation and choose "Will be installed on local hard drive". Don't forget to choose and install location, it is recommended to choose a non-readonly location where one can easily access the files, like the home folder.

Notes: 1. The Oracle and DB2 client libraries has to be installed manually until the legality of redistribution has be researched. See: http://www.optimalbpm.se/wiki/index.php/QAL.DAL for instructions for some versions.

2. These packages are installed:

  1. Python 3.4 (into its default directory at C:\Python34).
  2. prerequisites.0.9.0 - A staging package that install binary lxml and pyodbc* and fixes paths
  3. Using pip install, it installs QAL, Py-Postgresql, PyMySQL, xlrd, xlwt** and openpyxl
  • ) The current lxml and pyodbc easy_install packages require visual studio components to be be installed.
    • ) The xlwt-installation doesn't work for python 3 yet, however the pip-package will soon work.
  Optimal BPM has been tested with the python 3 branch. This means that old-timey .xls can't be written to yet
  without some manual work.


From launchpad.net PPA in Ubuntu

Execute the following commands:

sudo apt-add-repository ppa:nicklasb/optimalbpm
sudo apt-get update
sudo apt-get install optimalbpm-tools

From launchpad.net PPA in Debian(Jessie and onward)

Add the following line to /etc/apt/sources.list. The wildcard is there as the there are no matching distro names in launchpad.net, this way it takes what it gets. It it the same package anyway.

First, using a privileged user, add this to /etc/apt/sources.list

deb http://ppa.launchpad.net/nicklasb/optimalbpm/ubuntu * main

Then execute these commands:

apt-get update
apt-get install optimalbpm-tools

Notes for Debian:

  1. the root user can be replaced by any other sufficiently privileged user
  2. there is a non-standard unicode character in the maintainer's name, this *might* cause problems if you have an old locale, however,

...might help, read this first though: http://askubuntu.com/questions/393638/unicodedecodeerror-ascii-codec-cant-decode-byte-0x-in-position-ordinal-n

*Without* launchpad.net PPA in either distribution

gdebi is recommended*, to install gdebi, use:

sudo apt-get install gdebi

Install packages, available above, in the following order:

sudo gdebi python3-qal_0.4.0_all.deb
sudo gdebi optimalbpm-tools_0.9.0_all.deb


There are also some example files, use unzip to unpack:

unzip optimalbpm-tools-examples.zip

Notes: 1. Implicitly, the install requires Ubuntu Trusty or Debian Jessie, or any other distribution with python3-postgresql 1.1.0. (This because python3-postgresql 1.0.2 is broken: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=724597) 2. gdebi has quite a lot of dependencies, so on a very tight system you might want to use dpgk -i and manually install dependencies instead.


Sourceforge project page: [1]

Personal tools