foreword by joram barrez

A picture is worth a thousand words

I believe this is a saying that exists in every culture around the world. And, truly, our minds are impressive image-processing machines, spotting structure and anomalies in a fraction of a second. Yet we tend to base much of our daily communication, both personal and professional, on the written word.

As software developers, we live in the most interesting of times, with the World Wide Web, the mobile (r)evolution, and the movement to the cloud with a clear focus on consumers. Yet the building process of that software remains complex—we produce pages and pages of lengthy documents to describe what we would like to see emerge from that ocean of zeroes and ones.

What if there were a way to improve this situation? As it happens, improving this situation is the main goal of those who are involved with BPM.

I started my career as a typical Java developer, a generalist doing tids and tads of everything involving Java. One day, out of the blue, I was assigned to a jBPM project. At that point, I had never heard of BPM or anything close to it. Long story short: I fell in love. I devoted my days, nights, and weekends to understanding the inner workings of the engine. Open source is a powerful potion, and I drank it. The community was hard to please (I got an “rtfm” on my first post) but responsive to those who were willing to learn and to share their knowledge.

It was, as the French would say, a coup de foudre (love at first sight). I worked on BPM projects coding during the day, and I lurked on the forums at night. And then it happened. About a year after my first encounter with BPM, I met Tom Baeyens, the project lead of jBPM at the time, at a seminar where we both were speakers. We connected immediately as fellow geeks. A year later, I joined his team at JBoss and followed him subsequently to help build Activiti at Alfresco.

Why the switch? The answer is simple. There was no room for an Apache-licensed engine at JBoss at that time, but we knew that an Apache license was crucial due to the advent of the BPMN 2.0 standard. If we weren’t going to do it, someone else would.

Putting all our experiences together—what worked, what didn’t work, and what rocked—we started to build a BPMN 2.0 engine at the beginning of 2010, an engine that would do exactly what I started my story with: improve communication between those who need software solutions and those who build software by using flowchart-like diagrams. Expressing how your business works with diagrams is hard, but it is worth the effort. Visualization is a powerful tool and, in the past, I often saw clients change their way of working after seeing how the different steps connected. The BPMN 2.0 standard is of great value here. It may seem simplistic, but by defining how certain shapes have specific meanings, not only can you visualize your workflows, you can find others in the industry who speak the same language. The fact that version 2.0 also includes execution semantics adds the next level of power: not only do the diagrams become standardized, but now you can switch the engine that’s executing the diagrams with any BPMN 2.0–compliant engine—not that there is any reason to switch from Activiti, of course!

As a Java developer, I used to loathe BPM suites—big black boxes that cost tons of money to produce pictures. Every sane developer understands that pictures will never make it into stable, performant software. That is why you will love Activiti: it is built with benefits for business users in mind, without forgetting the developers. All the code is open source—if something bothers you or isn’t clear, you can join our discussions on the forum. Activiti in its simplest form is a library, a JAR, one among many, embeddable in every Java project, be it EE, Spring, or OSGi. With Activiti, you write unit tests just as you are used to doing. But instead of testing code, you are testing processes—based on diagrams that you and the business people discussed and understood—enriched with Java code to make them do exactly what you want them to do. Then you integrate them with other components exactly as you envisioned.

I touch only briefly here on the benefits of BPM and the power of Activiti. Tijs does an outstanding job of covering every facet of Activiti in great detail, and I’m excited and thankful that he put so much time into this book project. Software and open source frameworks in general rise or fall with the available documentation, and it’s my belief that this is a superb book that provides much-needed, detailed information. There currently is no better source of knowledge on Activiti and BPMN 2.0. Period.

Think about it: processes are all around us. Without processes, a company wouldn’t exist or, at least, it wouldn’t make money for long. Every company needs processes to fulfill its goals. And in this quickly changing world, opportunities exist everywhere, from mobile integration in the workflow to massive cloud services orchestrations. It’s up to you to grab them.

Joram Barrez
Cofounder of Activiti
Core Activiti Developer, Alfresco