Configuring INUBIT in the ibis.xml File
The file <SUITE-INSTALL-DIR>/inubit/server/ibis_root/conf/ibis.xml contains the base configuration required to successfully start the INUBIT Process Engine, specifically:
-
Database
-
Identity Provider
Configuration file
-
H2
-
DB2
-
MariaDB
-
MySQL
-
Oracle
-
Postgres
<?xml version='1.0' encoding='UTF-8'?>
<!-- INUBIT Process Engine configuration (ibis.xml).
The Process Engine reads this file during startup. It defines the connection to the INUBIT system
database (IBISDB), the identity provider and a number of global runtime settings.
Template usage:
This file is the template for H2. Copy it to "ibis.xml" into the same conf directory and adjust
at least the Database settings and initialRootUserPassword before the first start.
File format:
Properties/@version Version of the configuration format. Do not change.
Property/@name Name of the property. Names are case sensitive.
Property/@type Type of the value: Boolean, Integer, Long, Password, EncryptedString or Map.
Without this attribute the value is treated as a string.
Property/@encrypted Only for Password and EncryptedString: "true" if the value is stored encrypted.
Properties of type Map contain nested Property elements.
Properties that are missing from this file fall back to their built-in default values
(see com.inubit.ibis.server.cluster.NodeConfiguration). Most properties are evaluated during startup
only. LocalMaintenanceMode can also be changed at runtime and is then written back to this file;
after a successful startup the server keeps a copy of the file as ibis.xml.bak.1. -->
<Properties version="4.1">
<!-- Puts this node into local maintenance mode.
While maintenance mode is active the node stops processing new incoming messages of its listeners and
connectors, and the cluster event manager is notified so that backup nodes can take over. The property
can also be switched at runtime (for example with the maintenance command of the CLI client) and takes
effect without a restart.
Type: Boolean. Default: false -->
<Property name="LocalMaintenanceMode" type="Boolean">false</Property>
<!-- Enables verbose logging during server startup.
If true, the INUBIT, Infinispan and JGroups loggers are set to DEBUG until the log level of the server
configuration is applied; if false they start at ERROR. This switch is independent of the debug setting
in Workbench > Server Configuration.
Type: Boolean. Default: false -->
<Property name="ClusterDebug" type="Boolean">false</Property>
<!-- Identity provider used for authentication and user management.
inubit Users are managed by the INUBIT Process Engine itself.
keycloak Users are managed by an external Keycloak server; the connection details are read from the
file configured in IdentityProviderConfiguration.
The value is compared case-insensitively; any other or empty value falls back to "inubit".
Type: String. Default: inubit -->
<Property name="IdentityProvider">inubit</Property>
<!-- Name of the file that holds the connection details of the external identity provider.
Only evaluated for IdentityProvider=keycloak. The name is resolved relative to the conf directory of the
installation, so a plain file name such as "keycloak.json" is sufficient.
Type: String. Default: keycloak.json -->
<Property name="IdentityProviderConfiguration">keycloak.json</Property>
<!-- Initial password of the built-in administrator "root".
The value is used only while the default users are created, that is when the root user does not yet
exist in the user store. It must not be empty, otherwise the startup fails with "INITIAL PASSWORD IS
MISSING". Changing the value later has no effect on an already existing root user.
The installer replaces PLACEHOLDER during installation routine.
Change the password afterwards through the Workbench.
Type: String. No default. -->
<Property name="initialRootUserPassword">PLACEHOLDER</Property>
<!-- Connection settings of the INUBIT system database (IBISDB).
These settings are used to build the internal Tomcat JDBC connection pool for the DataSource that is
bound under DataSourceLocation. This template is for H2.
Type: Map -->
<Property name="Database" type="Map">
<!-- Fully qualified name of the JDBC driver class.
The JDBC JAR must be placed inside the <inubit-installdir>/inubit/server/process_engine/webapps/ibis/WEB-INF/lib.
Otherwise the startup fails.
Type: String. Required. -->
<Property name="driverClass">org.h2.Driver</Property>
<!-- JDBC URL of the system database.
The database flavour is derived from the URL prefix (here: "jdbc:h2:").
The placeholder ${ibis.root.directory} is replaced by the INUBIT root directory at runtime, so the
default points to an embedded H2 database inside the installation. DB_CLOSE_ON_EXIT=FALSE keeps the
database open until the server shuts it down itself.
Type: String. Required. -->
<Property name="jdbcUrl">jdbc:h2:${ibis.root.directory}/ibis_data/database/ibis;DB_CLOSE_ON_EXIT=FALSE</Property>
<!-- Set database access credentials, username and password
Example:
<Property name="user">inubit-database-user</Property>
<Property name="password" type="Password">secret</Property>
To get your values encrypted, just add the attribute encrypted="true".
The values will be changed after the next server restart:
<Property name="user" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
<Property name="password" type="Password" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
-->
<!-- Set the database user that owns the INUBIT schema.
"sa" is the default user of the embedded H2 database.
The user needs write access to the database. -->
<Property name="user">sa</Property>
<!-- Set the password of the database user.
An empty value means that the user has no password.
Type: Password. Default: empty -->
<Property name="password" type="Password" encrypted="false"></Property>
<!-- Connect and read timeout of the database connection in milliseconds.
Must be greater than or equal to 0.
Type: Long. Default: 180000 (3 minutes) -->
<Property name="socketTimeoutInMillisecs" type="Long">180000</Property>
<!-- Maximum time in milliseconds a thread waits for a free connection from the pool before the request
fails (maxWait of the connection pool).
Type: Long. Default: 120000 (2 minutes) -->
<Property name="checkoutTimeoutInMillisecs" type="Long">120000</Property>
<!-- Additional connection properties that are passed to the JDBC driver.
Every entry is a nested Property element whose name is the driver property, for example:
<Property name="driverProperties" type="Map">
<Property name="ssl">true</Property>
</Property>
Type: Map. Default: empty -->
<Property name="driverProperties" type="Map"/>
<!-- Initial size of the connection pool and minimum number of connections kept idle.
Must be greater than or equal to 0.
Type: Integer. Default: 5 -->
<Property name="minPoolSize" type="Integer">5</Property>
<!-- Maximum number of connections the pool hands out at the same time, and maximum number of idle
connections.
Must be greater than or equal to minPoolSize.
The database server has to allow at least this number of sessions.
Type: Integer. Default: 30 -->
<Property name="maxPoolSize" type="Integer">30</Property>
<!-- If true, a connection that has been in use longer than removeAbandonedTimeout is regarded as abandoned
and is reclaimed by the pool. Useful to recover from connection leaks, but a connection of a long
running query may be closed while it is still needed.
Type: Boolean. Default: false -->
<Property name="removeAbandoned" type="Boolean">false</Property>
<!-- Time in seconds after which a connection that is in use is regarded as abandoned.
Only effective if removeAbandoned is true. The value should be at least as long as the longest running
query of the installation.
Type: Integer. Default: 21600 (6 hours) -->
<Property name="removeAbandonedTimeout" type="Integer">21600</Property>
</Property>
<!-- JNDI name under which the DataSource of the system database is looked up during startup.
In the standard installation an INUBIT DataSource is bound under this name and is configured with the
Database settings above.
If nothing usable is bound, the startup fails.
Type: String. Default: java:/comp/env/jdbc/IBISDB -->
<Property name="DataSourceLocation">java:/comp/env/jdbc/IBISDB</Property>
<!-- Storage location for the backup copies of the runtime data (execution data of running processes).
FILE The backups are written to the file-based cache store below <inubit-installdir>/inubit/server/ibis_root/ibis_data/cachestore.
DB The backups are written into the system database.
An unknown value falls back to FILE.
Type: String. Default: FILE -->
<Property name="RuntimeDataBackupStore">FILE</Property>
<!-- Share of the maximum JVM heap (-Xmx) in percent that the runtime data caches may occupy in memory.
The resulting size must be greater than 0, otherwise the cache manager refuses to start.
Type: Integer. Default: 25 -->
<Property name="RuntimeDataCacheXMXPercentage" type="Integer">25</Property>
<!-- If true, every connection taken from the pool is additionally checked for validity before it is used,
and is re-established if the check fails. Setting it to false saves the check but leaves the handling
of stale connections to the JDBC driver.
Type: Boolean. Default: true -->
<Property name="CheckValidConnection" type="Boolean">true</Property>
<!-- Number of retries when a connection to the system database cannot be obtained or a statement fails with
a recoverable error. After the last unsuccessful retry the error is reported to the caller.
Type: Integer. Default: 3 -->
<Property name="noOfRetries" type="Integer">3</Property>
<!-- Waiting time in milliseconds between two retries, see noOfRetries.
Type: Long. Default: 2000 -->
<Property name="retryInterval" type="Long">2000</Property>
<!-- Limits for the number of version entries that are kept in memory before older entries are evicted from
the cache. A value less than or equal to 0 means no limit; in that case a warning is written to the log
during startup because large repositories can then cause OutOfMemory errors.
Type: Map -->
<Property name="MaxEntriesInMemoryLimit" type="Map">
<!-- Maximum number of workflow version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Workflow_Data_Version" type="Integer">-1</Property>
<!-- Maximum number of module version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Module_Data_Version" type="Integer">-1</Property>
</Property>
<!-- Number of PBKDF2 iterations used to hash user passwords.
A higher value increases the effort of a brute force attack and the effort of every password check.
Existing password hashes are not changed when the value is modified.
Type: Integer. Default: 20000 -->
<Property name="iterationCount" type="Integer">20000</Property>
<!-- Activates the Virtimo Cluster Manager. With the cluster manager enabled several INUBIT instances can form
a cluster and instances can be added or removed at runtime.
Requires a corresponding license and the configuration in <inubit-installdir>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml;
without a valid license the cluster manager is skipped with a warning in the log.
Type: Boolean. Default: false -->
<Property name="ActivateClusterManager" type="Boolean">false</Property>
</Properties>
<?xml version='1.0' encoding='UTF-8'?>
<!-- INUBIT Process Engine configuration (ibis.xml).
The Process Engine reads this file during startup. It defines the connection to the INUBIT system
database (IBISDB), the identity provider and a number of global runtime settings.
Template usage:
This file is the template for IBM DB2. Copy it to "ibis.xml" into the same conf directory and adjust
at least the Database settings and initialRootUserPassword before the first start.
File format:
Properties/@version Version of the configuration format. Do not change.
Property/@name Name of the property. Names are case sensitive.
Property/@type Type of the value: Boolean, Integer, Long, Password, EncryptedString or Map.
Without this attribute the value is treated as a string.
Property/@encrypted Only for Password and EncryptedString: "true" if the value is stored encrypted.
Properties of type Map contain nested Property elements.
Properties that are missing from this file fall back to their built-in default values
(see com.inubit.ibis.server.cluster.NodeConfiguration). Most properties are evaluated during startup
only. LocalMaintenanceMode can also be changed at runtime and is then written back to this file;
after a successful startup the server keeps a copy of the file as ibis.xml.bak.1. -->
<Properties version="4.1">
<!-- Puts this node into local maintenance mode.
While maintenance mode is active the node stops processing new incoming messages of its listeners and
connectors, and the cluster event manager is notified so that backup nodes can take over. The property
can also be switched at runtime (for example with the maintenance command of the CLI client) and takes
effect without a restart.
Type: Boolean. Default: false -->
<Property name="LocalMaintenanceMode" type="Boolean">false</Property>
<!-- Enables verbose logging during server startup.
If true, the INUBIT, Infinispan and JGroups loggers are set to DEBUG until the log level of the server
configuration is applied; if false they start at ERROR. This switch is independent of the debug setting
in Workbench > Server Configuration.
Type: Boolean. Default: false -->
<Property name="ClusterDebug" type="Boolean">false</Property>
<!-- Identity provider used for authentication and user management.
inubit Users are managed by the INUBIT Process Engine itself.
keycloak Users are managed by an external Keycloak server; the connection details are read from the
file configured in IdentityProviderConfiguration.
The value is compared case-insensitively; any other or empty value falls back to "inubit".
Type: String. Default: inubit -->
<Property name="IdentityProvider">inubit</Property>
<!-- Name of the file that holds the connection details of the external identity provider.
Only evaluated for IdentityProvider=keycloak. The name is resolved relative to the conf directory of the
installation, so a plain file name such as "keycloak.json" is sufficient.
Type: String. Default: keycloak.json -->
<Property name="IdentityProviderConfiguration">keycloak.json</Property>
<!-- Initial password of the built-in administrator "root".
The value is used only while the default users are created, that is when the root user does not yet
exist in the user store. It must not be empty, otherwise the startup fails with "INITIAL PASSWORD IS
MISSING". Changing the value later has no effect on an already existing root user.
The installer replaces PLACEHOLDER during installation routine.
Change the password afterwards through the Workbench.
Type: String. No default. -->
<Property name="initialRootUserPassword">PLACEHOLDER</Property>
<!-- Connection settings of the INUBIT system database (IBISDB).
These settings are used to build the internal Tomcat JDBC connection pool for the DataSource that is
bound under DataSourceLocation. This template is for IBM DB2.
Type: Map -->
<Property name="Database" type="Map">
<!-- Fully qualified name of the JDBC driver class.
The JDBC JAR must be placed inside the <inubit-installdir>/inubit/server/process_engine/webapps/ibis/WEB-INF/lib.
Otherwise the startup fails.
Type: String. Required. -->
<Property name="driverClass">com.ibm.db2.jcc.DB2Driver</Property>
<!-- JDBC URL of the system database.
The database flavour is derived from the URL prefix (here: "jdbc:db2:").
Replace [host] with the host name of the database server and [database] with the database name;
50000 is the default port.
Type: String. Required. -->
<Property name="jdbcUrl">jdbc:db2://[host]:50000/[database]</Property>
<!-- Set database access credentials, username and password
Example:
<Property name="user">inubit-database-user</Property>
<Property name="password" type="Password">secret</Property>
To get your values encrypted, just add the attribute encrypted="true".
The values will be changed after the next server restart:
<Property name="user" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
<Property name="password" type="Password" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
-->
<!-- Set the database user that owns the INUBIT schema.
Must be set before the first start.
The user needs write access to the database. -->
<Property name="user"></Property>
<!-- Set the password of the database user.
An empty value means that the user has no password.
Type: Password. Default: empty -->
<Property name="password" type="Password" encrypted="false"></Property>
<!-- Connect and read timeout of the database connection in milliseconds.
Must be greater than or equal to 0.
Type: Long. Default: 180000 (3 minutes) -->
<Property name="socketTimeoutInMillisecs" type="Long">180000</Property>
<!-- Maximum time in milliseconds a thread waits for a free connection from the pool before the request
fails (maxWait of the connection pool).
Type: Long. Default: 120000 (2 minutes) -->
<Property name="checkoutTimeoutInMillisecs" type="Long">120000</Property>
<!-- Additional connection properties that are passed to the JDBC driver.
Every entry is a nested Property element whose name is the driver property, for example:
<Property name="driverProperties" type="Map">
<Property name="ssl">true</Property>
</Property>
Type: Map. Default: empty -->
<Property name="driverProperties" type="Map"/>
<!-- Initial size of the connection pool and minimum number of connections kept idle.
Must be greater than or equal to 0.
Type: Integer. Default: 5 -->
<Property name="minPoolSize" type="Integer">5</Property>
<!-- Maximum number of connections the pool hands out at the same time, and maximum number of idle
connections.
Must be greater than or equal to minPoolSize.
The database server has to allow at least this number of sessions.
Type: Integer. Default: 30 -->
<Property name="maxPoolSize" type="Integer">30</Property>
<!-- If true, a connection that has been in use longer than removeAbandonedTimeout is regarded as abandoned
and is reclaimed by the pool. Useful to recover from connection leaks, but a connection of a long
running query may be closed while it is still needed.
Type: Boolean. Default: false -->
<Property name="removeAbandoned" type="Boolean">false</Property>
<!-- Time in seconds after which a connection that is in use is regarded as abandoned.
Only effective if removeAbandoned is true. The value should be at least as long as the longest running
query of the installation.
Type: Integer. Default: 21600 (6 hours) -->
<Property name="removeAbandonedTimeout" type="Integer">21600</Property>
</Property>
<!-- JNDI name under which the DataSource of the system database is looked up during startup.
In the standard installation an INUBIT DataSource is bound under this name and is configured with the
Database settings above.
If nothing usable is bound, the startup fails.
Type: String. Default: java:/comp/env/jdbc/IBISDB -->
<Property name="DataSourceLocation">java:/comp/env/jdbc/IBISDB</Property>
<!-- Storage location for the backup copies of the runtime data (execution data of running processes).
FILE The backups are written to the file-based cache store below <inubit-installdir>/inubit/server/ibis_root/ibis_data/cachestore.
DB The backups are written into the system database.
An unknown value falls back to FILE.
Type: String. Default: FILE -->
<Property name="RuntimeDataBackupStore">FILE</Property>
<!-- Share of the maximum JVM heap (-Xmx) in percent that the runtime data caches may occupy in memory.
The resulting size must be greater than 0, otherwise the cache manager refuses to start.
Type: Integer. Default: 25 -->
<Property name="RuntimeDataCacheXMXPercentage" type="Integer">25</Property>
<!-- If true, every connection taken from the pool is additionally checked for validity before it is used,
and is re-established if the check fails. Setting it to false saves the check but leaves the handling
of stale connections to the JDBC driver.
Type: Boolean. Default: true -->
<Property name="CheckValidConnection" type="Boolean">true</Property>
<!-- Number of retries when a connection to the system database cannot be obtained or a statement fails with
a recoverable error. After the last unsuccessful retry the error is reported to the caller.
Type: Integer. Default: 3 -->
<Property name="noOfRetries" type="Integer">3</Property>
<!-- Waiting time in milliseconds between two retries, see noOfRetries.
Type: Long. Default: 2000 -->
<Property name="retryInterval" type="Long">2000</Property>
<!-- Limits for the number of version entries that are kept in memory before older entries are evicted from
the cache. A value less than or equal to 0 means no limit; in that case a warning is written to the log
during startup because large repositories can then cause OutOfMemory errors.
Type: Map -->
<Property name="MaxEntriesInMemoryLimit" type="Map">
<!-- Maximum number of workflow version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Workflow_Data_Version" type="Integer">-1</Property>
<!-- Maximum number of module version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Module_Data_Version" type="Integer">-1</Property>
</Property>
<!-- Number of PBKDF2 iterations used to hash user passwords.
A higher value increases the effort of a brute force attack and the effort of every password check.
Existing password hashes are not changed when the value is modified.
Type: Integer. Default: 20000 -->
<Property name="iterationCount" type="Integer">20000</Property>
<!-- Activates the Virtimo Cluster Manager. With the cluster manager enabled several INUBIT instances can form
a cluster and instances can be added or removed at runtime.
Requires a corresponding license and the configuration in <inubit-installdir>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml;
without a valid license the cluster manager is skipped with a warning in the log.
Type: Boolean. Default: false -->
<Property name="ActivateClusterManager" type="Boolean">false</Property>
</Properties>
<?xml version='1.0' encoding='UTF-8'?>
<!-- INUBIT Process Engine configuration (ibis.xml).
The Process Engine reads this file during startup. It defines the connection to the INUBIT system
database (IBISDB), the identity provider and a number of global runtime settings.
Template usage:
This file is the template for MariaDB. Copy it to "ibis.xml" into the same conf directory and adjust
at least the Database settings and initialRootUserPassword before the first start.
File format:
Properties/@version Version of the configuration format. Do not change.
Property/@name Name of the property. Names are case sensitive.
Property/@type Type of the value: Boolean, Integer, Long, Password, EncryptedString or Map.
Without this attribute the value is treated as a string.
Property/@encrypted Only for Password and EncryptedString: "true" if the value is stored encrypted.
Properties of type Map contain nested Property elements.
Properties that are missing from this file fall back to their built-in default values
(see com.inubit.ibis.server.cluster.NodeConfiguration). Most properties are evaluated during startup
only. LocalMaintenanceMode can also be changed at runtime and is then written back to this file;
after a successful startup the server keeps a copy of the file as ibis.xml.bak.1. -->
<Properties version="4.1">
<!-- Puts this node into local maintenance mode.
While maintenance mode is active the node stops processing new incoming messages of its listeners and
connectors, and the cluster event manager is notified so that backup nodes can take over. The property
can also be switched at runtime (for example with the maintenance command of the CLI client) and takes
effect without a restart.
Type: Boolean. Default: false -->
<Property name="LocalMaintenanceMode" type="Boolean">false</Property>
<!-- Enables verbose logging during server startup.
If true, the INUBIT, Infinispan and JGroups loggers are set to DEBUG until the log level of the server
configuration is applied; if false they start at ERROR. This switch is independent of the debug setting
in Workbench > Server Configuration.
Type: Boolean. Default: false -->
<Property name="ClusterDebug" type="Boolean">false</Property>
<!-- Identity provider used for authentication and user management.
inubit Users are managed by the INUBIT Process Engine itself.
keycloak Users are managed by an external Keycloak server; the connection details are read from the
file configured in IdentityProviderConfiguration.
The value is compared case-insensitively; any other or empty value falls back to "inubit".
Type: String. Default: inubit -->
<Property name="IdentityProvider">inubit</Property>
<!-- Name of the file that holds the connection details of the external identity provider.
Only evaluated for IdentityProvider=keycloak. The name is resolved relative to the conf directory of the
installation, so a plain file name such as "keycloak.json" is sufficient.
Type: String. Default: keycloak.json -->
<Property name="IdentityProviderConfiguration">keycloak.json</Property>
<!-- Initial password of the built-in administrator "root".
The value is used only while the default users are created, that is when the root user does not yet
exist in the user store. It must not be empty, otherwise the startup fails with "INITIAL PASSWORD IS
MISSING". Changing the value later has no effect on an already existing root user.
The installer replaces PLACEHOLDER during installation routine.
Change the password afterwards through the Workbench.
Type: String. No default. -->
<Property name="initialRootUserPassword">PLACEHOLDER</Property>
<!-- Connection settings of the INUBIT system database (IBISDB).
These settings are used to build the internal Tomcat JDBC connection pool for the DataSource that is
bound under DataSourceLocation. This template is for MariaDB.
Type: Map -->
<Property name="Database" type="Map">
<!-- Fully qualified name of the JDBC driver class.
The JDBC JAR must be placed inside the <inubit-installdir>/inubit/server/process_engine/webapps/ibis/WEB-INF/lib.
Otherwise the startup fails.
Type: String. Required. -->
<Property name="driverClass">org.mariadb.jdbc.Driver</Property>
<!-- JDBC URL of the system database.
The database flavour is derived from the URL prefix (here: "jdbc:mariadb:"); MariaDB URLs are
handled with the same flavour as MySQL.
Replace [host] with the host name of the database server and [database] with the database name;
3306 is the default port. Only the host name and the database name should be set here, additional
driver options belong into driverProperties.
Type: String. Required. -->
<Property name="jdbcUrl">jdbc:mariadb://[host]:3306/[database]</Property>
<!-- Set database access credentials, username and password
Example:
<Property name="user">inubit-database-user</Property>
<Property name="password" type="Password">secret</Property>
To get your values encrypted, just add the attribute encrypted="true".
The values will be changed after the next server restart:
<Property name="user" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
<Property name="password" type="Password" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
-->
<!-- Set the database user that owns the INUBIT schema.
Must be set before the first start.
The user needs write access to the database. -->
<Property name="user"></Property>
<!-- Set the password of the database user.
An empty value means that the user has no password.
Type: Password. Default: empty -->
<Property name="password" type="Password" encrypted="false"></Property>
<!-- Connect and read timeout of the database connection in milliseconds.
Must be greater than or equal to 0.
Type: Long. Default: 180000 (3 minutes) -->
<Property name="socketTimeoutInMillisecs" type="Long">180000</Property>
<!-- Maximum time in milliseconds a thread waits for a free connection from the pool before the request
fails (maxWait of the connection pool).
Type: Long. Default: 120000 (2 minutes) -->
<Property name="checkoutTimeoutInMillisecs" type="Long">120000</Property>
<!-- Additional connection properties that are passed to the JDBC driver.
Every entry is a nested Property element whose name is the driver property, for example:
<Property name="driverProperties" type="Map">
<Property name="ssl">true</Property>
</Property>
Type: Map. Default: empty -->
<Property name="driverProperties" type="Map"/>
<!-- Initial size of the connection pool and minimum number of connections kept idle.
Must be greater than or equal to 0.
Type: Integer. Default: 5 -->
<Property name="minPoolSize" type="Integer">5</Property>
<!-- Maximum number of connections the pool hands out at the same time, and maximum number of idle
connections.
Must be greater than or equal to minPoolSize.
The database server has to allow at least this number of sessions.
Type: Integer. Default: 30 -->
<Property name="maxPoolSize" type="Integer">30</Property>
<!-- If true, a connection that has been in use longer than removeAbandonedTimeout is regarded as abandoned
and is reclaimed by the pool. Useful to recover from connection leaks, but a connection of a long
running query may be closed while it is still needed.
Type: Boolean. Default: false -->
<Property name="removeAbandoned" type="Boolean">false</Property>
<!-- Time in seconds after which a connection that is in use is regarded as abandoned.
Only effective if removeAbandoned is true. The value should be at least as long as the longest running
query of the installation.
Type: Integer. Default: 21600 (6 hours) -->
<Property name="removeAbandonedTimeout" type="Integer">21600</Property>
</Property>
<!-- JNDI name under which the DataSource of the system database is looked up during startup.
In the standard installation an INUBIT DataSource is bound under this name and is configured with the
Database settings above.
If nothing usable is bound, the startup fails.
Type: String. Default: java:/comp/env/jdbc/IBISDB -->
<Property name="DataSourceLocation">java:/comp/env/jdbc/IBISDB</Property>
<!-- Storage location for the backup copies of the runtime data (execution data of running processes).
FILE The backups are written to the file-based cache store below <inubit-installdir>/inubit/server/ibis_root/ibis_data/cachestore.
DB The backups are written into the system database.
An unknown value falls back to FILE.
Type: String. Default: FILE -->
<Property name="RuntimeDataBackupStore">FILE</Property>
<!-- Share of the maximum JVM heap (-Xmx) in percent that the runtime data caches may occupy in memory.
The resulting size must be greater than 0, otherwise the cache manager refuses to start.
Type: Integer. Default: 25 -->
<Property name="RuntimeDataCacheXMXPercentage" type="Integer">25</Property>
<!-- If true, every connection taken from the pool is additionally checked for validity before it is used,
and is re-established if the check fails. Setting it to false saves the check but leaves the handling
of stale connections to the JDBC driver.
Type: Boolean. Default: true -->
<Property name="CheckValidConnection" type="Boolean">true</Property>
<!-- Number of retries when a connection to the system database cannot be obtained or a statement fails with
a recoverable error. After the last unsuccessful retry the error is reported to the caller.
Type: Integer. Default: 3 -->
<Property name="noOfRetries" type="Integer">3</Property>
<!-- Waiting time in milliseconds between two retries, see noOfRetries.
Type: Long. Default: 2000 -->
<Property name="retryInterval" type="Long">2000</Property>
<!-- Limits for the number of version entries that are kept in memory before older entries are evicted from
the cache. A value less than or equal to 0 means no limit; in that case a warning is written to the log
during startup because large repositories can then cause OutOfMemory errors.
Type: Map -->
<Property name="MaxEntriesInMemoryLimit" type="Map">
<!-- Maximum number of workflow version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Workflow_Data_Version" type="Integer">-1</Property>
<!-- Maximum number of module version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Module_Data_Version" type="Integer">-1</Property>
</Property>
<!-- Number of PBKDF2 iterations used to hash user passwords.
A higher value increases the effort of a brute force attack and the effort of every password check.
Existing password hashes are not changed when the value is modified.
Type: Integer. Default: 20000 -->
<Property name="iterationCount" type="Integer">20000</Property>
<!-- Activates the Virtimo Cluster Manager. With the cluster manager enabled several INUBIT instances can form
a cluster and instances can be added or removed at runtime.
Requires a corresponding license and the configuration in <inubit-installdir>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml;
without a valid license the cluster manager is skipped with a warning in the log.
Type: Boolean. Default: false -->
<Property name="ActivateClusterManager" type="Boolean">false</Property>
</Properties>
<?xml version='1.0' encoding='UTF-8'?>
<!-- INUBIT Process Engine configuration (ibis.xml).
The Process Engine reads this file during startup. It defines the connection to the INUBIT system
database (IBISDB), the identity provider and a number of global runtime settings.
Template usage:
This file is the template for MySQL. Copy it to "ibis.xml" into the same conf directory and adjust
at least the Database settings and initialRootUserPassword before the first start.
File format:
Properties/@version Version of the configuration format. Do not change.
Property/@name Name of the property. Names are case sensitive.
Property/@type Type of the value: Boolean, Integer, Long, Password, EncryptedString or Map.
Without this attribute the value is treated as a string.
Property/@encrypted Only for Password and EncryptedString: "true" if the value is stored encrypted.
Properties of type Map contain nested Property elements.
Properties that are missing from this file fall back to their built-in default values
(see com.inubit.ibis.server.cluster.NodeConfiguration). Most properties are evaluated during startup
only. LocalMaintenanceMode can also be changed at runtime and is then written back to this file;
after a successful startup the server keeps a copy of the file as ibis.xml.bak.1. -->
<Properties version="4.1">
<!-- Puts this node into local maintenance mode.
While maintenance mode is active the node stops processing new incoming messages of its listeners and
connectors, and the cluster event manager is notified so that backup nodes can take over. The property
can also be switched at runtime (for example with the maintenance command of the CLI client) and takes
effect without a restart.
Type: Boolean. Default: false -->
<Property name="LocalMaintenanceMode" type="Boolean">false</Property>
<!-- Enables verbose logging during server startup.
If true, the INUBIT, Infinispan and JGroups loggers are set to DEBUG until the log level of the server
configuration is applied; if false they start at ERROR. This switch is independent of the debug setting
in Workbench > Server Configuration.
Type: Boolean. Default: false -->
<Property name="ClusterDebug" type="Boolean">false</Property>
<!-- Identity provider used for authentication and user management.
inubit Users are managed by the INUBIT Process Engine itself.
keycloak Users are managed by an external Keycloak server; the connection details are read from the
file configured in IdentityProviderConfiguration.
The value is compared case-insensitively; any other or empty value falls back to "inubit".
Type: String. Default: inubit -->
<Property name="IdentityProvider">inubit</Property>
<!-- Name of the file that holds the connection details of the external identity provider.
Only evaluated for IdentityProvider=keycloak. The name is resolved relative to the conf directory of the
installation, so a plain file name such as "keycloak.json" is sufficient.
Type: String. Default: keycloak.json -->
<Property name="IdentityProviderConfiguration">keycloak.json</Property>
<!-- Initial password of the built-in administrator "root".
The value is used only while the default users are created, that is when the root user does not yet
exist in the user store. It must not be empty, otherwise the startup fails with "INITIAL PASSWORD IS
MISSING". Changing the value later has no effect on an already existing root user.
The installer replaces PLACEHOLDER during installation routine.
Change the password afterwards through the Workbench.
Type: String. No default. -->
<Property name="initialRootUserPassword">PLACEHOLDER</Property>
<!-- Connection settings of the INUBIT system database (IBISDB).
These settings are used to build the internal Tomcat JDBC connection pool for the DataSource that is
bound under DataSourceLocation. This template is for MySQL.
Type: Map -->
<Property name="Database" type="Map">
<!-- Fully qualified name of the JDBC driver class.
The JDBC JAR must be placed inside the <inubit-installdir>/inubit/server/process_engine/webapps/ibis/WEB-INF/lib.
Otherwise the startup fails.
Type: String. Required. -->
<Property name="driverClass">com.mysql.jdbc.Driver</Property>
<!-- JDBC URL of the system database.
The database flavour is derived from the URL prefix (here: "jdbc:mysql:").
Replace [host] with the host name of the database server and [database] with the database name;
3306 is the default port.
Type: String. Required. -->
<Property name="jdbcUrl">jdbc:mysql://[host]:3306/[database]</Property>
<!-- Set database access credentials, username and password
Example:
<Property name="user">inubit-database-user</Property>
<Property name="password" type="Password">secret</Property>
To get your values encrypted, just add the attribute encrypted="true".
The values will be changed after the next server restart:
<Property name="user" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
<Property name="password" type="Password" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
-->
<!-- Set the database user that owns the INUBIT schema.
Must be set before the first start.
The user needs write access to the database. -->
<Property name="user"></Property>
<!-- Set the password of the database user.
An empty value means that the user has no password.
Type: Password. Default: empty -->
<Property name="password" type="Password" encrypted="false"></Property>
<!-- Connect and read timeout of the database connection in milliseconds.
Must be greater than or equal to 0.
Type: Long. Default: 180000 (3 minutes) -->
<Property name="socketTimeoutInMillisecs" type="Long">180000</Property>
<!-- Maximum time in milliseconds a thread waits for a free connection from the pool before the request
fails (maxWait of the connection pool).
Type: Long. Default: 120000 (2 minutes) -->
<Property name="checkoutTimeoutInMillisecs" type="Long">120000</Property>
<!-- Additional connection properties that are passed to the JDBC driver.
Every entry is a nested Property element whose name is the driver property, for example:
<Property name="driverProperties" type="Map">
<Property name="ssl">true</Property>
</Property>
Type: Map. Default: empty -->
<Property name="driverProperties" type="Map"/>
<!-- Initial size of the connection pool and minimum number of connections kept idle.
Must be greater than or equal to 0.
Type: Integer. Default: 5 -->
<Property name="minPoolSize" type="Integer">5</Property>
<!-- Maximum number of connections the pool hands out at the same time, and maximum number of idle
connections.
Must be greater than or equal to minPoolSize.
The database server has to allow at least this number of sessions.
Type: Integer. Default: 30 -->
<Property name="maxPoolSize" type="Integer">30</Property>
<!-- If true, a connection that has been in use longer than removeAbandonedTimeout is regarded as abandoned
and is reclaimed by the pool. Useful to recover from connection leaks, but a connection of a long
running query may be closed while it is still needed.
Type: Boolean. Default: false -->
<Property name="removeAbandoned" type="Boolean">false</Property>
<!-- Time in seconds after which a connection that is in use is regarded as abandoned.
Only effective if removeAbandoned is true. The value should be at least as long as the longest running
query of the installation.
Type: Integer. Default: 21600 (6 hours) -->
<Property name="removeAbandonedTimeout" type="Integer">21600</Property>
</Property>
<!-- JNDI name under which the DataSource of the system database is looked up during startup.
In the standard installation an INUBIT DataSource is bound under this name and is configured with the
Database settings above.
If nothing usable is bound, the startup fails.
Type: String. Default: java:/comp/env/jdbc/IBISDB -->
<Property name="DataSourceLocation">java:/comp/env/jdbc/IBISDB</Property>
<!-- Storage location for the backup copies of the runtime data (execution data of running processes).
FILE The backups are written to the file-based cache store below <inubit-installdir>/inubit/server/ibis_root/ibis_data/cachestore.
DB The backups are written into the system database.
An unknown value falls back to FILE.
Type: String. Default: FILE -->
<Property name="RuntimeDataBackupStore">FILE</Property>
<!-- Share of the maximum JVM heap (-Xmx) in percent that the runtime data caches may occupy in memory.
The resulting size must be greater than 0, otherwise the cache manager refuses to start.
Type: Integer. Default: 25 -->
<Property name="RuntimeDataCacheXMXPercentage" type="Integer">25</Property>
<!-- If true, every connection taken from the pool is additionally checked for validity before it is used,
and is re-established if the check fails. Setting it to false saves the check but leaves the handling
of stale connections to the JDBC driver.
Type: Boolean. Default: true -->
<Property name="CheckValidConnection" type="Boolean">true</Property>
<!-- Number of retries when a connection to the system database cannot be obtained or a statement fails with
a recoverable error. After the last unsuccessful retry the error is reported to the caller.
Type: Integer. Default: 3 -->
<Property name="noOfRetries" type="Integer">3</Property>
<!-- Waiting time in milliseconds between two retries, see noOfRetries.
Type: Long. Default: 2000 -->
<Property name="retryInterval" type="Long">2000</Property>
<!-- Limits for the number of version entries that are kept in memory before older entries are evicted from
the cache. A value less than or equal to 0 means no limit; in that case a warning is written to the log
during startup because large repositories can then cause OutOfMemory errors.
Type: Map -->
<Property name="MaxEntriesInMemoryLimit" type="Map">
<!-- Maximum number of workflow version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Workflow_Data_Version" type="Integer">-1</Property>
<!-- Maximum number of module version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Module_Data_Version" type="Integer">-1</Property>
</Property>
<!-- Number of PBKDF2 iterations used to hash user passwords.
A higher value increases the effort of a brute force attack and the effort of every password check.
Existing password hashes are not changed when the value is modified.
Type: Integer. Default: 20000 -->
<Property name="iterationCount" type="Integer">20000</Property>
<!-- Activates the Virtimo Cluster Manager. With the cluster manager enabled several INUBIT instances can form
a cluster and instances can be added or removed at runtime.
Requires a corresponding license and the configuration in <inubit-installdir>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml;
without a valid license the cluster manager is skipped with a warning in the log.
Type: Boolean. Default: false -->
<Property name="ActivateClusterManager" type="Boolean">false</Property>
</Properties>
<?xml version='1.0' encoding='UTF-8'?>
<!-- INUBIT Process Engine configuration (ibis.xml).
The Process Engine reads this file during startup. It defines the connection to the INUBIT system
database (IBISDB), the identity provider and a number of global runtime settings.
Template usage:
This file is the template for Oracle. Copy it to "ibis.xml" into the same conf directory and adjust
at least the Database settings and initialRootUserPassword before the first start.
File format:
Properties/@version Version of the configuration format. Do not change.
Property/@name Name of the property. Names are case sensitive.
Property/@type Type of the value: Boolean, Integer, Long, Password, EncryptedString or Map.
Without this attribute the value is treated as a string.
Property/@encrypted Only for Password and EncryptedString: "true" if the value is stored encrypted.
Properties of type Map contain nested Property elements.
Properties that are missing from this file fall back to their built-in default values
(see com.inubit.ibis.server.cluster.NodeConfiguration). Most properties are evaluated during startup
only. LocalMaintenanceMode can also be changed at runtime and is then written back to this file;
after a successful startup the server keeps a copy of the file as ibis.xml.bak.1. -->
<Properties version="4.1">
<!-- Puts this node into local maintenance mode.
While maintenance mode is active the node stops processing new incoming messages of its listeners and
connectors, and the cluster event manager is notified so that backup nodes can take over. The property
can also be switched at runtime (for example with the maintenance command of the CLI client) and takes
effect without a restart.
Type: Boolean. Default: false -->
<Property name="LocalMaintenanceMode" type="Boolean">false</Property>
<!-- Enables verbose logging during server startup.
If true, the INUBIT, Infinispan and JGroups loggers are set to DEBUG until the log level of the server
configuration is applied; if false they start at ERROR. This switch is independent of the debug setting
in Workbench > Server Configuration.
Type: Boolean. Default: false -->
<Property name="ClusterDebug" type="Boolean">false</Property>
<!-- Identity provider used for authentication and user management.
inubit Users are managed by the INUBIT Process Engine itself.
keycloak Users are managed by an external Keycloak server; the connection details are read from the
file configured in IdentityProviderConfiguration.
The value is compared case-insensitively; any other or empty value falls back to "inubit".
Type: String. Default: inubit -->
<Property name="IdentityProvider">inubit</Property>
<!-- Name of the file that holds the connection details of the external identity provider.
Only evaluated for IdentityProvider=keycloak. The name is resolved relative to the conf directory of the
installation, so a plain file name such as "keycloak.json" is sufficient.
Type: String. Default: keycloak.json -->
<Property name="IdentityProviderConfiguration">keycloak.json</Property>
<!-- Initial password of the built-in administrator "root".
The value is used only while the default users are created, that is when the root user does not yet
exist in the user store. It must not be empty, otherwise the startup fails with "INITIAL PASSWORD IS
MISSING". Changing the value later has no effect on an already existing root user.
The installer replaces PLACEHOLDER during installation routine.
Change the password afterwards through the Workbench.
Type: String. No default. -->
<Property name="initialRootUserPassword">PLACEHOLDER</Property>
<!-- Connection settings of the INUBIT system database (IBISDB).
These settings are used to build the internal Tomcat JDBC connection pool for the DataSource that is
bound under DataSourceLocation. This template is for Oracle.
Type: Map -->
<Property name="Database" type="Map">
<!-- Fully qualified name of the JDBC driver class.
The JDBC JAR must be placed inside the <inubit-installdir>/inubit/server/process_engine/webapps/ibis/WEB-INF/lib.
Otherwise the startup fails.
Type: String. Required. -->
<Property name="driverClass">oracle.jdbc.OracleDriver</Property>
<!-- JDBC URL of the system database.
The database flavour is derived from the URL prefix (here: "jdbc:oracle:").
Replace [host] with the host name of the database server and [sid] with the SID of the instance;
1521 is the default listener port.
Type: String. Required. -->
<Property name="jdbcUrl">jdbc:oracle:thin:@[host]:1521:[sid]</Property>
<!-- Set database access credentials, username and password
Example:
<Property name="user">inubit-database-user</Property>
<Property name="password" type="Password">secret</Property>
To get your values encrypted, just add the attribute encrypted="true".
The values will be changed after the next server restart:
<Property name="user" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
<Property name="password" type="Password" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
-->
<!-- Set the database user that owns the INUBIT schema.
Must be set before the first start.
The user needs write access to the database. -->
<Property name="user"></Property>
<!-- Set the password of the database user.
An empty value means that the user has no password.
Type: Password. Default: empty -->
<Property name="password" type="Password" encrypted="false"></Property>
<!-- Connect and read timeout of the database connection in milliseconds.
Must be greater than or equal to 0.
Type: Long. Default: 180000 (3 minutes) -->
<Property name="socketTimeoutInMillisecs" type="Long">180000</Property>
<!-- Maximum time in milliseconds a thread waits for a free connection from the pool before the request
fails (maxWait of the connection pool).
Type: Long. Default: 120000 (2 minutes) -->
<Property name="checkoutTimeoutInMillisecs" type="Long">120000</Property>
<!-- Additional connection properties that are passed to the JDBC driver.
Every entry is a nested Property element whose name is the driver property, for example:
<Property name="driverProperties" type="Map">
<Property name="ssl">true</Property>
</Property>
Type: Map. Default: empty -->
<Property name="driverProperties" type="Map"/>
<!-- Initial size of the connection pool and minimum number of connections kept idle.
Must be greater than or equal to 0.
Type: Integer. Default: 5 -->
<Property name="minPoolSize" type="Integer">5</Property>
<!-- Maximum number of connections the pool hands out at the same time, and maximum number of idle
connections.
Must be greater than or equal to minPoolSize.
The database server has to allow at least this number of sessions.
Type: Integer. Default: 30 -->
<Property name="maxPoolSize" type="Integer">30</Property>
<!-- If true, a connection that has been in use longer than removeAbandonedTimeout is regarded as abandoned
and is reclaimed by the pool. Useful to recover from connection leaks, but a connection of a long
running query may be closed while it is still needed.
Type: Boolean. Default: false -->
<Property name="removeAbandoned" type="Boolean">false</Property>
<!-- Time in seconds after which a connection that is in use is regarded as abandoned.
Only effective if removeAbandoned is true. The value should be at least as long as the longest running
query of the installation.
Type: Integer. Default: 21600 (6 hours) -->
<Property name="removeAbandonedTimeout" type="Integer">21600</Property>
</Property>
<!-- JNDI name under which the DataSource of the system database is looked up during startup.
In the standard installation an INUBIT DataSource is bound under this name and is configured with the
Database settings above.
If nothing usable is bound, the startup fails.
Type: String. Default: java:/comp/env/jdbc/IBISDB -->
<Property name="DataSourceLocation">java:/comp/env/jdbc/IBISDB</Property>
<!-- Storage location for the backup copies of the runtime data (execution data of running processes).
FILE The backups are written to the file-based cache store below <inubit-installdir>/inubit/server/ibis_root/ibis_data/cachestore.
DB The backups are written into the system database.
An unknown value falls back to FILE.
Type: String. Default: FILE -->
<Property name="RuntimeDataBackupStore">FILE</Property>
<!-- Share of the maximum JVM heap (-Xmx) in percent that the runtime data caches may occupy in memory.
The resulting size must be greater than 0, otherwise the cache manager refuses to start.
Type: Integer. Default: 25 -->
<Property name="RuntimeDataCacheXMXPercentage" type="Integer">25</Property>
<!-- If true, every connection taken from the pool is additionally checked for validity before it is used,
and is re-established if the check fails. Setting it to false saves the check but leaves the handling
of stale connections to the JDBC driver.
Type: Boolean. Default: true -->
<Property name="CheckValidConnection" type="Boolean">true</Property>
<!-- Number of retries when a connection to the system database cannot be obtained or a statement fails with
a recoverable error. After the last unsuccessful retry the error is reported to the caller.
Type: Integer. Default: 3 -->
<Property name="noOfRetries" type="Integer">3</Property>
<!-- Waiting time in milliseconds between two retries, see noOfRetries.
Type: Long. Default: 2000 -->
<Property name="retryInterval" type="Long">2000</Property>
<!-- Limits for the number of version entries that are kept in memory before older entries are evicted from
the cache. A value less than or equal to 0 means no limit; in that case a warning is written to the log
during startup because large repositories can then cause OutOfMemory errors.
Type: Map -->
<Property name="MaxEntriesInMemoryLimit" type="Map">
<!-- Maximum number of workflow version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Workflow_Data_Version" type="Integer">-1</Property>
<!-- Maximum number of module version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Module_Data_Version" type="Integer">-1</Property>
</Property>
<!-- Number of PBKDF2 iterations used to hash user passwords.
A higher value increases the effort of a brute force attack and the effort of every password check.
Existing password hashes are not changed when the value is modified.
Type: Integer. Default: 20000 -->
<Property name="iterationCount" type="Integer">20000</Property>
<!-- Activates the Virtimo Cluster Manager. With the cluster manager enabled several INUBIT instances can form
a cluster and instances can be added or removed at runtime.
Requires a corresponding license and the configuration in <inubit-installdir>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml;
without a valid license the cluster manager is skipped with a warning in the log.
Type: Boolean. Default: false -->
<Property name="ActivateClusterManager" type="Boolean">false</Property>
</Properties>
<?xml version='1.0' encoding='UTF-8'?>
<!-- INUBIT Process Engine configuration (ibis.xml).
The Process Engine reads this file during startup. It defines the connection to the INUBIT system
database (IBISDB), the identity provider and a number of global runtime settings.
Template usage:
This file is the template for PostgreSQL. Copy it to "ibis.xml" into the same conf directory and adjust
at least the Database settings and initialRootUserPassword before the first start.
File format:
Properties/@version Version of the configuration format. Do not change.
Property/@name Name of the property. Names are case sensitive.
Property/@type Type of the value: Boolean, Integer, Long, Password, EncryptedString or Map.
Without this attribute the value is treated as a string.
Property/@encrypted Only for Password and EncryptedString: "true" if the value is stored encrypted.
Properties of type Map contain nested Property elements.
Properties that are missing from this file fall back to their built-in default values
(see com.inubit.ibis.server.cluster.NodeConfiguration). Most properties are evaluated during startup
only. LocalMaintenanceMode can also be changed at runtime and is then written back to this file;
after a successful startup the server keeps a copy of the file as ibis.xml.bak.1. -->
<Properties version="4.1">
<!-- Puts this node into local maintenance mode.
While maintenance mode is active the node stops processing new incoming messages of its listeners and
connectors, and the cluster event manager is notified so that backup nodes can take over. The property
can also be switched at runtime (for example with the maintenance command of the CLI client) and takes
effect without a restart.
Type: Boolean. Default: false -->
<Property name="LocalMaintenanceMode" type="Boolean">false</Property>
<!-- Enables verbose logging during server startup.
If true, the INUBIT, Infinispan and JGroups loggers are set to DEBUG until the log level of the server
configuration is applied; if false they start at ERROR. This switch is independent of the debug setting
in Workbench > Server Configuration.
Type: Boolean. Default: false -->
<Property name="ClusterDebug" type="Boolean">false</Property>
<!-- Identity provider used for authentication and user management.
inubit Users are managed by the INUBIT Process Engine itself.
keycloak Users are managed by an external Keycloak server; the connection details are read from the
file configured in IdentityProviderConfiguration.
The value is compared case-insensitively; any other or empty value falls back to "inubit".
Type: String. Default: inubit -->
<Property name="IdentityProvider">inubit</Property>
<!-- Name of the file that holds the connection details of the external identity provider.
Only evaluated for IdentityProvider=keycloak. The name is resolved relative to the conf directory of the
installation, so a plain file name such as "keycloak.json" is sufficient.
Type: String. Default: keycloak.json -->
<Property name="IdentityProviderConfiguration">keycloak.json</Property>
<!-- Initial password of the built-in administrator "root".
The value is used only while the default users are created, that is when the root user does not yet
exist in the user store. It must not be empty, otherwise the startup fails with "INITIAL PASSWORD IS
MISSING". Changing the value later has no effect on an already existing root user.
The installer replaces PLACEHOLDER during installation routine.
Change the password afterwards through the Workbench.
Type: String. No default. -->
<Property name="initialRootUserPassword">PLACEHOLDER</Property>
<!-- Connection settings of the INUBIT system database (IBISDB).
These settings are used to build the internal Tomcat JDBC connection pool for the DataSource that is
bound under DataSourceLocation. This template is for PostgreSQL.
Type: Map -->
<Property name="Database" type="Map">
<!-- Fully qualified name of the JDBC driver class.
The JDBC JAR must be placed inside the <inubit-installdir>/inubit/server/process_engine/webapps/ibis/WEB-INF/lib.
Otherwise the startup fails.
Type: String. Required. -->
<Property name="driverClass">org.postgresql.Driver</Property>
<!-- JDBC URL of the system database.
The database flavour is derived from the URL prefix (here: "jdbc:postgresql:").
Replace [host] with the host name of the database server and [database] with the database name;
5432 is the default port.
Type: String. Required. -->
<Property name="jdbcUrl">jdbc:postgresql://[host]:5432/[database]</Property>
<!-- Set database access credentials, username and password
Example:
<Property name="user">inubit-database-user</Property>
<Property name="password" type="Password">secret</Property>
To get your values encrypted, just add the attribute encrypted="true".
The values will be changed after the next server restart:
<Property name="user" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
<Property name="password" type="Password" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
-->
<!-- Set the database user that owns the INUBIT schema.
Must be set before the first start.
The user needs write access to the database. -->
<Property name="user"></Property>
<!-- Set the password of the database user.
An empty value means that the user has no password.
Type: Password. Default: empty -->
<Property name="password" type="Password" encrypted="false"></Property>
<!-- Connect and read timeout of the database connection in milliseconds.
Must be greater than or equal to 0.
Type: Long. Default: 180000 (3 minutes) -->
<Property name="socketTimeoutInMillisecs" type="Long">180000</Property>
<!-- Maximum time in milliseconds a thread waits for a free connection from the pool before the request
fails (maxWait of the connection pool).
Type: Long. Default: 120000 (2 minutes) -->
<Property name="checkoutTimeoutInMillisecs" type="Long">120000</Property>
<!-- Additional connection properties that are passed to the JDBC driver.
Every entry is a nested Property element whose name is the driver property, for example:
<Property name="driverProperties" type="Map">
<Property name="ssl">true</Property>
</Property>
Type: Map. Default: empty -->
<Property name="driverProperties" type="Map"/>
<!-- Initial size of the connection pool and minimum number of connections kept idle.
Must be greater than or equal to 0.
Type: Integer. Default: 5 -->
<Property name="minPoolSize" type="Integer">5</Property>
<!-- Maximum number of connections the pool hands out at the same time, and maximum number of idle
connections.
Must be greater than or equal to minPoolSize.
The database server has to allow at least this number of sessions.
Type: Integer. Default: 30 -->
<Property name="maxPoolSize" type="Integer">30</Property>
<!-- If true, a connection that has been in use longer than removeAbandonedTimeout is regarded as abandoned
and is reclaimed by the pool. Useful to recover from connection leaks, but a connection of a long
running query may be closed while it is still needed.
Type: Boolean. Default: false -->
<Property name="removeAbandoned" type="Boolean">false</Property>
<!-- Time in seconds after which a connection that is in use is regarded as abandoned.
Only effective if removeAbandoned is true. The value should be at least as long as the longest running
query of the installation.
Type: Integer. Default: 21600 (6 hours) -->
<Property name="removeAbandonedTimeout" type="Integer">21600</Property>
</Property>
<!-- JNDI name under which the DataSource of the system database is looked up during startup.
In the standard installation an INUBIT DataSource is bound under this name and is configured with the
Database settings above.
If nothing usable is bound, the startup fails.
Type: String. Default: java:/comp/env/jdbc/IBISDB -->
<Property name="DataSourceLocation">java:/comp/env/jdbc/IBISDB</Property>
<!-- Storage location for the backup copies of the runtime data (execution data of running processes).
FILE The backups are written to the file-based cache store below <inubit-installdir>/inubit/server/ibis_root/ibis_data/cachestore.
DB The backups are written into the system database.
An unknown value falls back to FILE.
Type: String. Default: FILE -->
<Property name="RuntimeDataBackupStore">FILE</Property>
<!-- Share of the maximum JVM heap (-Xmx) in percent that the runtime data caches may occupy in memory.
The resulting size must be greater than 0, otherwise the cache manager refuses to start.
Type: Integer. Default: 25 -->
<Property name="RuntimeDataCacheXMXPercentage" type="Integer">25</Property>
<!-- If true, every connection taken from the pool is additionally checked for validity before it is used,
and is re-established if the check fails. Setting it to false saves the check but leaves the handling
of stale connections to the JDBC driver.
Type: Boolean. Default: true -->
<Property name="CheckValidConnection" type="Boolean">true</Property>
<!-- Number of retries when a connection to the system database cannot be obtained or a statement fails with
a recoverable error. After the last unsuccessful retry the error is reported to the caller.
Type: Integer. Default: 3 -->
<Property name="noOfRetries" type="Integer">3</Property>
<!-- Waiting time in milliseconds between two retries, see noOfRetries.
Type: Long. Default: 2000 -->
<Property name="retryInterval" type="Long">2000</Property>
<!-- Limits for the number of version entries that are kept in memory before older entries are evicted from
the cache. A value less than or equal to 0 means no limit; in that case a warning is written to the log
during startup because large repositories can then cause OutOfMemory errors.
Type: Map -->
<Property name="MaxEntriesInMemoryLimit" type="Map">
<!-- Maximum number of workflow version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Workflow_Data_Version" type="Integer">-1</Property>
<!-- Maximum number of module version entries in memory. -1 means unlimited.
Type: Integer. Default: -1 -->
<Property name="Module_Data_Version" type="Integer">-1</Property>
</Property>
<!-- Number of PBKDF2 iterations used to hash user passwords.
A higher value increases the effort of a brute force attack and the effort of every password check.
Existing password hashes are not changed when the value is modified.
Type: Integer. Default: 20000 -->
<Property name="iterationCount" type="Integer">20000</Property>
<!-- Activates the Virtimo Cluster Manager. With the cluster manager enabled several INUBIT instances can form
a cluster and instances can be added or removed at runtime.
Requires a corresponding license and the configuration in <inubit-installdir>/inubit/server/ibis_root/conf/clustermanager/clusterManagerConfig.xml;
without a valid license the cluster manager is skipped with a warning in the log.
Type: Boolean. Default: false -->
<Property name="ActivateClusterManager" type="Boolean">false</Property>
</Properties>
Configuring the Database
-
Database driver
-
Syntax:
driverClass=<datanase-driver-class> -
Name of the database driver class
-
-
JDBC URL
-
Syntax:
jdbcUrl=jdbc:<database>@<port>:<schema> -
Database driver URL
For MySQL before version 5.7, it is only possible to communicate over TLS 1.2 when adding the property
enabledTLSProtocols=TLSv1.2to the database URL.
-
-
Username
-
user=<Username> encrypted="{true|false} -
Possible values:
-
true: The specified username is encrypted. -
false: The specified username is not encrypted and is replaced by the encrypted username the first time the server starts. The attributeencrypted="true"is set automatically.
-
-
-
Password
-
Syntax:
password=<password> encrypted="{true|false}" -
Possible values:
-
true: The specified password is encrypted. -
false: The specified password is not encrypted and is replaced by the encrypted password the first time the server starts. The attributeencrypted="true"is set automatically.
-
-
-
Socket timeout
-
Syntax:
socketTimeoutInMillisecs=<value> -
For configuration of the timeout for the socket connection between the JDBC driver and database. The value determines both, the connect and read timeout. The default value is 180'000 ms (3 minutes).
-
-
Connection timeout for connection pooling
-
Syntax:
checkoutTimeoutInMillisecs=<value> -
For configuration of the timeout for waiting for the provision of a database connection for the database connection pool. The default value is 120'000 ms (2 minutes).
-
-
Number of database connections
minPoolSize=5 maxPoolSize=30-
These two parameters determine how many database connections must be used at a minimum as well as how many can be used simultaneously. The default values are
5and30.
-
-
Remove abandoned database connections
-
Syntax:
removeAbandoned="{true|false}" -
Possible values:
-
trueA database connection is removed once the timeout configured in the
removeAbandonedTimeoutproperty has expired. -
false(default)Database connections are not removed even if they are not used for some time.
-
-
-
Timeout to Remove abandoned database connections
-
Syntax:
removeAbandonedTimeout=<value> -
If the
removeAbandonedproperty is set totrue, a database connection is removed once the timeout in seconds configured in theremoveAbandonedTimeoutproperty has expired. By default, theremoveAbandonedTimeoutproperty is set to 21'600 seconds (6 hours).The value should be set to the longest running query your applications might have.
-
-
Valid connection check
-
Syntax:
CheckValidConnection="{true|false}" -
Possible values:
-
true: In case of an invalid connection, the next connection from the pool is selected automatically.By default, this property is set to
true. -
false: To disable the property.When this property is enabled, the performance may be slightly affected.
-
-
-
Database query retry and retry delay
noOfRetries=3 retryInterval=2000-
In case of cache database errors, the query execution can be retried for a number of times specified in
noOfRetries. Each retry will happen after a delay of time specified inretryInterval(in milliseconds).For MSSQL deadlocks, the following applies:
In case of frequent deadlocks in the MSSQL database, you can try to increase the number of retries and the delay between each retry.
The default values for these properties for MSSQL are 3 retries and 2000 milliseconds retry interval.
-
Allow using more than one schema (for MySQL 8 only, not recommended)
-
Syntax:
nullCatalogMeansCurrent="{true|false}" -
If a database user has access to more than one schema: Add the extra parameter
nullCatalogMeansCurrent=trueto the database URL.
Limiting the Size of the Runtime Data Cache
Usage
Defines the maximum percentage of the JVM heap (-Xmx) that may be used for caching runtime data (message payloads and workflow variables) in memory.
When the combined size of all cached entries exceeds this limit, or an individual entry is larger than 1 MB, the data is automatically written to disk instead of being kept in memory.
The Process Engine continues to operate normally in this case.
There is no error or data loss, but disk I/O increases.
Properties
-
Syntax:
RuntimeDataCacheXMXPercentage=25 -
Default value:
25(25% of the JVM heap) -
Example:
If the JVM is started with
-Xmx4g(4 GB heap), 25% means approximately 1 GB is available for the runtime data cache.
With-Xmx16g, the same 25% results in approximately 4 GB. -
Recommendation:
For systems with significantly more heap than the default 4 GB, increasing the value can reduce disk I/O and improve throughput. Increase the value gradually and monitor the cache utilization and garbage collection behavior, as the remaining heap must still be sufficient for all other Process Engine operations. Cache utilization can be monitored via JMX (MBean
DataStore.Binary, attributesRuntimeDataCacheMaxSizeandRuntimeDataCacheUtilization).Refer to Folder Structure for details on the swap directories used when the cache limit is exceeded.
Memory Mode for Runtime Data
Usage
Determines how runtime data of asynchronous workflow executions is persisted. This setting controls whether and where the Process Engine writes backup copies of in-flight asynchronous execution data so that workflows can be recovered after a restart or crash.
Synchronous execution data is not affected by this setting. Synchronous data uses its own local stores without backup; it can still be swapped to disk on memory pressure, but is not persisted for recovery (see Folder Structure).
Properties
-
Syntax:
RuntimeDataBackupStore={FILE|DB} -
Possible values:
-
FILE(default)Runtime data is persisted to the local file system.
Use this setting for best performance. File-based persistence has lower overhead than database persistence.
-
DBRuntime data is persisted to the database (tables
IBIS_RT_EXEC_DATAandIBIS_RT_OTHER_DATA).Use this setting when data durability is more important than performance.
-
Configuring Retry and Retry Delay for the Cache Database
Properties
noOfRetries=3
retryInterval=2000
In case of cache database errors, the query execution can be retried for a number of times specified in noOfRetries.
Each retry will happen after a delay of time specified in retryInterval (in milliseconds).
The default values are 3 retries and 2000 ms delay.
Configuring Memory for Version Data
Usage
This configuration limits the number of module and workflow version definitions (XML data) that the Process Engine keeps in its in-memory cache. The limit refers to the total number of version entries across all modules or workflows, not the number of modules/workflows themselves.
Example: A limit of 100 for Module_Data_Version means that at most 100 module-version combinations are kept in memory at the same time.
If there are 20 modules with 5 versions each, all 100 entries fit in the cache.
A 21st module’s versions would cause some of the existing entries to be evicted from memory.
Properties
<Property name="MaxEntriesInMemoryLimit" type="Map">
<Property name="Workflow_Data_Version" type="Integer">-1</Property>
<Property name="Module_Data_Version" type="Integer">-1</Property>
</Property>
-
Module_Data_Version: Maximum number of module version entries in the cache -
Workflow_Data_Version: Maximum number of workflow version entries in the cache
Eviction behavior
When the cache reaches its configured limit, the underlying Infinispan cache implementation evicts entries to make room for new ones. Evicted entries are not lost: all version data is also stored in the database, so an evicted entry is automatically reloaded from the database on the next access. Setting a limit therefore does not affect the availability of version data, only the access speed for entries that are not currently in memory.
Possible Values
-
-1(default): Cache capacity is unlimited. All accessed versions remain in memory indefinitely.With a large number of module and workflow versions, unlimited caching can lead to high memory consumption and out-of-memory situations.
-
1..n: Cache capacity is limited to this number of entries. Adjust based on the system’s available memory and the number of versions typically accessed during operation.
Configuring the ClusterDebug
-
Syntax:
ClusterDebug={true|false} -
Possible values:
-
trueThe log level can be changed after booting in the Workbench via Administration → Logging → Trace. When the server is restarted, it logs again at the DEBUG log level because ClusterDebug is true.
-
falseThe log level can be changed after booting in the Workbench via Administration → Logging → Trace. When the server is restarted, it logs again at the ERROR log level because ClusterDebug is false.
-
Configuring the iterationCount
The PBKDF2 (Password Based Key Derivation Function 2) user account password encryption algorithm uses an iterationCount to determine the number of times the hash algorithm is applied during the key derivation process.
The iterationCount in PBKDF2 represents the number of times a pseudorandom function (such as HMAC-SHA256) is applied to a password to derive a secure key.
The default value for iterationCount in ibis.xml is 20000.
-
Higher iterationCount: The hash function (such as HMAC-SHA256) is used more frequently during the key derivation process when the iterationCount is higher.
Advantages:
-
Increased Security: Makes brute force and password cracking attempts more expensive for attackers.
-
Key Strengthening: The derived key is protected against precomputed attacks (like rainbow tables) because each derivation is linked to the unique salt and the number of iterations.
Disadvantages:
-
Slow down response times
-
Decrease throughput
-
Cause a short term spike in CPU and disk use
-
-
Lower iterationCount: The hash function is used less frequently when the iterationCount is lower.
Advantages:
Useful for low power devices or high traffic systems where speed is critical.
Disadvantages:
Decreased Security: Improves password cracking and brute force attacks quicker for attackers.