The highlights of this release are:
- DMN (Decision Model and Notation): DMN Engine and browser based Decision Table Editor,
- Job Priorities: Control execution order of asynchronous Jobs,
- Enhanced BPMN Support: add Signal Start events, Compensation Event Subprocess, enhanced asynchronous continuations for Multi Instance Activities,
- Native support for File Variables in Api and Html Forms,
- Many Bugfixes
Overall more than 140 issues were closed. See complete Release Notes in Jira.
DMN: Decision Model and Notation
This is the first release which supports DMN (Decision Model and Notation). DMN is a new OMG (Object Management Group) standard for Business Decision Management. (Some of you may also be familiar with the term “Business Rules Management”.)
DMN allows developers and business people to collaborate around different phases of modeling, testing, executing, monitoring and improving Business Decisions.
This Camunda BPM release adds
- A new lightweight decision Engine with native support for DMN, developed from scratch,
- Seamless integration of the Decision Engine into BPMN and CMMN execution,
- A new, browser based Decision Table Editor built on top of our awesome bpmn.io modelling framework
While these components are currently in an early stage of development, it is already possible to create a decision table in the browser, add it to your java development project, reference it from a BPMN Business Rule Task, and execute the corresponding process.
For an example, checkout the Invoice Demo (Sources) shipped with our distribution.
You can try out a demo of the browser based decision editor here:
DMN Table Editor Demo
Over the next days we will publish a dedicated blogpost on DMN.
You should also read Bernd’s Post at bpm-guide.
Job Priorities
It is now possible to control the order in which asynchronous jobs are executed. See the corresponding documentation.
We will publish a dedicated blogpost on Job Priorities later. Here it is!
Enhanced BPMN Support
This release again enhances BPMN support. It is now possible to use
- Signal Start Event
- Compensation End Event
- Compensation Start event of Event Subprocess
- Enhanced support for Asynchronous Continuations for Multi Instance activities
Native support for File Variables in Api and Html Forms.
We added native support for File Variables to the Java API, Rest API and in HTML Forms.
Let’s start with the forms. In a Form you can now easily allow a user to upload a file:
The corresponding html code would looks like this:
<input type="file"
cam-variable-name="INVOICE_DOCUMENT"
cam-variable-type="File"
cam-max-filesize="10000000" />
And download it (with the correct Filename):
The corresponding html code looks like this:
<a cam-file-download="INVOICE_DOCUMENT"></a>
Read more about File support Html Forms in the Documentation.
In your Java code you can work with files using the new FileValue
type:
public class ArchiveInvoiceService implements JavaDelegate {
public void execute(DelegateExecution execution) throws Exception {
// get file value using typed api
FileValue invoiceDocumentVar = execution.getVariableTyped("INVOCE_DOCUMENT");
InputStream content = invoiceDocumentVar.getValue();
String filename = invoiceDocumentVar.getFilename();
String mimeType = invoiceDocumentVar.getMimeType();
// untyped api returns the InputStream only
InputStream invoiceDocument = (InputStream) execution.getVariable("INVOCE_DOCUMENT");
// create a new file variable:
execution.setVariable("DOC", fileValue(new File("location/doc.pdf")));
}
}
Find more details in the Documentation.
File Support was a much requested feature by the community.
We hope you enjoy this release!
What’s up next?
- DMN, DMN, DMN, … 🙂
- We will continue to enhance the BPMN support by implementing BPMN Escalation,
- Support for Tomcat 8,
- Support for CMMN Repetition Rule,
- As always, amazing things are happening in bpmn.io,
- …