Camunda BPM Platform 7.8.0 is here, significantly improving the process engine’s performance.
Besides that, we have made numerous improvements for Cockpit. The highlights are:
- Batch Operations for Process Restart, Suspend/Resume and State Modification
- Deletion of Process Definitions
- Inspecting and Editing JSON and XML variables
- Seeing the number of technical incidents within a process diagram
- Faster rendering of BPMN diagrams
In addition, the database Microsoft Sql Server 2016 and the Microsoft Edge browser are now officially supported.
The complete release notes are available in Jira.
We have also released the Camunda Spring Boot Starter 2.3.0 project, which relies on Camunda BPM 7.8 by default.
Significant performance improvements
Camunda 7.8 improves performance by using batching of SQL-statements to the database.
Let’s look at the following BPMN process as an example:
- The process is started with a single variable
loopVariable, containing a list of 20 Strings.
- Step 1 is declared as multi instance, creating instances based on the
loopVariablecollection - 20 instances in our case. This produces 20 separate variables in the database (including history of changes in two historic tables).
- After the parallel gateway, 5 service tasks are executed. This also produces some output to the history tables.
- Finally, all the changes are committed in one transaction, as all the processes are declared to be executed synchronously.
Below you can find our benchmark results when running this process at history level FULL against different databases with batch mode ON and OFF. The chart shows throughput over time (i.e., process instances executed / minute), higher is better.
Please be aware that these numbers should not be used to compare different databases. However, they are consistent within one database and demonstrate considerable speed improvements on 4 out of 6 tested databases. At the same time, we see that the MySQL and MariaDB databases apparently do not distinguish between batch and simple processing mode.
How is this improvement possible?
When executing such a process, the engine needs to perform many SQL statements (INSERT, UPDATE, DELETE, SELECT). Usually, statements are executed sequentially. In that case, each statement constitutes a full roundtrip from the Java process engine to the database, including the network roundtrip time. With 7.8, this is optimized by using SQL statement batching. All statements executed against the same database table are now executed as a batch, which is only a single roundtrip to the database.
Batch mode is switched on by default. (Please see limitations for some databases.)
It is possible to switch it off by using the following configuration parameter:
<property name="jdbcBatchProcessing" value="false"/>
New Features in Camunda Cockpit
This release adds many new features in Cockpit. In this blogpost we only present the three main highlights:
- Batch Modification of Process Instances
- Restart of Process Instances
- Deletion of Process Definitions
Batch Modification of Process Instances
Sometimes process instances somehow take a wrong turn or end up in a state they should not be in. Some common causes for this are:
- Incorrect data/payload has been provided or
- An error in an external system
After solving these (or other) issues, it might be necessary to repeat some steps.
To deal with such situations, Camunda introduced a feature to modify process instances in previous releases. Up until now, in Cockpit the modification only worked on a single process instance. Starting with 7.8, process instance modification can now be executed in a batch of process instances in Cockpit.
Restart of Process Instances
While modifications can only be applied to running process instances, sometimes it is necessary to recreate or to restart process instances which have already ended. To achieve this, this release makes the Process Instance Restart API available in Camunda Cockpit.
Deletion of Process Definitions
Until now, it has only been possible to erase process definitions in Cockpit by deleting a whole deployment. This behavior is not sensible as, generally speaking, a deployment consists of several process definitions and resources – including those that are possibly still required and not supposed to be deleted.
This release brings a new feature to Cockpit that allows deletion of process definitions, regardless of their respective deployments.
Apart from deleting individual versions, it is even possible to delete all versions of a process definition.
More details can be found in the documentation on process definition deletion.
There are many more smaller features and bugfixes in the release which aren’t presented here in the blogpost. The full release notes provide the details.
Register for the Webinar
Please try out the awesome new features of this release and provide feedback by commenting on this post or reaching out to us in the forum.