Not so long ago I wrote a series of posts about Flowable:

There are quite a few open source workflow engines to choose from.

I thought I'd take a look at Camunda.

Getting Started

The easiest way to get started with Camunda is to use a Docker image, for example:

docker pull camunda/camunda-bpm-platform:latest
docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest

The camunda-bpm-platform image includes three web applications:

Navigate to the Welcome page: http://localhost:8080/camunda-welcome/index.html and then sign in to the Tasklist web application using the default credentials (for admin access) Username: demo and Password: demo

You will then be redirected to the Tasklists's dashboard:

Camunda REST API

The camunda-bpm-platform image also includes Camunda's REST API.

For example, GET task

curl -i 'http://demo:demo@localhost:8080/engine-rest/task'

You should see output like:

[
    {
        "id": "9456e72c-211e-11ea-b0e6-0242ac110002",
        "name": "Assign Reviewer",
        "assignee": "demo",
        "created": "2019-12-17T22:43:00.864+0000",
        "due": null,
        "followUp": null,
        "delegationState": null,
        "description": null,
        "executionId": "945698fc-211e-11ea-b0e6-0242ac110002",
        "owner": null,
        "parentTaskId": null,
        "priority": 50,
        "processDefinitionId": "ReviewInvoice:2:9337bb88-211e-11ea-b0e6-0242ac110002",
        "processInstanceId": "945698fc-211e-11ea-b0e6-0242ac110002",
        "taskDefinitionKey": "assignReviewer",
        "caseExecutionId": null,
        "caseInstanceId": null,
        "caseDefinitionId": null,
        "suspended": false,
        "formKey": "embedded:app:forms/assign-reviewer.html",
        "tenantId": null
    }
]

OpenAPI (Swagger) docs

The camunda-bpm-platform image does not include any OpenAPI (Swagger) docs, however, I did find this project on GitHub.

Docker

To list all running containers:

docker container ls

You should see output like:

CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                                        NAMES
cb5d547b61da        camunda/camunda-bpm-platform:latest   "/sbin/tini -- ./cam…"   30 minutes ago      Up 30 minutes       8000/tcp, 9404/tcp, 0.0.0.0:8080->8080/tcp   camunda

You can stop a container using the following command:

docker container stop [name]

For example:

docker container stop camunda

What's Next

I'd like to add support for Single Sign On to Serendipity, so in the next post I'll take a look at Keycloak.

Source Code: