A Zeebe worker to manage manual/user tasks in a workflow. It shows all jobs of type user
as a task/todo-list. A user can complete the tasks with requested data.
Example BPMN with service task:
<bpmn:serviceTask id="userTask" name="User Task">
<bpmn:extensionElements>
<zeebe:taskDefinition type="user" />
<zeebe:taskHeaders>
<zeebe:header key="name" value="My User Task" />
<zeebe:header key="description" value="My first user task with a form field." />
<zeebe:header key="formFields" value="[{\"key\":\"orderId\", \"label\":\"Order Id\", \"type\":\"string\"}]" />
<zeebe:header key="assignee" value="demo" />
</zeebe:taskHeaders>
</bpmn:extensionElements>
</bpmn:serviceTask>
- the worker is registered for jobs of type
user
- optional custom headers:
name
- the name of the task (default: the element id)description
- a description what is the task abouttaskForm
(HTML) - the form to show and provide the task data (example task form)formFields
(JSON) - the form fields for the default task form, if no task form is setassignee
- the name of the user which should be assigned to the taskcandidateGroup
- the name of the group which can claim the task
- optional variables:
assignee
- the name of the user which should be assigned to the task, if not set as headercandidateGroup
- the name of the group which can claim the task, if not set as header
If no taskForm
is defined then the default task form is used. It takes the formFields
and renders a form with all defined fields. The fields are defined as JSON list, for example:
[{
\"key\":\"orderId\",
\"label\":\"Order Id\",
\"type\":\"string\"
}, {
\"key\":\"price\",
\"label\":\"Price\",
\"type\":\"number\"
}
]`)
The type
must be one of: string, number, boolean.
The docker image for the worker is published to DockerHub.
docker pull camunda/zeebe-simple-tasklist:latest
- ensure that a Zeebe broker is running with a Hazelcast exporter (>= 0.8.0-alpha1)
- forward the Hazelcast port to the docker container (default:
5701
) - configure the connection to the Zeebe broker by setting
zeebe.client.broker.contactPoint
(default:localhost:26500
) - configure the connection to Hazelcast by setting
zeebe.client.worker.hazelcast.connection
(default:localhost:5701
)
For a local setup, the repository contains a docker-compose file. It starts a Zeebe broker with the Hazelcast exporter and the worker.
mvn clean install -DskipTests
cd docker
docker-compose up
-
Download the latest worker JAR (zeebe-simple-tasklist-%{VERSION}.jar )
-
Start the worker
java -jar zeebe-simple-tasklist-{VERSION}.jar
-
Go to http://localhost:8081
-
Login with
demo/demo
The worker is a Spring Boot application that uses the Spring Zeebe Starter. The configuration can be changed via environment variables or an application.yaml
file. See also the following resources:
By default, the port is set to 8081
and the admin user is created with demo/demo
.
zeebe:
client:
worker:
defaultName: zeebe-simple-tasklist
defaultType: user
threads: 2
hazelcast:
connection: localhost:5701
connectionTimeout: PT30S
tasklist:
defaultTaskForm: /templates/default-task-form.html
adminUsername: demo
adminPassword: demo
job.timeout: 2592000000 # 30 days
broker.contactPoint: 127.0.0.1:26500
security.plaintext: true
spring:
datasource:
url: jdbc:h2:~/zeebe-tasklist
user: sa
password:
driverClassName: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: update
server:
port: 8081
Build with Maven
mvn clean install
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].