Business processes represent the core functions of an organization. If these core functions are implemented inefficiently, a company gives its competitors an easy advantage. Business Process Management (BPM) is nothing more than ensuring that an organization is run well and remains in good shape. For small companies, a single person might be able to oversee everything that is going on and deal with situations as they occur. But when companies grow larger and processes expand, it’s harder to maintain control. Work is delegated, people start optimizing their own responsibilities, and an overview can quickly get lost. Over the long run, constant monitoring and improving of business processes are what separates good organizations from excellent ones.
One aspect of managing business processes is automation. Despite big advancements in software technology in the last decade, building custom software to support business processes remains expensive for enterprises.
Traditional BPM Systems (BPMSs) have attempted to simplify the creation of software for monitoring business processes. The biggest advantage of BPMSs is that they’re based on flowchart diagrams. Business managers and technical team members can understand these diagrams, which helps bring communication of requirements to a new level.
The bottleneck of traditional BPMSs has been flexibility. BPMSs that focus on technical integration with backend systems over web services (for example, BPEL) are not suited for business people. And BPMSs that focus on business diagrams are typically limited in backend integration and scripting.
This lack of flexibility is why I started building a home-brewed process engine back in 2002. Initially, the goal was to build an interpreter for state machines. It was much later that I heard from many developers that they had gone through the same initial phase. Originally, my process engine was intended as an internal project for which I was doing Java consulting.
Without expectations and without really knowing what I was getting myself into, I published the project on SourceForge as jBPM. My reaction to the first forum post was, “Cool! Someone found my engine!”—and this motivated me to improve. Many more forum posts kept me going until JBoss came along and asked me to develop it further.
After the Business Process Model and Notation (BPMN) standard was introduced, we realized that it would be crucial to have an Apache-licensed implementation of BPMN. jBPM’s LGPL could pose a problem for mass adoption. At the same time, Alfresco needed an Apache-based BPMN engine, so the company hired me, and that is how Activiti was born. Because of the different licenses, we couldn’t use any of the jBPM code, so we had to write it from scratch at Alfresco: but this became an opportunity to revisit all the key architectural decisions that had been made before.
During the evolution of jBPM, leading up to Activiti, I took a new approach to the old problem. Initially, the focus was on state machines, but eventually we constructed an engine to match the way business people and developers collaborate. We designed the engine in such a way that it would allow business people to define the graphical flow of the process and, at the same time, give developers the opportunity to bind program logic inside the process flows. In addition, the engine was lightweight and integrated easily into any Java environment. The result was what we call embeddable BPM.
BPMN is a recent standard that has emerged from a long list of predecessors in the BPM space. It describes the shapes and connections for drawing business-process diagrams as well as their meanings and file formats. BPMN is different because of its clear focus on the business side and process modeling, whereas earlier standards focused more on the technical aspects.
In this book, Tijs has included concrete instructions for developers, technical managers, and business analysts to start building BPMN process solutions with Activiti. The book includes a comprehensive overview of the Activiti framework, the Activiti Engine, and BPMN. But Tijs goes beyond the basics and describes how to integrate these with a rule engine and web-based services.
The reader will get a thorough understanding of BPM technology as it is applied in today’s enterprise environments. This is definitely the most practical guide to BPMN using Activiti as the engine.
Tom Baeyens
Activiti and jBPM Founder
Chief BPM Architect, Alfresco