For years we had been bugged about BPM and process modeling, what the heck is process modeling?

According to Wikipedia definition:

Business Process Modeling is the activity of representing processes of an enterprise, so that the current process may be analyzed or improved. BPM is typically performed by business analysts, who provide expertise in the modeling discipline; by subject matter experts, who have specialized knowledge of the processes being modeled; or more commonly by a team comprising both.

First of all, a process is a consecutive chain of enumerable tasks. When we say task, we mean any repeatable unit of work, which has a beginning and an end.

These tasks are connected in defined sequences and may contain business logic such as rules that defines the task outcome or result.

The Monolithic Approach

Programming paradigms aim to problem solving, hence when a programmer tackle one problem, his mind is set to write code in order to solve all possible scenarios with that domain in mind. What if the problem changes in the future, or the scenarios multiply in time?

The natural response is doing constant maintenance of the written programs and multiply/refactor the lines of code to solve all new possible scenarios. That's what we call the Monolithic Approach: one problem at the time, one program at the time.

Consider this new "mobile app world" for an instant; Say you have to wake up early, then you have the Alarm app! Now say you like to cook and want all recipes in one place, then you have the Notes app, and so on, ad infinitum ad nauseam.

Now imagine applying this approach in a thousand-people company, settled in several countries with operations around the planet. That's madness and simply a poor strategy.

Enter the Power of the Process

Processes are designed to communicate and connect monolithic software between each other, applying horizontal rules beyond the programs' domain. Processes are meant to interconnect limitless black boxes, managing their input and output, recording time stamps between each other's execution and signaling them in predefined states.

One of the most popular notations for process modeling is BPMN2, defined as follows:

The Business Process Modeling Notation (BPMN) is a graphical notation that depicts the steps in a business process. BPMN depicts the end to end flow of a business process. The notation has been specifically designed to coordinate the sequence of processes and the messages that flow between different process participants in a related set of activities.

To give you a more precise idea about it, let me show you what a sample Process looks like:

Process Image


What Can You Do With a Process?

You can do a lot of things, for instance:

  • Connect Legacy Apps
  • Call Services (REST, WebServices, etc.)
  • Process Batch
  • Control Flows and Human Tasks
  • Compute SLAs for Tasks and Processes
  • Create Digital Trail for Tasks
  • Standardize UI between multiple Apps
  • Execute Rules (logical, decision tables, etc.)
  • ...

This list could be as long as your imagination. Basically you can do it all. Every activity is a sequence of tasks which can be described as a process.

It's a Commercial World

There are several world class BPM managers; I'm going to mention the most relevant (according to me): IBM BPM inherited from Lombardi, the Oracle BPM and the Red Hat BPM Suite.

These solutions are in the $80K to $350K price range, far from being a petty cash investment and all are hard to configure and expensive. Here is where Red Hat stands out. They released their solution under an open source license via the KIE group, so you can download the developer version and write your own code to customize it. You can also access their Github repo here.

One more for the road: you can create a cloud virtual machine with the BPM Suite in Red Hat OpenShift to try it for free.

2020 UPDATE: These days we have the new kid on the block, the german company Camunda, which offers the best BPM Engine of the market! We recommend you to try it out, it is free and offers a very good REST Api as well.