Configuration - vanillabp/businesscockpit-process-engine-api-adapter GitHub Wiki
This page names every key the Business Cockpit reads in an application whose workflows run through the Process-Engine-API. There is no version-1 table. The Business Cockpit supported Camunda 7 and Camunda 8 in Version 1, and this integration is new with Version 2.
-
Where the keys live
The four sections the cockpit is configured in, and which of them wins. -
Where the reports go
The cockpit server's address, or the Kafka brokers, and the templates. -
What a workflow module tells the cockpit
Where the module answers, how its forms are served, in which languages it reports, and what a single workflow of it says for itself. -
The one key of this half
How many delivered user tasks a node remembers, and why it has to remember any. -
What the engine adapter is configured with
The two keys of the Process-Engine-API adapter which change what the cockpit sees.
Every key is the key version 1 of the Business Cockpit read, in the place version 1 read it. So an application which comes from one of the other two engines brings its configuration along unchanged:
vanillabp.cockpit.<key>
vanillabp.workflow-modules.<moduleId>.cockpit.<key>
vanillabp.workflow-modules.<moduleId>.workflows.<process>.cockpit.<key>
vanillabp.workflow-modules.<moduleId>.workflows.<process>.user-tasks.<task>.cockpit.<key>
The most specific value wins per key. What a user task says beats what its workflow says, and what a workflow says beats what its workflow module says. What holds for the whole application is written once at the top and exists nowhere else: the transport, the templates and the two switches.
VanillaBP reads nothing below vanillabp.cockpit, so the cockpit binds that part of the tree itself
on both platforms. On Quarkus that binding is also what lets the application start, because a key
below vanillabp which nothing declares ends the startup there. A misspelled key ends the Quarkus
build with a message naming it and the key it was nearest to, and a key of version 1 which is gone
ends the build with what became of that key. Spring Boot ignores both. A workflow module's own
defaults file (<moduleId>.yaml next to its BPMN files) carries these keys as well, below
everything the application itself writes.
Exactly one transport is configured. Neither of them, or both, ends the boot with a message naming the keys of both.
These keys stand below vanillabp.cockpit.
| Key | What it is |
|---|---|
user-tasks-enabled |
false stops user tasks from being reported at all |
workflow-list-enabled |
false stops workflows from being reported at all |
rest.base-url |
The address of the cockpit server's BPMS API, and with it the choice of the REST transport |
rest.authentication.basic |
true sends a basic authentication with every report |
rest.authentication.username, rest.authentication.password
|
The user it is sent with |
rest.authentication.oauth.base-url |
Where tokens are issued, and with it the choice of the client-credentials flow |
rest.authentication.oauth.client-id, rest.authentication.oauth.client-secret
|
The client the token is asked for |
rest.authentication.oauth.basic |
true sends the client in an Authorization header rather than in the token request |
rest.connect-timeout, rest.read-timeout
|
How long connecting and answering may take, as a number of milliseconds or written with a unit (1500ms, PT20S); 1.5 and 10 seconds by default |
rest.proxy.host, rest.proxy.port
|
The HTTP proxy the cockpit server is reached through |
rest.proxy.username, rest.proxy.password
|
The user that proxy expects, where it expects one |
rest.verify-ssl |
false switches the certificate check off altogether |
rest.ssl-truststore-filename, rest.ssl-truststore-password
|
The PKCS12 file the server's certificate is checked against |
kafka.bootstrap-servers |
The brokers, and with them the choice of the Kafka transport |
kafka.topics.user-task |
The topic user-task reports go to |
kafka.topics.workflow |
The topic workflow reports go to |
kafka.topics.workflow-module |
The topic a workflow module registers itself on |
kafka.properties.<name> |
Any further producer setting, handed to the client unchanged |
template-loader-path |
The directory the title templates are loaded from |
The client-credentials flow configures its own connection. connect-timeout, read-timeout,
verify-ssl, ssl-truststore-filename, ssl-truststore-password and proxy.* below
rest.authentication.oauth describe the way to the authorization server and inherit nothing from
rest.*.
There is no key which switches a request log on. The REST client logs through SLF4J, so set the
logger io.vanillabp.cockpit.bpms.api.v1_1.BpmsApi to DEBUG to see what is sent.
These stand below vanillabp.workflow-modules.<moduleId>.cockpit, because that is what they are
about.
| Key | What it is |
|---|---|
workflow-module-uri |
Where the module answers the cockpit's provider APIs |
ui-uri-type |
A name agreed with your cockpit user interface; VanillaBP knows none |
ui-uri-path |
Where the module's forms are served from |
i18n-languages |
The languages titles are reported in, written as a list |
bpmn-description-language |
The language the names in the BPMN files are written in; mandatory without templates |
group-hierarchy.<group> |
Which groups a group stands for, written as a list |
template-path |
The segment this module contributes to the template lookup path |
initiator-source |
Who answers the initiator of this module's reports: by-application where a details provider of yours sets it, system where the module knows no action a user causes. It has no default. A reporting module which sets it at no level does not start |
A gap is reported at startup, and one boot reports every gap of these keys. Each line names the key which fixes it. The one key of this half is read later. So a boot which ends on the keys above does not report that key yet. A workflow module which writes none of these keys reports nothing to the cockpit, and the log says so while the application starts.
Four of these mean something for a single workflow as well, and one of them for a single user task.
Both levels have a cockpit section of their own:
vanillabp:
workflow-modules:
taxi-ride:
cockpit:
i18n-languages:
- en
- de
workflows:
TaxiRide:
cockpit:
i18n-languages:
- fr
bpmn-description-language: fr
template-path: rides
initiator-source: by-application
user-tasks:
approve:
cockpit:
template-path: approval| Key | Default | What it is |
|---|---|---|
process-engine-api.remembered-user-tasks |
1000 |
How many delivered user tasks one node keeps in memory |
It stands below vanillabp.cockpit and nowhere else. What it sizes is one memory per node, shared
by every workflow module, so a value per module would promise a division which does not exist. There
is no such key below a workflow module. One written there ends the boot on Quarkus and is ignored on
Spring Boot, like every other key nothing declares. A value which is not a positive number ends the
boot on either platform, naming the key.
Why a node has to remember anything: every other BPMS can read the state of a task from its engine
whenever it is asked. The Process-Engine-API has no task query and no history. So what arrived with
the delivery is all there is, and the node keeps it until the task is gone. The report of a delivery is
built right away, so no report waits on this memory. The questions which come later do: how a task
ended, which tasks of a case are open, and what getUserTask shows. A node which starts fresh
answers none of them.
One key of the VanillaBP Process-Engine-API adapter changes what the cockpit gets to see:
| Key | What it changes |
|---|---|
vanillabp.adapters.<id>.name-clash-avoidance |
none or use-prefix. The cockpit reports the plain identifiers either way, because it asks VanillaBP what a prefixed one was called |
by-adapter, the platform's default, is refused at startup by the adapter itself, because the
Process-Engine-API has no tenants to keep workflow modules apart with. Choose none or
use-prefix.
