Configuring INUBIT in the ibis.xml File

Configuration file

<inubit-installdir>/inubit/server/ibis_root/conf/ibis.xml

<Properties version="4.1">
  <Property name="LocalMaintenanceMode" type="Boolean">false</Property>
  <Property name="Database" type="Map">
    <Property name="driverClass">org.h2.Driver</Property>
    <Property name="jdbcUrl">jdbc:h2:${ibis.root.directory}/ibis_data/database/ibis;MVCC=TRUE</Property>
    <!-- Encrypted password and/or user name
      To get your encrypted password and/or user name use the CLI client.
      Example:
        cd path/to/inubit_installation/server/process_engine/bin
        ./startcli.sh -\-encryptString myPassword
      Insert the encrypted password and/or user name as values into the corresponding
      property tags and set the
      attribute encrypted="false" to encrypted="true".
      Example:
        <Property name="user" type="EncryptedString" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
        <Property name="password" type="Password" encrypted="true">AES-ZKEFCtfXeLAmGUdQ2zomyA==</Property>
    -->
    <Property name="user" type="EncryptedString" encrypted="false">sa</Property>
    <Property name="password" type="Password" encrypted="false"></Property>
    <Property name="socketTimeoutInMillisecs" type="Long">180000</Property>
    <Property name="checkoutTimeoutInMillisecs" type="Long">120000</Property>
    <Property name="driverProperties" type="Map"/>
    <Property name="minPoolSize" type="Integer">5</Property>
    <Property name="maxPoolSize" type="Integer">30</Property>
  </Property>
  <Property name="DataSourceLocation">java:/comp/env/jdbc/IBISDB</Property>
  <Property name="RuntimeDataBackupStore">FILE</Property>
  <Property name="RuntimeDataCacheXMXPercentage" type="Integer">25</Property>
  <!-- Retry happens based on number of retries configured below -->
  <Property name="noOfRetries" type="Integer">3</Property>
  <!-- Retry interval value should be given in milliseconds-->
  <Property name="retryInterval" type="Long">2000</Property>
  <Property name="MaxEntriesInMemoryLimit" type="Map">
    <Property name="Workflow_Data_Version" type="Integer">-1</Property>
    <Property name="Module_Data_Version" type="Integer">-1</Property>
  </Property>
  <Property name="indexEnabled" type="Boolean">false</Property>
</Properties>

Configuring the Database in the ibis.xml File

Usage

Set the parameters for database access

Properties

Property type

type=Map

Possible values

  • Map

    Indicates that this property can contain further sub-properties as structure

Database driver

driverClass=oracle.jdbc.OracleDriver

Possible values

  • Oracle driver

  • MS SQL driver

  • MySQL driver

JDBC URL

jdbcUrl=jdbc:oracle:thin:@oracle:1521:InubitDB

Possible values

  • Oracle JDBC URL

  • MS SQL JDBC URL

  • MySQL JDBC URL

    For MySQL before version 5.7, it is only possible to communicate over TLS 1.2 when adding the property enabledTLSProtocols=TLSv1.2 to the database URL.

Username

User=<Username>
encrypted="{true|false}"

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 attribute encrypted="true" is set automatically.

Password

password=<Password>

encrypted="{true|false}"

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 attribute encrypted="true" is set automatically.

Socket timeout

socketTimeoutInMillisecs=180000

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

checkoutTimeoutInMillisecs=120000

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 5 and 30.

Remove abandoned database connections

removeAbandoned={true|false}

  • true

    A database connection is removed once the timeout configured in the removeAbandonedTimeout property has expired.

  • false (default)

    Database connections are not removed even if they are not used for some time.

Timeout to Remove abandoned database connections

removeAbandonedTimeout=21600

If the removeAbandoned property is set to true, a database connection is removed once the timeout in seconds configured in the removeAbandonedTimeout property has expired. By default, the removeAbandonedTimeout property 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

CheckValidConnection={true|false}

true: In case of an invalid connection, the next connection from the pool is selected automatically.

