INUBIT in der Datei ibis.xml konfigurieren

Konfigurationsdatei

<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>

Datenbank in der Datei ibis.xml konfigurieren

Verwendung

Setzen der Parameter für den Datenbankzugriff

Properties

Property-Typ

type=Map

Mögliche Werte

  • Map

    Zeigt an, dass diese Property als Struktur weitere Unterpropertys enthalten kann

Datenbanktreiber

driverClass=oracle.jdbc.OracleDriver

Mögliche Werte

  • Oracle-Treiber

  • MS SQL-Treiber

  • MySQL-Treiber

JDBC-URL

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

Mögliche Werte

  • Oracle-JDBC-URL

  • MS SQL-JDBC-URL

  • MySQL-JDBC-URL

    Für MySQL vor der Version 5.7 ist es nur möglich, über TLS 1.2 zu kommunizieren, wenn Sie die Property enabledTLSProtocols=TLSv1.2 der Datenbank-URL hinzufügen.

Benutzername

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

true: Der angegebene Benutzername ist verschlüsselt.

false: Der angegebene Benutzername ist nicht verschlüsselt und wird beim ersten Serverstart durch den verschlüsselten Benutzernamen ersetzt. Das Attribut encrypted="true" wird automatisch gesetzt.

Passwort

password=<Passwort>
encrypted="{true|false}"

true: Das angegebene Passwort ist verschlüsselt.

false: Das angegebene Passwort ist nicht verschlüsselt und wird beim ersten Serverstart durch das verschlüsselte Passwort ersetzt. Das Attribut encrypted="true" wird automatisch gesetzt.

Socket-Timeout

socketTimeoutInMillisecs=180000

Zum Konfigurieren der Timeouts für die Socket-Verbindung zwischen JDBC-Treiber und Datenbank. Der Wert bestimmt sowohl Connect-Timeout als auch Read-Timeout. Standardwert ist 180'000 ms (3 Minuten).

Verbindungs-Timeout für das Connection-Pooling

checkoutTimeoutInMillisecs=120000

Zum Konfigurieren des Timeouts für das Warten auf die Bereitstellung einer Datenbankverbindung für den Datenbank-Connection-Pool. Standardwert ist 120'000 ms (2 Minuten).

Anzahl der Datenbankverbindungen

minPoolSize=5
maxPoolSize=30

Diese beiden Parameter legen fest, wie viele Datenbankverbindungen mindestens und höchstens gleichzeitig verwendet werden dürfen. Vorgabewerte sind 5 bzw. 30.

Unbenutzte Datenbankverbindungen entfernen

removeAbandoned={true|false}

  • true

    Eine Datenbankverbindung wird entfernt, wenn die in der Property removeAbandonedTimeout gesetzte Zeitspanne überschritten ist.

  • false (Standard)

    Datenbankverbindungen werden nicht entfernt, auch wenn sie längere Zeit nicht benutzt wurden.

Zeitspanne, nach der unbenutzte Datenbankverbindungen entfernt werden

removeAbandonedTimeout=21600

Wenn die Property removeAbandoned auf true gesetzt ist, wird eine Datenbankverbindung entfernt, sobald die in der Property removeAbandonedTimeout gesetzte Zeitpanne in Sekunden überschritten ist. Standardmäßig ist die Property removeAbandonedTimeout auf 21'600 Sekunden (6 Stunden) gesetzt.

Der Wert sollte auf die Zeitspanne gesetzt werden, die die am längsten dauernde Anfrage benötigt.

Prüfen auf gültige Verbindung

CheckValidConnection={true|false}

true: Wenn eine Verbindung ungültig ist, wird automatisch die nächste Verbindung aus dem Pool ausgewählt.

Diese Property ist standardmäßig auf true gesetzt. Um die Property zu deaktivieren, muss sie auf false gesetzt werden.

Wenn die Property aktiviert ist, kann die Performance dadurch leicht beeinflusst werden.

Wiederholung und Wiederholungsverzögerung für Datenbankabfragen

noOfRetries=3
retryInterval=2000

Im Falle von Datenbankfehlern kann die Datenbankabfrage mehrmals wiederholt werden, wie in noOfRetries definiert. Jeder Wiederholungsversuch erfolgt nach einer in retryInterval (in Millisekunden) angegebenen Zeitverzögerung.

Für MSSQL-Deadlocks gilt Folgendes:

Im Falle häufiger Deadlocks in der MSSQL-Datenbank können Sie versuchen, die Anzahl der Wiederholungen und die Wiederholungsverzögerung von Datenbankabfragen zu erhöhen.

Die Standardwerte für diese Properties für MSSQL sind 3 Wiederholungen und 2000 Millisekunden Wiederholungsintervall.

Um das Herunterfahren der INUBIT Process Engine wegen kurzzeitiger Probleme mit der Datenbankverbindung zu vermeiden, können Sie einen sogenannten Leaky-Bucket-Algorithmus konfigurieren, siehe Toleranz gegenüber einer Unterbrechung der Datenbankverbindung konfigurieren.

Mehr als ein Schema zulassen (nur für MySQL 8, nicht empfohlen)

nullCatalogMeansCurrent={true|false}

Wenn ein Datenbankbenutzer Zugriff auf mehrere Schemas hat: Fügen Sie den zusätzlichen Parameter nullCatalogMeansCurrent=true der Datenbank-URL hinzu.

