Camunda External Task Client (Java) 0.1.0-alpha2 Released

Recently we released the first alpha version
of the Camunda External Task Client (Java). Today we are happy to announce the second alpha release.

The External Task concept helps to decouple your services from the Workflow Engine.

The highlights of this release are:

  • Set variables to the local scope of External Tasks
  • Specify a response timeout to fetch and lock External Tasks (long polling)
  • More serialization formats to exchange object variables (XML and JAVA)

You can find the complete release notes here.

Handling Orders Example

This example showcases some of the new features. Let’s consider the following workflow:

A Workflow for Handling Orders

Make sure that you have an up and running Camunda Workflow Engine and deploy
the order handling workflow to it.

Next, create a Maven project and adjust the pom.xml by adding the following Maven coordinates:

<dependency>
  <groupId>org.camunda.bpm</groupId>
  <artifactId>camunda-external-task-client</artifactId>
  <version>0.1.0-alpha2</version>
</dependency>

Create a simple invoice class:

public class Invoice {
  public String id;

  public Invoice(String id) {
    this.id = id;
  }
}

Create a main class and add the following lines to it:

// bootstrap the client
ExternalTaskClient client = ExternalTaskClient.create()
  .baseUrl("https://localhost:8080/engine-rest")
  .asyncResponseTimeout(1000)
  .build();

// subscribe to the topic
client.subscribe("invoiceCreator")
  .handler((externalTask, externalTaskService) -> {

    // instantiate an invoice object
    Invoice invoice = new Invoice("A123");

    // create an object typed variable with the serialization format XML
    ObjectValue invoiceValue = Variables
      .objectValue(invoice)
      .serializationDataFormat("application/xml")
      .create();

    // add the invoice object and its id to a map
    Map<String, Object> variables = new HashMap<>();
    variables.put("invoiceId", invoice.id);
    variables.put("invoice", invoiceValue);

    // select the scope of the variables
    boolean isRandomSample = Math.random() <= 0.5;
    if (isRandomSample) {
      externalTaskService.complete(externalTask, variables);
    } else {
      externalTaskService.complete(externalTask, null, variables);
    }

    System.out.println("The External Task " + externalTask.getId() +
      " has been completed!");

  }).open();

Thread.sleep(1000 * 60 * 5);

Finally, run the application. You should see the following output:

The External Task 1d375217-2cfe-11e8-96c2-769e8e30ca9b has been completed!
The External Task 0857150d-2cfe-11e8-96c2-769e8e30ca9b has been completed!
...

The project sources of this example can be found in the documentation of the External Task Client.

What do you think about this release? Share your ideas and suggestions with us in the forum.

  • Monitoring Camunda Platform 7 with Prometheus

    Monitoring is an essential facet of running applications in a production system. Through this process, organizations collect and analyze data, and determine if a program is performing as expected within set boundaries. When combined with alerting, monitoring allows for detecting unexpected system behavior to mitigate exceptional situations as fast as possible. Furthermore, tracking the performance of a system enables organizations to improve those aspects that have the biggest impact with higher priority. One essential aspect of monitoring is the list of key metrics you want to observe. There are different categories of statistics that can be of interest here. To observe the defined metrics, there are plenty of application monitoring tools on the market today. They differ in many aspects...

    Read more
  • Securing Camunda 8 self-managed cluster and applications...

    Directory services are an effective way to manage an organization’s users, groups, printers, devices, and more. Most organizations accomplish this using Active Directory, Apache Directory, Oracle Internet Directory, or other similar tools. Recently I worked with a customer who wanted to see how he could secure the Camunda 8 Platform and process applications with such a directory. Their requirements consisted of: Allowing Directory users to access Camunda applications (Tasklist, Operate, Optimize) Accessing secured Tasklist & Operate APIs from our custom project Securing the custom project In this article, I’ll briefly explain the 3 easy steps taken to fulfill their requirements which include: Federate users from the Directory service into Keycloak Declare an application in Identity to access Camunda APIs Configure...

    Read more
  • Accelerate Connectivity with Camunda Platform 8.1

    We’re thrilled to announce Camunda Platform 8.1, the latest release of our process orchestration solution. This new version introduces features that accelerate connectivity to the many different systems and technologies that are required for true digital transformation, including: Create custom Connectors with our Integration Framework to accelerate connectivity New out-of-the-box Connectors for popular services Enhancements to Camunda Modeler that improve productivity Hot backups and official support for Amazon EKS and Red Hat OpenShift Plus, several upgrades requested by Camunda Platform 7 customers Organizations across all industries rely on complex technology stacks to adapt and enhance their operations in response to market dynamics, new disruptive companies, and increasing consumer expectations. Your technology stack likely includes everything from cutting-edge technologies to legacy...

    Read more

Ready to get started?

Still have questions?