The Camunda RPA Runtime is designed to bridge the gap between Robotic Process Automation (RPA) bots and the Camunda workflow engine, enabling you to seamlessly integrate your task workers with Camunda.
Downloads and details for container images are available on the Releases page.
The RPA Worker can source its configuration either from a configuration file, or environment variables. The RPA Worker
will look for a file named rpa-worker.properties
in the current directory.
Connecting to a Camunda cluster requires providing the configuration for the Zeebe client. The RPA Worker uses the Spring Zeebe client, and so uses the same Configuration Properties.
camunda.client.mode=selfmanaged camunda.client.zeebe.grpc-address=http://zeebe.camunda.local camunda.client.zeebe.rest-address=http://zeebe.camunda.local
camunda.client.mode=saas camunda.client.auth.client-id=<client id> camunda.client.auth.client-secret=<client secret> camunda.client.cloud.cluster-id=<cluster id> camunda.client.cloud.region=<region> camunda.rpa.secrets.backend=camunda
camunda.client.mode=selfmanaged camunda.client.cloud.cluster-id=<cluster id> camunda.client.cloud.region=<region> camunda.client.auth.issuer=https://login.cloud.dev.ultrawombat.com/oauth/token camunda.client.auth.client-id=<client id> camunda.client.auth.client-secret=<client secret> camunda.client.zeebe.rest-address=https://${camunda.client.cloud.cluster-id}.${camunda.client.cloud.region}.zeebe.dev.ultrawombat.com camunda.client.zeebe.grpc-address=https://${camunda.client.cloud.cluster-id}.${camunda.client.cloud.region}.zeebe.dev.ultrawombat.com camunda.client.zeebe.base-url=https://${camunda.client.cloud.region}.zeebe.dev.ultrawombat.com/${camunda.client.cloud.cluster-id} camunda.client.zeebe.audience=zeebe.dev.ultrawombat.com camunda.rpa.zeebe.auth-endpoint=https://login.cloud.dev.ultrawombat.com/oauth camunda.rpa.secrets.backend=camunda camunda.rpa.secrets.camunda.token-audience=secrets.dev.ultrawombat.com camunda.rpa.secrets.camunda.secrets-endpoint=https://cluster-api.cloud.dev.ultrawombat.com
Tip
|
When creating an API client in the Camunda Cloud Console, the autogenerated configuration file provided contains most of the necessary configuration for connecting to production Camunda SaaS stacks. |
The Zeebe startup check and subscriptions can be disabled by setting
camunda.client.zeebe.enabled
to false.
Although the Zeebe Client itself cannot be disabled and it will still log,
the application will keep running allowing local working and these messages can be ignored.
When the RPA Worker sets up its Python environment it will install a default set of dependencies.
Additional dependencies can be installed by providing a supplementary requirements.txt
file with the
camunda.rpa.python.extra-requirements
property.
numpy==1.26.4 jmespath
camunda.rpa.python.extra-requirements=extra-requirements.txt
If the extra requirements files changes, the RPA Worker will install the new dependencies at the next restart, although no dependencies will be removed. If the Python environment is deleted then the RPA Worker will recreate it from scratch.
The RPA Worker supports two runtimes for executing Robotframework.
The Python runtime creates a dedicated Virtual Environment using an available Python distribution. The Python distribution may already be present on the host, or it may be provisioned automatically by the RPA Worker on platforms where this is supported.
The first time the environment is created the RPA Worker will install the necessary base dependencies into the environment. It will also install, if configured, any additional user-supplied extra requirements. If the base requirements change, such as a new version of the RPA Worker updating these dependencies, or the extra requirements are updated, then the RPA Worker will update the environment with the new dependencies automatically.
As dependencies are fetched from the internet, the Python Runtime requires an internet connection.
The Static Runtime is a pre-built Python environment which is bundled with the RPA Worker. It contains a Python interpreter, as well as all the base dependencies, statically linked together in a single executable. As such, when using the Static Runtime it is not possible to install any extra requirements.
As the base dependencies are included in the Static Runtime, it does not require an internet connection.
The choice of runtime can be configured via the camunda.rpa.python-runtime.type
configuration property.
It supports three values: auto
(the default), static
, and python
.
When the runtime is set to auto
, the RPA Worker will run the following checks to see if the Python Runtime is
supported:
-
If there is an existing Python environment created by the RPA Worker then this will be used
-
If an internet connection is detected, AND:
-
There is a local Python distribution at a supported version (>=3.10,<3.12) then this will be used to create a new Virtual Environment, OR
-
There is no local Python, but it can be provisioned automatically on the current platform (Windows), then Python will be provisioned in this way and used to create a new Virtual Environment
-
If these conditions are not satisfied then the RPA Worker will fall back to the Static Runtime.
Note
|
The Static Runtime is not supported in the JAR distribution of the RPA Worker |
The RPA Worker makes the following environment variables available to the Robot execution:
Variable | Description |
---|---|
|
The workspace ID of the current job |
|
The full path to the workspace of the current job |
|
The name of the currently executing script |
|
The execution key of the currently executing script |
|
The Zeebe Job Key which triggered the Robot execution |
|
The Zeebe Job type |
|
The current BPMN process ID |
|
The current process instance key |
Property | Description | Default Value |
---|---|---|
Python Properties |
||
camunda.rpa.python.path |
The directory in which the Python environment will be created |
|
camunda.rpa.python.download-url |
The URL from which the portable Python will be downloaded if no system Python is available (Windows only) |
|
camunda.rpa.python.download-hash |
The expected SHA-256 hash of the file at |
|
camunda.rpa.python.extra-requirements |
The path to additional Python requirements that should be installed when setting up the Python environment |
None |
camunda.rpa.python.interpreter |
Path to a specific Python interpreter to use, rather than searching the path |
None |
camunda.rpa.python-runtime.type |
Which runtime to use for executing Robot. Can be |
|
Robot Properties |
||
camunda.rpa.robot.default-timeout |
The default timeout to use when no other timeout is specified (ISO 8601 duration string) |
|
camunda.rpa.robot.fail-fast |
Stops task execution if any task fails |
|
Sandbox Properties |
||
camunda.rpa.sandbox.enabled |
Whether the script evaluation API should be available |
|
Zeebe Properties |
||
camunda.client.zeebe.enabled |
Whether the Zeebe integration should be enabled |
|
camunda.rpa.zeebe.rpa-task-prefix |
The prefix used to construct the task subscription key |
|
camunda.rpa.zeebe.worker-tags |
The worker tag(s) this worker should subscribe to (comma-separated) |
|
camunda.rpa.zeebe.max-concurrent-jobs |
How many Robot jobs from Zeebe to run concurrently |
|
camunda.rpa.zeebe.auth-endpoint |
The authentication endpoint that should be used for authenticating before sending requests |
|
camunda.client.zeebe.audience |
The token audience to use when authenticating for Zeebe |
|
camunda.client.cloud.region |
The region for Camunda SaaS |
None |
camunda.client.cloud.cluster-id |
The cluster ID for Camunda SaaS |
None |
camunda.client.zeebe.base-url |
The region for Camunda SaaS |
|
camunda.client.auth.client-id |
The client ID to use when authenticating with Zeebe |
None |
camunda.client.auth.client-secret |
The client secret to use when authenticating with Zeebe |
None |
See the Spring Zeebe Configuration Reference for other supported properties |
||
Secrets Properties - General |
||
camunda.rpa.secrets.backend |
The secrets provider backend |
|
Secrets Properties - Camunda ( |
||
camunda.rpa.secrets.camunda.secrets-endpoint |
The endpoint providing the Camunda secrets service |
|
camunda.rpa.secrets.camunda.secrets.token-audience |
The token audience to use when authenticating for secrets |
|
General Properties |
||
server.address |
Network address to which the server should bind |
|
logging.file.name |
Output file for log file (non-containerised) |
|
The RPA Worker will source its configuration from configuration files and/or environment variables. The precedence order is documented in Spring’s Externalized Configuration documentation.
A configuration file can be a Properties or a YAML document.
It can have the name application
or rpa-worker
.
It can be placed in the working directory of the Worker, or in a directory named config
therein.
The following are all valid paths to RPA Worker configuration files:
-
rpa-worker.properties
-
application.properties
-
rpa-worker.yaml
-
application.yaml
-
config/rpa-worker.properties
-
config/application.properties
-
etc
Preferable for container-based deployments, the RPA Worker can source its configuration from environment variables. The name of the environment variables follow Spring’s Binding Rules, which can be briefly summarised as:
-
Convert the property name to upper-case
-
Replace dots with underscores
-
Remove hyphens
For example camunda.rpa.zeebe.worker-tags
would become CAMUNDA_RPA_ZEEBE_WORKERTAGS
.
Launching a dev container with Zeebe connection details, mapping the Worker’s listener port to the host, might look like:
$ docker run --rm -it \
-p 36227:36227 \
-e CAMUNDA_CLIENT_MODE=saas \
-e CAMUNDA_CLIENT_AUTH_CLIENTID=abc123 \
-e CAMUNDA_CLIENT_AUTH_CLIENTSECRET=def234 \
-e CAMUNDA_CLICNE_CLUSTERID=ghi345 \
-e CAMUNDA_CLIENT_REGION=lpp-1 \
ghcr.io/camunda/rpa-worker:<version>