Practice

Camunda 8 in an hour: running your first process

A practical guide: installing Camunda 8 locally, modeling a simple process, and starting an instance via the REST API.

🎧 Listen to this article

In this article we set up Camunda 8 on a local machine step by step and run our first BPMN process. The goal is to get a working environment in an hour where you can experiment with models.

What you will need

  • Docker and Docker Compose (current versions)
  • Camunda Modeler (a desktop app, downloadable from camunda.com)
  • A browser to access the web consoles
  • A basic understanding of REST APIs

Installing via Docker Compose

Camunda provides an official docker-compose file for local development. Create a camunda-local folder and download the official compose there:

mkdir camunda-local && cd camunda-local
curl -L -O https://github.com/camunda/camunda-platform/raw/main/docker-compose.yaml
docker compose up -d

The platform will spin up several containers:

After startup (1–2 minutes) check Operate in the browser. The default login/password is demo/demo.

The first model

Open Camunda Modeler and create a new BPMN diagram. Draw a simple process:

  1. Start Event → Service Task “Calculate amount” → User Task “Approve” → XOR gateway → End event “Approved” / “Rejected”

For the service task set the type to “Service Task” and in the properties specify Task Type: calculate-amount. This is the “address” of the handler that must be registered on the platform.

For the user task set the type to “User Task” and Assignee: demo.

Save the model as loan-process.bpmn.

Deploying the model

In Modeler click Deploy current diagram. Specify the Zeebe endpoint: localhost:26500. The model loads onto the platform.

After deployment you will see the new process in Operate under Processes.

Starting an instance

You can start the process through Operate (the Start Process Instance button) or via the REST API:

curl -X POST http://localhost:8080/v2/process-instances \
  -H 'Content-Type: application/json' \
  -d '{
    "processDefinitionId": "loan-process",
    "variables": {
      "applicantId": "12345",
      "amount": 50000
    }
  }'

Open Operate — you will see the running instance, stopped at the service task (waiting for a handler).

Registering a worker

Service tasks in Zeebe are carried out by “workers” — external processes that connect to the platform and take on the work. A simple worker in Node.js:

const { ZBClient } = require('zeebe-node');
const zbc = new ZBClient('localhost:26500');

zbc.createWorker({
  taskType: 'calculate-amount',
  taskHandler: (job) => {
    const { amount } = job.variables;
    const fee = amount * 0.02;
    return job.complete({ fee, totalAmount: amount + fee });
  }
});

Start the worker. In Operate you will see the service task complete and the process move to the user task.

Completing the user task

Open Tasklist in the browser. Log in as demo/demo. You will see the “Approve” task. Open it, fill in the form (if one was configured) and click Complete.

The process passes through the XOR gateway and finishes. In Operate you can see the full execution history.

Next steps

The basic environment is ready. Further steps to go deeper:

  • Learn FEEL for conditional expressions in gateways
  • Master incident management for error handling
  • Connect external systems via REST/messaging
  • Configure multi-instance and timers
  • Learn DMN for business rules

All of this is covered in the official Camunda documentation. The local environment from this article is an excellent playground for experiments.

#Camunda#Practice#BPMN#Tutorial
All articles Home