Camunda BPM 7.5.0-alpha3 Released

Camunda 7.5.0-alpha3 is here. The highlights of this release are:

  • New Design for Camunda Tasklist
  • New Accessibility Features for Tasklist Users
  • New Cockpit Dashboard
  • Improved Support for Multi Tenancy
  • More Powerful Process Instance Migration
  • 42 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.

New Design for Camunda Tasklist

With this release, Tasklist gets a new look:

All information about this change can be read in a [dedicated blogpost]([ref "/post/2016/03/tasklist-2016-design.md"]).

Accessibility Features for Tasklist Users

The accessibility of Tasklist has been improved as well. All elements and buttons are now accessible using keyboard navigation. There are also keyboard shortcuts which improve productivity of tasklist users. It is also possible to add additional shortcuts and use them in Tasklist plugins.

New Cockpit Dashboard & Navigation

The Cockpit dashboard is the main entry point for monitoring and operations. Over the past releases, a lot of features were added to Camunda Cockpit. As a consequence, the dashboard became more and more crowded.

With this release we provide a first snapshot of where we want to go with the dashboard. The new dashboard provides an overview over four categories in Cockpit: Processes, Decisions, Deployments and Reporting. In addition, it shows some aggregated counts like the number of deployed processes or running process instances. Note that we have not done any actual styling on this so you can expect it to look a bit "fancier" in the final release 🙂

As you would expect, the new dashboard can still be extended with plugins and custom functionality. See the documentation for a list of all plugin points in Cockpit

Improved Support for Multi Tenancy

With 7.5, Camunda introduces multi tenancy features which allow users to manage multiple tenants (aka isolated workspaces) in the same database over a single API entry point. Compared to the last alpha release, alpha3 enhances support for multi tenancy by making the following APIs and features tenant aware:

  • Message Correlation API
  • Signal API
  • Suspend / Activate API
  • Support for working with shared resources (Example: deploy a process definition for all tenants but assign a tenant’s instances to the tenant’s workspace)
  • Call Activities
  • DMN Decisions and Business Rule Tasks
  • History
  • Tenant Ids in Cockpit and Tasklist

More Powerful Process Instance Migration

With this release it is possible to migrate process instances which have multi-instance activities. In addition, instances can be migrated asynchronously using the new batch API.

This is code example using the (open source) Java API:

ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration().buildProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();

repositoryService.createDeployment()
  .addModelInstance("process1.bpmn", Bpmn.createExecutableProcess("coffee-process")
    .startEvent()
      .userTask("prepare-coffe")
    .endEvent()
    .done())
  .deploy();

ProcessInstance pi = runtimeService.startProcessInstanceByKey("coffee-process");
Task prepareCoffeeTask = taskService.createTaskQuery().singleResult();

// no wait, if I prepare this coffee, I cannot drink it :(

repositoryService.createDeployment()
  .addModelInstance("process1.bpmn", Bpmn.createExecutableProcess("coffee-process")
    .startEvent()
      .userTask("prepare-coffe")
      .userTask("drink-coffee")
    .endEvent()
    .done())
  .deploy();

ProcessDefinition v1 = repositoryService.createProcessDefinitionQuery().processDefinitionVersion(1).singleResult();
ProcessDefinition v2 = repositoryService.createProcessDefinitionQuery().processDefinitionVersion(2).singleResult();

MigrationPlan migrationPlan = runtimeService.createMigrationPlan(v1.getId(), v2.getId())
  .mapEqualActivities()
  .build();

runtimeService
  .newMigration(migrationPlan)
  .processInstanceIds(Collections.singletonList(pi.getId()))
// .executeAsync()   => would perform the migration in the background
  .execute();

// Yäy, now I can prepare *and* drink coffee. I really like Camunda! :)
taskService.complete(prepareCoffeeTask.getId()); // awesome that the task has preserved id with migration :)
// drink coffee task is available:
assertNotNull(taskService.createTaskQuery().taskDefinitionKey("drink-coffe").singleResult());

The Cockpit interface for the migration (Enterprise Edition only) now uses a page flow, providing separate pages for the migration mapping, instance selection and confirmation.

Feedback Welcome

If you have feedback on the new release, please comment on this post or reach out in the new forum.

  • Communication Between Loosely Coupled Microservices

    In our recent webinar titled “Communication Between Loosely Coupled Microservices” we got a lot of great questions and because of the limited time some were left unanswered. As community questions are really important to me I want to follow my tradition to answer remaining questions in a blog post (as I have for example also done roughly a year ago in “Webinar FAQ for Monitoring & Orchestrating Your Microservices Landscape using Workflow Automation”). What Was The Webinar About? You can find the slides (here) and recording (here) online. The webinar covered different styles of communication. This was explained by looking at how ordering food works: Synchronous blocking: A call uses a synchronous protocol, like HTTP, and blocks for the result. This is you, calling a pizza...

    Read more
  • Swagger API access with Camunda Platform

    Have you ever fired up the Camunda Platform Docker instance and wished you could do live-calls to the API via a swagger server? We have! And like most things we wish we could do, we go out and make it happen. Coming Soon To be clear, this integration is coming to the official Camunda Platform Docker container with release 7.15. It’s just not ready yet. So this is really more of an interim solution rather than the be-all and end-all solution, but it works, and it makes sending API calls to a live instance of Camunda Platform a lot easier. So follow along and we’ll show you how to run it yourself. CORS is your friend, and not your friend In general, and...

    Read more
  • Send Slack Messages direct from Camunda Cloud

    This article is the fourth in a series exploring fun, straightforward ways you can control workflows using Camunda Cloud — have a read of the others for some background if you’d like to see Camunda Cloud in action with Restzeebe, without a line of code: Is there an alternative to Spaghetti? How can you Teach a Workflow to Execute a specific task? Automate manual tasks with Camunda and Trello Do you use Slack? How about adding a level of automation to this widely used collaboration tool, that is making email obsolete in many organizations? Let’s say you already widely use Slack in your company and want to receive an active notification when a new user has registered to your service? You can create...

    Read more