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="ClusterDebug" type="Boolean">false</Property>
    <Property name="IdentityProvider">[ inubit | keycloak ]</Property>
    <Property name="IdentityProviderConfiguration">/path/to/config/file</Property>
    <Property name="initialRootUserPassword">...</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;DB_CLOSE_ON_EXIT=FALSE
        </Property>
        <Property name="user">sa</Property>
        <Property name="password" type="Password" encrypted="true">...</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 name="removeAbandoned" type="Boolean">false</Property>
        <Property name="removeAbandonedTimeout" type="Integer">21600</Property>
    </Property>
    <Property name="DataSourceLocation">java:/comp/env/jdbc/IBISDB</Property>
    <Property name="RuntimeDataBackupStore">FILE</Property>
    <Property name="RuntimeDataCacheXMXPercentage" type="Integer">25</Property>
    <Property name="CheckValidConnection" type="Boolean">true</Property>
    <Property name="noOfRetries" type="Integer">3</Property>
    <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="iterationCount" type="Integer">20000</Property>
    <Property name="ActivateClusterManager" type="Boolean">false</Property>
    <Property name="indexEnabled" type="Boolean">false</Property>
    <Property name="NodeName">192.168.139.152</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.

Der Speicher für Versiondaten konfigurieren

Verwendung

Diese Konfiguration wird verwendet, um die Nutzung des verfügbaren RAM durch das INUBIT zu optimieren. Derzeit ist diese Option nur für Modul- und Workflow-Versionen verfügbar.

Eigenschaften

Diese Einstellung bestimmt die maximale Anzahl von Prozessversionen, die die Process Engine zu jedem Zeitpunkt im Speicher (Cache) ablegen kann. Da mehrere Benutzer und Gruppen mit dem System interagieren, tragen alle ihre Prozessversionen zu dieser Grenze bei.

Das System verwendet den Least Frequently Used (LFU) Algorithmus, um den Cache effizient zu verwalten. Dies bedeutet, dass die am wenigsten genutzte Version gelöscht wird, um Platz für neue Versionen zu schaffen, wenn der Cache seine maximale Kapazität erreicht.

<Property name="MaxEntriesInMemoryLimit" type="Map">
    <Property name="Workflow_Data_Version" type="Integer">-1</Property>
    <Property name="Module_Data_Version" type="Integer">-1</Property>
</Property>
  • MaxEntriesInMemoryLimit: Maximale Anzahl von Einträgen im Speicher

  • Module_Data_Version: [1..n|-1]: Die Anzahl aller Modulversionen im Cache

  • Workflow_Data_Version: [1..n|-1]: Die Anzahl aller Workflow-Versionen im Cache.

Mögliche Werte

  • -1: [Unbegrenzt (Defaultwerte)] : Cache-Kapazität wird als unbegrenzt gesetzt.

Die Verwendung der unbegrenzten Cache-Kapazität kann zu Speicherproblemen führen.

  • 1..n: Die Cache-Kapazität ist auf diesen Wert gesetzt. Dies gibt die maximale Anzahl von Versionen (Modul/Workflow) an, die zu einem beliebigen Zeitpunkt im Speicher geladen werden. Dies muss basierend auf dem verfügbaren Speicher des Systems und den während der Lebensdauer der Process Engine abgerufenen Versionen angepasst werden.

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.

ClusterDebug konfigurieren

ClusterDebug={true|false}

  • true

    Hinweis: Die Änderung des Loglevels ist nach dem Hochfahren in der Workbench über Administration → Logging → Trace möglich.

    Wenn der Server neu gestartet wird, protokolliert er erneut auf dem DEBUG-Loglevel, da ClusterDebug auf true gesetzt ist.

  • false

    Hinweis: Die Änderung des Loglevels ist nach dem Hochfahren in der Workbench über Administration → Logging → Trace möglich.

    Wenn der Server neu gestartet wird, protokolliert er erneut auf dem ERROR-Loglevel, da ClusterDebug auf false gesetzt ist.

iterationCount konfigurieren

Der PBKDF2 (Password Based Key Derivation Function 2) Algorithmus zur Verschlüsselung von Benutzerkontopasswörtern verwendet ein iterationCount, um die Anzahl der Anwendungen des Hash-Algorithmus während des Schlüsselableitungsprozesses zu bestimmen. Die Anzahl der Iterationen im PBKDF2 gibt an, wie oft eine Pseudozufallsfunktion (wie HMAC-SHA256) auf ein Passwort angewendet wird, um einen sicheren Schlüssel abzuleiten. Der Standardwert für das iterationCount in ibis.xml beträgt 20000.

  1. Höheres iterationCount: Die Hash-Funktion (z. B. HMAC-SHA256) wird während der Schlüsselableitung häufiger verwendet, wenn das iterationCount höher ist.

    Vorteile:

    • Erhöhtes Security: Erschwert Brute-Force- und Passwortknackversuche für Angreifer.

    • Key Verstärkung: Der abgeleitete Schlüssel ist gegen vorberechnete Angriffe (wie Regenbogentabellen) geschützt, da jede Ableitung mit dem eindeutigen Salt und der Anzahl der Iterationen verknüpft ist.

    Nachteile:

    • Verzögert die Reaktionszeiten

    • erringert den Durchsatz

    • Verursacht einen kurzfristigen Anstieg der CPU- und Festplattennutzung

  2. Niedriges iterationCount: Die Hash-Funktion wird weniger häufig verwendet, wenn das terationCount niedriger ist.

    Vorteile: Nützlich für Geräte mit geringer Leistungsstärke oder Systeme mit hohem Datenverkehr, bei denen Geschwindigkeit entscheidend ist.

    Nachteile:

    Verringertes Security: Verbessert das Knacken von Passwörtern und Brute-Force-Angriffe für Angreifer.