Camunda 7.5.0-alpha4 is here and it is packed with new features. The highlights are:
- Transparent Multi-Tenancy Access Restrictions
- 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 Restrictions
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
Select Process Instances By Querying
Observe 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.
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.