Quarkus Extension Configuration

This section of the EximeeBPMS Quarkus extension documentation covers the configuration options for the process engine within a Quarkus application.

The documentation on the EximeeBPMS Quarkus Extension Configuration is intended for Quarkus application developers. It requires some knowledge on Quarkus CDI support, Quarkus configuration, as well as EximeeBPMS Process Engine Configuration properties.

Process Engine Configuration

An instance of the QuarkusProcessEngineConfiguration class configures the process engine in a Quarkus application. A QuarkusProcessEngineConfiguration instance provides the following defaults:

Property nameDescriptionDefault value
jobExecutorActivateThe job executor is activated.true
transactionsExternallyManagedTransactions are externally managed.true
databaseSchemaUpdateThe Database Configuration section goes into more details on this propery and the resulting behavior.true
idGeneratorAn instance of StrongUuidGenerator is used.StrongUuidGenerator
jdbcUrl,
jdbcUsername,
jdbcPassword,
jdbcDriver
No JDBC configuration is present since a Quarkus datasource should be configured and used.null
historyEximeeBPMS Cockpit works best with history level FULL.full

Quarkus allows to configure a Quarkus application via a MicroProfile Config source. You can read more about configuring a Quarkus application in the Quarkus configuration page. The EximeeBPMS Quarkus extension docs use the application.properties format in the examples, but you can use any supported Quarkus config source.

You can set any process engine configuration properties under the quarkus.eximeebpms prefix. The Process Engine Configuration Properties page documents all the available properties. Please convert any property names from camelCase to the kebab-case format, like in the following example:

quarkus.eximeebpms.generic-config.cmmn-enabled=false
quarkus.eximeebpms.generic-config.dmn-enabled=false
quarkus.eximeebpms.generic-config.history=none

Programmatic Configuration

You can also configure the process engine programmatically, by providing a QuarkusProcessEngineConfiguration CDI bean.

@ApplicationScoped
public class MyCustomEngineConfig extends QuarkusProcessEngineConfiguration {
  public MyCustomEngineConfig() {
    // your custom configuration is done here
    setProcessEngineName("customEngine");
  }
}

Note that values of properties set in a QuarkusProcessEngineConfiguration instance have a lower ordinal than properties defined in a Quarkus config source.

In the above example, a QuarkusProcessEngineConfiguration CDI bean defines “customEngine” as the processEngineName. However, if you define the following in an application.properties file

quarkus.eximeebpms.generic-config.process-engine-name=quarkusEngine

then “quarkusEngine” will be used as the process engine name since Quarkus config sources have a higher ordinal than a QuarkusProcessEngineConfiguration CDI bean.

Job Executor Configuration

As with the process engine configuration properties above, you can set any job executor configuration properties under the quarkus.eximeebpms.job-executor prefix. The Job Executor Configuration Properties page documents all the available properties. Convert any property names you intend to use from camelCase to the kebab-case format, like in the following example:

quarkus.eximeebpms.job-executor.generic-config.max-jobs-per-acquisition=5
quarkus.eximeebpms.job-executor.generic-config.lock-time-in-millis=500000
quarkus.eximeebpms.job-executor.generic-config.wait-time-in-millis=7000
quarkus.eximeebpms.job-executor.generic-config.max-wait=65000

Quarkus Extension Configuration

In addition to the general process engine and job executor configuration properties mentioned in the previous sections, the EximeeBPMS Quarkus extension provides some Quarkus-specific configuration properties. They can be set through a Quarkus config source, but not through the QuarkusProcessEngineConfiguration class. You can find all the Quarkus-specific properties in the following table:

PrefixProperty nameDescriptionDefault value
Data Source
quarkus.eximeebpms.datasourceSpecifies which Quarkus datasource to use. If not defined, the primary Quarkus datasource will be used. For configuring a Quarkus Datasource, have a look on the Quarkus Datasource page.<default>
Job Executor
quarkus.eximeebpms.job-executor.thread-pool.max-pool-sizeSets the maximum number of threads that can be present in the thread pool.10
.queue-sizeSets the size of the queue which is used for holding tasks to be executed.3

Persistence

The Engine Extension integrates with a JDBC Connection Pool and a Jakarta Transaction Manager provided by Quarkus. The latter allows you to integrate your business logic into database transactions of the Engine. Read more about it under JTA Transaction Integration. A datasource is required to run the EximeeBPMS process engine.

Choose from multiple datasources

When multiple datasources are available in your application, you can choose the one the Engine Extension should use by its name via the eximeebpms.datasource configuration property. Consider the example configuration below:

quarkus.datasource.engine-datasource.db-kind=oracle
quarkus.datasource.engine-datasource.username=my-username
quarkus.datasource.engine-datasource.password=my-password
quarkus.datasource.engine-datasource.jdbc.url=jdbc:oracle:thin:@localhost:1521:ORCL

quarkus.eximeebpms.datasource=engine-datasource

Example

The following is an example of a Quarkus application.properties file that provides custom values for the process engine configuration, job executor and data source:

# process engine configuration
quarkus.eximeebpms.generic-config.cmmn-enabled=false
quarkus.eximeebpms.generic-config.dmn-enabled=false
quarkus.eximeebpms.generic-config.history=none

# job executor configuration
quarkus.eximeebpms.job-executor.thread-pool.max-pool-size=12
quarkus.eximeebpms.job-executor.thread-pool.queue-size=5
quarkus.eximeebpms.job-executor.generic-config.max-jobs-per-acquisition=5
quarkus.eximeebpms.job-executor.generic-config.lock-time-in-millis=500000
quarkus.eximeebpms.job-executor.generic-config.wait-time-in-millis=7000
quarkus.eximeebpms.job-executor.generic-config.max-wait=65000
quarkus.eximeebpms.job-executor.generic-config.backoff-time-in-millis=5

# custom data source configuration and selection
quarkus.datasource.my-datasource.db-kind=h2
quarkus.datasource.my-datasource.username=eximeebpms
quarkus.datasource.my-datasource.password=eximeebpms
quarkus.datasource.my-datasource.jdbc.url=jdbc:h2:mem:eximeebpms;TRACE_LEVEL_FILE=0;DB_CLOSE_ON_EXIT=FALSE
quarkus.eximeebpms.datasource=my-datasource