Camunda 7.5.0-alpha2 is here. The highlights of this release are:
- New View in Cockpit for Process Instance Migration (Camunda Enterprise Edition only)
- New API for Process Instance Migration
- New API for Resource-efficient Multi-tenancy
- Extended Support for External Tasks
- BPMN Model API Improvements
- 18 Bug Fixes
The complete release notes are available in Jira.
Find a list of known issues in Jira.
Process Instance Migration in Cockpit
Process definitions evolve over time like the businesses they support. BPMN makes it easy to change a process, yet running process instances lack that agility. Camunda’s new migration feature is here to fill that gap and alpha2 ships our first increment of it.
Migration is performed according to a migration plan that tells which activity of the source process definition corresponds to which activity of the target definition.
To facilitate composing migration plans, Cockpit ships a visual tool:
Migrating a user task is transparent from a process participant’s point of view. When finishing a task after migration, process flow continues at the target activity.
Note that the migration plugin for Cockpit is only available in the Camunda Enterprise Edition.
Process Instance Migration API
Migration with all its features is accessible via Java and REST API that are available in both, Community and Enterprise version.
Create a migration plan:
MigrationPlan migrationPlan = processEngine.getRuntimeService() .createMigrationPlan("process:1", "process:2") .mapEqualActivities() .mapActivities("validateAddress", "validatePostalAddress") .mapActivities("archiveApplication", "archiveApplication") .build();
List<String> processInstanceIds = ...; runtimeService.executeMigrationPlan(migrationPlan, processInstanceIds);
In the current state, you can:
- Migrate user task instances
- Remove and add sub processes
- Remove, migrate, and add boundary events
See our documentation for details.
With alpha2, a tenant id can be used to discriminate data that belongs to different tenants. While this separates tenant data, storage resources like the database schema and tables as well as execution resources like the job executor thread pool are shared. Scaling the number of tenants that use the BPM platform becomes less costly.
Make a deployment for a tenant:
repositoryService .createDeployment() .tenantId("tenant1") .addClasspathResource("processes/process.bpmn") .deploy();
Start a process instance:
runtimeService .createProcessInstanceByKey("process") .processDefinitionTenantId("tenant1") .execute();
And restrict queries:
List<Task> tasksForTenant1 = taskService .createTaskQuery() .tenantIdIn("tenant1") .list();
Extended Support for External Tasks
External tasks can be used to cross technological boundaries when implementing processes. This release enables implementing the following activities externally:
- Business Rule Task
- Message-Throwing End Event
- Message-Throwing Intermediate Event
- Send Task
BPMN Model API Improvements
The BPMN model API and its fluent builder are great tools for focused unit testing. This release extends the fluent builder by the following features:
- Timer, message, signal, error and escalation events
- Execution listeners
- Sequential and parallel multi-instance
- Camunda input/output parameters with name and value
Creating a BPMN 2.0 model with a multi-instance activity is now:
BpmnModelInstance processModel = Bpmn.createExecutableProcess("process") .startEvent() .userTask("userTask1") .multiInstance() .parallel() .cardinality("3") .done() .endEvent() .done()
If you have feedback on the new release, please comment on this post or reach out in the forums.