Camunda Team Blog

Camunda BPM 7.5.0-alpha4 Released

Written by Thorben Lindhauer on , under Execution category.

Camunda 7.5.0-alpha4 is here and it is packed with new features. The highlights are:

  • Transparent Multi-Tenancy Access Restricitions
  • Improved Process Instance Migration
    • BPMN Support
    • Large Sets of Process Instances
    • User Experience
  • External Task API
    • Triggering Error Events
    • Prioritization
  • Version Tags for Process Definitions
  • Fine-Grained Task Access Permissions
  • Historic Identity Links
  • Wildfly 10 Support
  • 32 Bug Fixes

The complete release notes are available in Jira.

You can Download Camunda For Free or Run it with Docker.

Find a list of known issues in Jira.

Transparent Multi-Tenancy Access Restricitions

The new feature for identifier-based multi-tenancy enables assigning process definitions and instances to tenants. This release ships the ability to call engine API such that access is restricted to those instances that belong to specific tenants. This effectively allows your tenants to use the engine API in a tenant-agnostic way. For example:

List<String> currentTenants = new ArrayList<String>();
currentTenants.add("tenant1");
currentTenants.add("tenant2");

try{
  identityService.setAuthentication(null, null, currentTenants);
  runtimeService
    .createMessageCorrelation("Invoice Received")
    .correlateAll();
} finally {
  identityService.clearAuthentication();
}

The above correlation code correlates Invoice Received to process instances of tenant1 and tenant2 only. In 7.5.0, tenant authentication is going to be part of the default web application authentication filters. Your tenants can then transparently use a single Cockpit installation without accessing each other’s data.

Note that this is still under development, so not all APIs support this feature yet.

Improved Process Instance Migration

Process instance migration is a new feature in 7.5.0 to move process instances from one version of a process to another. Long running process instances no longer lag behind changing processes.

7.5.0-alpha4 ships the following improvements:

  • Almost the entire BPMN palette supported
  • Process instance queries can be used to apply a migration plan to a large set process instances (see the docs)
  • Improved User Experience (Camunda Enterprise version only)

User Experience

Cockpit’s UI to compose migration plans visually, to execute migration plans, and to track migration improves steadily:

Compose Migration Plans

Compose Migration Plans

Compose Migration Plans

Select Process Instances By Querying

Select Process Instances

Select Process Instances

Observe Progress

Observe Migration Progress

Observe Migration Progress

External Task API

The API for external tasks has improved in two areas: Triggering error events and prioritization.

Triggering Error Events

The new API method ExternalTaskService#handleBpmnError cancels a running external task instance and triggers BPMN error propagation.

An external task with a BPMN error event

An external task with a BPMN error event

Code to trigger the error:

LockedExternalTask lockedTask = ...;

externalTaskService.handleBpmnError(lockedTask.getId(), "workerId", "Data Inconsistent");

Task Prioritization

Similar to jobs, external tasks can be prioritized and fetched according to that priority. In BPMN, you can define a priority as an external task attribute:

<serviceTask id="externalTaskWithPrio"
  camunda:type="external"
  camunda:topic="externalTaskTopic"
  camunda:taskPriority="8"/>

At runtime, tasks with the highest priority can be fetched by using the API method ExternalTaskService#fetchAndLock(int maxTasks, String workerId, boolean usePriority):

List<LockedExternalTask> tasks =
  externalTaskService.fetchAndLock(5, "worker", true)
    .topic("invoiceProcessing", 10000L)
    .execute();

Stay tuned for the next Camunda Modeler release or check out the nightly builds to edit the taskPriority in the modeler.

Version Tags for Process Definitions

Processes are often run in different environments where the same BPMN process model is deployed but is assigned different IDs and versions by the process engine. For the purpose of stable identifiers, it is now possible to assign a version tag to a process definition.

In BPMN XML, the version tag can be set as follows:

<bpmn2:process camunda:versionTag="1.5-patch2" ...

And the tag can be used with the engine API to identify the deployed process definition:

ProcessDefinition processDefinition = processEngine.getRepositoryService().createProcessDefinitionQuery()
  .versionTag("1.5-patch2")
  .singleResult();

Stay tuned for the next Camunda Modeler release or check out the nightly builds to edit the versionTag in the modeler.

Fine-Grained Task Access Permissions

More fine-grained permissions can be used when working with tasks, separating responsibilities of distributing tasks and working on a tasks. In particular, the permissions TASK_ASSIGN and TASK_WORK have been added. TASK_ASSIGN restricts access to assigning and delegating a task. TASK_WORK restricts access to claiming and completing a task. See the documentation for details.

Historic Identity Links

Identity links are used to manage relationships between users/groups and entities in the process engine. For example, task assignment is managed via identity links. The new historic identity link log query enables querying for all identity links ever created:

HistoricTaskInstance task = ...;

List<HistoricIdentityLinkLog> allTaskCandidates =
  historyService.createHistoricIdentityLinkLogQuery()
    .taskId(task.getId())
    .type(IdentityLinkType.CANDIDATE)
    .list();

Wildfly 10 Support

Wildfly 10 is now an officially supported environment for Camunda. You can download the new Wildfly 10 distribution here. Note that JBoss 7 and Wildfly 8 are still supported, however Wildfly version 9 has been skipped.

Feedback Welcome

Please try out the awesome new features of this new release and provide feedback by commenting on this post or reaching out to us in the forum.

End of Support Notice

Camunda 7.5.0 Final will be released on May 31st, 2016. With 7.5.0 Final, we officially remove the support for the Glassfish distribution from the Enterprise Subscription. Read the forum announcement for more details.