Camunda BPM 7.1.0-alpha3 released – Cockpit, BPMN Model Api and Task Operation Log

Today we release the next alpha version of Camunda BPM. The highlights of this release are: 

 

 

On top of this we introduced new features into the cockpit monitoring web application which are reserved for enterprise subscription customers only:
  • Diagram View for Historic Process Instances
  • Audit Log for Historic Process Instances
  • Advanced Querying Features for Historic Process Instances
 
Download Camunda BPM alpha 3 now and Give us Feedback via @camundaBPM and in the Forums

 

 

Bpmn Model Api integration with Process Engine

The BPMN Model API allows you to read, update and create BPMN 2.0 compliant process models using a high level Java API. The API itself lives inside a separate repository on Gihub so that it can be used independently from Camunda BPM.
 
In this release we integrate it into Camunda BPM distributions giving you convenient access to the process model at runtime. 

 

 

First, you can access the model for all processes deployed to the process engine using the Repository Service:

 
// get the BpmnModelInstance for a deployed process
BpmnModelInstance processModel = runtimeService.getBpmnModelInstance("someProcessDefinitionId");

// find all  User Tasks
ModelElementType taskType = processModel.getModel().getType(UserTask.class);
Collection<ModelElementInstance> taskInstances = modelInstance.getModelElementsByType(taskType);

// Iterate the tasks ...

You can also get your hands on the current FlowElement or Usertask from a JavaDeleagte, ExecutionListener or TaskListener implementation: 

public class ExampleServiceTask implements JavaDelegate {

  public void execute(DelegateExecution execution) throws Exception {
    BpmnModelInstance modelInstance = execution.getBpmnModelInstance();
    ServiceTask serviceTask = (ServiceTask) execution.getBpmnModelElementInstance();

    // read properties from model:
    serviceTask.getIoSpecification();
    //... 
  }
}

Sebastian Menski who is largely responsible for the BPMN model api implementation also added a fluent builder API which makes it easy to create a new BPMN process (or edit an existing process) using in only a few lines of code: 

BpmnModelInstance modelInstance = Bpmn.createProcess()
    .name("Example process")
    .executable()
  .startEvent()
  .userTask()
    .name("Some work to do")
  .endEvent()
.done();

Task Operation Log

Thanks to Danny Gräf, the process engine now logs operations performed on tasks at history level full. This allows you to inspect which user created, delegated, completed … a Task:

// who worked on this task?
historyService.createUserOperationLogQuery()
  .taskId("someTaskId")
  .list();

// all operations performed by a given user
historyService.createUserOperationLogQuery()
  .userId("jonny")  
  .list();

...

This is a feature request that many of our customers requested. We plan on adding this feature to the cockpit monitoring application as well.

New enterprise Features in cockpit

Roman Smirnov and Valentin Vago added a couple of enterprise only features to camunda cockpit: Advanced querying for Historic Process Instances:

Advanced querying for Historic Process Instances 

An activity audit log: 

activity audit log

Which can be filtered using the hierarchical activity instance tree:

hierarchical activity instance tree

What else is going on?

Join us at the Camunda BPM birthday party in Berlin on March 18th!

We announced the launch of our new open source project bpmn.io.

There has been some awesome progress in some of our community maintained extensions:

OSGi Integration
Ronny Bräunlich did some great work on the testsuite and got a contribution of apache karaf commands

AssertJ Testing Library
Great progress in fluent assertion library maintained by Martin Schimak. You definitely have to check out this project!!!

Needle Testing Library
Jan Galinski added features and documentation.