When we talk about the open source Flowable BPM, it’s important to bear in mind that there are two versions: 5 and 6.
Flowable 5 is based on a fork of the open source Activiti 5 and can literally be dropped in as an alternative (with more bug fixes and some additional functionality). We will continue supporting Flowable 5, but most of the future features are going to happen on the Flowable 6 line that we released earlier this year.
Flowable 6 is the next generation engine that brings a number of significant changes in its core. One major enhancement is the introduction of an abstract data layer, which allows you to use relational or other databases to store process state. You can even mix the data storage between a relational database and a NoSQL database, if you want. The other key change is in process execution, which will allow us to innovate in BPM for years to come.
The way processes are executed in Flowable 5 (as for other engines with the same origin) is that BPMN is mapped to a Process Virtual Machine (PVM). You can think of this a bit like Java code that’s converted to bytecode to run on a JVM. In Flowable 5, one BPMN operation might get mapped to multiple PVM operations. The problem is, over time, these PVM operations have had to deal with more and more exceptions and use cases that mean they are no longer clean, isolated and efficient.
Flowable 6 introduces a clean and predictable execution model. There’s a one-to-one relationship between BPMN and the execution operations, so all the odd bits of code scattered around the PVM operations are no longer needed. Now the model is much more understandable with clear meaning, which means less chance of bugs being introduced with new features, as well as being easier to fix. More excitingly, it is now possible to manipulate running processes, such as easily changing the state of a process. We can even inject new process elements into a single running process – imagine you’re part way through a complex on-boarding process for a client, when you come across a new piece of information that means you really want to include a credit check on an associate – with Flowable 6 you could inject the additional credit check process into your current one and continue as if that was how the process was designed. And, that exceptional process is fully auditable and even re-usable. It may not even need to be a human that decides to inject the process, it could be some external risk assessment system or machine learning algorithm that decides it should be inserted.
The new Flowable 6 architecture will allow us to introduce new dynamic capabilities as we move forward, and our customers will guide us on what we should be doing to best exploit this for their business challenges. Meantime, we’ll continue to support and maintain Flowable 5 for years to come, because some want an instant, painless switch to a supported open source BPM library, but aren’t ready to move to Flowable 6 immediately. For any new projects, you should really start with Flowable 6 to gain its benefits now, and at the same time you’ll be working with the future.