Größe des Laufzeitdaten-Cache begrenzen

Verwendung

Maximal zulässiger prozentualer Anteil der Laufzeitdaten am Java-Speicher

Property

RuntimeDataCacheXMXPercentage=25

Speichermodus für Laufzeitdaten

Verwendung

Legt fest, wie die Laufzeitdaten gespeichert werden sollen

Property

RuntimeDataBackupStore={FILE|DB|NONE}

Mögliche Werte

  • FILE (Standard)
    Laufzeitdaten werden im Dateisystem gespeichert.

  • DB
    Laufzeitdaten werden in der Datenbank gespeichert.

  • NONE
    Laufzeitdaten werden nicht gespeichert.

Wiederholung und Wiederholungsverzögerung für die Cache-Datenbank konfigurieren

Verwendung

Setzen der Parameter für den Cache-Datenbankzugriff

Property

noOfRetries=3
retryInterval=2000

Im Falle von Cache-Datenbankfehlern kann die Datenbankabfrage für die in noOfRetries festgelegte Anzahl an Wiederholungen erneut versucht werden. Jeder erneute Versuch erfolgt nach der in retryInterval festgelegten Verzögerungszeit (in Millisekunden).

Die Standardwerte sind 3 Wiederholungen und 2000 Millisekunden Verzögerung.

Um das Herunterfahren der INUBIT Process Engine wegen kurzzeitiger Probleme mit der Datenbankverbindung zu vermeiden, können Sie einen sogenannten Leaky-Bucket-Algorithmus konfigurieren, siehe Toleranz gegenüber einer Unterbrechung der Datenbankverbindung konfigurieren.

Lokalen Wartungsmodus konfigurieren

Verwendung

Lokalen Wartungsmodus konfigurieren

Property

LocalMaintenanceMode=true | false

Mögliche Werte

  • true

    Der lokale Wartungsmodus wird aktiviert.

  • false

    Der lokale Wartungsmodus wird deaktiviert.

Speicher für Versionsdaten konfigurieren

Verwendung

Diese Konfiguration dient der Optimierung der Auslastung des verfügbaren Arbeitsspeichers durch den INUBIT.

Solange die genutzte INUBIT Process Engine ohne Speicherprobleme arbeitet, belassen sie die Einstellung auf dem Standardwert (-1 – unbegrenzt).

Zeigt die INUBIT Process Engine Speicherprobleme (z.B. OutOfMemoryException) bei der Ausführung bzw. Verarbeitung von Technischen Workflows und deren Modulen, kann eine Anpassung dieses Wertes helfen.

Property

Sie konfigurieren hier die maximale Anzahl aller Versionen, die im Speicher (Cache) der Process Engine vorgehalten werden (über alle Nutzer und Gruppen hinweg). Ist der Versions-Cache voll, werden weiterhin fehlende Versionen nachgeladen. Diese ersetzen dann aber bestehende Einträge (cache swapping).

  • Anzahl aller Workflowversionen: Workflow_Data_Version=[1..n|-1]

  • Anzahl aller Modulversionen: Module_Data_Version=[1..n|-1]

Mögliche Werte

-1 – unbegrenzt (Standardwert) – Anzahl der Versionen ist unbegrenzt. Es werden so viele Versionen vorgehalten, wie in den der Process Engine zur Verfügung stehenden Speicher hineinpassen.

1..n – Anzahl der Versionen ist auf diesen Wert begrenzt. Ist die maximale Anzahl von Versionen in den Speicher geladen. Kommt es auch nach der Angabe eines Wertes zu Speicherproblemen, verringern Sie diesen Wert. Läuft ihr System wieder stabil, aber langsam, erhöhen Sie den Wert.

Zeitstempel-Indexierung auf Infinispan

Verwendung

Kontrolliert das Indexierungsverhalten für die Zeitstempelspalten in den Infinispan-Tabellen.

Property

indexEnabled={true|false}

true: Aktiviert die Indexierung von Infinispan-Tabellen.

false: Deaktiviert die Indexierung von Infinispan-Tabellen.

Standardmäßig ist diese Eigenschaft auf false gesetzt. Damit ist ein bestehendes INUBIT-System abwärtskompatibel. Die Indexierung muss so explizit eingeschaltet und das System kann dabei überwacht werden.

Wenn der Parameter nach der Indexierung auf false gesetzt wird, wird dies keine Deindexierung auslösen, da die Indexierung bereits aktiviert wurde.

Wenn Sie den Index aus bestehenden Infinispan-Tabellen löschen möchten, gehen Sie folgendermaßen vor:

  • Setzen Sie die Eigenschaft auf false in ibis.xml nach Abschalten des Process Engine:
    <Property name="indexEnabled" type="Boolean">false</Property>

  • Führen Sie die entsprechenden SQL-Queries aus, um den Zeitstempel-Index basierend auf Ihrem Datenbanktyp aus allen ISPN-Tabellen zu löschen:

    • 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>;

      Beispiel: Für eine Tabelle namens ISPN_EDI_RULES in MySQL/MariaDB:
      ALTER TABLE ISPN_EDI_RULES
      DROP INDEX ISPN_EDI_RULES_timestamp_index;

      Diese Queries müssen auf allen Tabellen mit der Präfix ISPN_ ausgeführt werden.