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.2der 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}
-
trueEine Datenbankverbindung wird entfernt, wenn die in der Property
removeAbandonedTimeoutgesetzte 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
-
trueDer lokale Wartungsmodus wird aktiviert.
-
falseDer 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 |
Wenn Sie den Index aus bestehenden Infinispan-Tabellen löschen möchten, gehen Sie folgendermaßen vor:
-
Setzen Sie die Eigenschaft auf
falseinibis.xmlnach 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_RULESin 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}
-
trueHinweis: 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.
-
falseHinweis: 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.
-
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
-
-
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.