By default, this property is set to true. To disable the property, set it to false.

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 in retryInterval (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.

To prevent a shutdown of the INUBIT Process Engine due to temporary database connectivity issues, a so-called leaky bucket mechanism can be configured, refer to Configuring Database Connectivity Loss Tolerance.

Allow using more than one schema (for MySQL 8 only, not recommended)

nullCatalogMeansCurrent={true|false}

If a database user has access to more than one schema: Add the extra parameter nullCatalogMeansCurrent=true to the database URL.

Limiting the Size of the Runtime Data Cache

Usage

Maximum allowable percentage of runtime data in the Java memory

Property

RuntimeDataCacheXMXPercentage=25

Memory Mode for Runtime Data

Usage

Determines how the runtime data is to be stored

Property

RuntimeDataBackupStore={FILE|DB|NONE}

Possible values

  • FILE (default)

    Runtime data is stored in the file system .

  • DB

    Runtime data is stored in the database.

  • NONE

    Runtime data is not stored.

Configuring Retry and Retry Delay for the Cache Database

Usage

Set the parameters for cache database access

Property

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.

To prevent a shutdown of the INUBIT Process Engine due to temporary database connectivity issues, a so-called leaky bucket mechanism can be configured, refer to Configuring Database Connectivity Loss Tolerance.

Configuring the Maintenance Mode

Usage

Configuring the maintenance mode of the Process Engine on startup.

Property

LocalMaintenanceMode=true | false

Possible Values

  • true

    The local maintenance mode is activated.

  • false

    The local maintenance mode is deactivated.

Configuring Memory for Version Data

Usage

This configuration is used to optimize the utilization of the available RAM by the INUBIT.

As long as the INUBIT Process Engine used works without memory problems, leave the setting at the default value (-1 – unlimited).

If the INUBIT Process Engine shows memory problems (e.g. OutOfMemoryException) during execution or Processing of Technical Workflows and their modules, an adjustment of this value can help.

Property

Here, you configure the maximum number of all versions stored in the memory (cache) of the Process Engine (across all users and groups). If the version cache is full, missing versions are still loaded. These then replace existing entries (cache swapping).

  • Number of all module versions: Module_Data_Version=[1..n|-1]

  • Number of all workflow versions: Workflow_Data_Version=[1..n|-1]

Possible Values

-1 – unlimited (default value) - Number of versions is unlimited. As many versions are available as fit into the memory available to the Process Engine.

1..n – Number of versions is limited to this value. The maximum number of versions is loaded into memory. If there are memory problems after specifying a value, reduce this value. If the system is stable again but slow, increase the value.

Timestamp Indexing on Infinispan

Usage

Controls the indexing behavior for timestamp columns in Infinispan tables.

Property

indexEnabled={true|false}

true: Enables indexing of Infinispan tables.

false: Disables indexing of Infinispan tables.

By default, this property is set to false. This keeps an existing INUBIT system backwards compatible. Indexing must be explicitly switched on and the system can be monitored.

If the parameter is set to `false` after indexing is applied, it will not trigger deindexing, because indexing has already been activated.

If you want to drop the index from existing Infinispan tables, follow these steps:

  • Set the property to false in ibis.xml after shutting down the Process Engine:
    <Property name="indexEnabled" type="Boolean">false</Property>

  • Execute the appropriate SQL queries to drop the timestamp index from all ISPN tables based on your database type:

    • MariaDB/MySQL
      ALTER TABLE <Database Name>
      DROP INDEX <Database Name>_timestamp_index;

    • PostgreSQL
      DROP INDEX <Database Name>_timestamp_index;

    • Microsoft SQL
      DROP INDEX <Database Name>_timestamp_index ON <Database Name>;

    • Oracle
      DROP INDEX IDX_<Database Name>;

      Example: For a table named ISPN_EDI_RULES in MySQL/MariaDB:
      ALTER TABLE ISPN_EDI_RULES
      DROP INDEX ISPN_EDI_RULES_timestamp_index;

      These queries must be run on all the tables with the ISPN_ prefix.