Camunda Team Blog

Feedback Request: Process Implementation with XML & JSON Data and Scripting Languages

Written by Daniel Meyer on , under Execution category.
One of our largest customers approached us with the following requirement:

"We want to implement BPMN processes, such that 
  1. these processes work with rich XML and JSON data objects,
  2. but we are not forced to deploy custom Java Code."
Requirement (1) is a very common one. Many of our users and customers work with rich XML and JSON data objects. To do this, many of them implement custom Java Classes and use technologies like JAX-B or Jackson for mapping XML and JSON to Java.

Requirement (2) is also a common one. Note however that in this case, the driving force behind it is not zero-coding. Our customer is a rather large hardware / software vendor  and their product is deployed in hundreds of installations. The process engine is part of these installations. What they are looking for is a lightweight deployment model: they want to be able to deploy complex process implementations which are more or less self-contained. This is not the case if they have to write Java Classes. Java classes have to be deployed and re-deployed each time you make a change. Although camunda BPM provides a deployment model for bundling BPMN processes with Java Code (see Process Applications) which even allows you to operate multiple versions of your process in parallel, each deployment is a complete Java EE / Java Servlet application deployment with all pros and cons this entails.

Based on these and similar requirements, we are now working on a new feature which will be called "Classless Workflows". We plan adding this feature in camunda BPM 7.2.

The core idea behind this feature is simple:
  1. Provide a rich, dynamic programming model for XML and JSON in Java,
  2. Make this available from JVM scripting languages like Javascript, Groovy, Python, ...
In order to render this more concrete, we developed an example which attempts to illustrate how a developer could use these features: 

If you are interested in this topic, it would be great if you could give us some feedback on this example! 

(Note: I am not sure whether the example is easy to understand. If not, let us know then we can improve it.)