Skip to main content

xSuite Interface Windows Prism 5.x – Online-Hilfe

Beispielkonfiguration: Globale Konfiguration

Die Beispielkonfiguration umfasst 2 globale Konfigurationsdateien:

  1. example_globalConfig_webService.json: Konfigurationsdatei für die Webservices

  2. example_globalConfig_worker.json: Konfigurationsdatei für die Worker zur Szenario-Verarbeitung

Zusätzlich ist die Include-Datei example_globalConfig_common.json vorhanden. Zur Vermeidung redundanter Konfigurationseinträge sind in dieser Datei alle Einstellungen, die von den beiden anderen Dateien gemeinsam genutzt werden. Das betrifft insbesondere Einstellungen zur Datenbankanbindung und zum Logging sowie die globalen Konstanten. In den anderen beiden Dateien definiert die Eigenschaft General.IncludeConfig, dass die Inhalte der Include-Datei zur Laufzeit automatisch zu den übrigen Inhalten hinzugefügt werden sollen.

Logging

Das gemeinsame Logging erfolgt hier gleichzeitig in alle unterstützten Ausgangskanäle, d.h. in die Konsole (.ToConsole), die interne Verwaltungsdatenbank (.Database.Type) und das Dateisystem (.File).

Bei dem Logging in das Dateisystem werden dynamisch Unterorder mit dem Tagesdatum erzeugt. Die Logdateien selbst werden namentlich nach Mandanten und Kategorien getrennt, sodass jede Webservice-Instanz und Worker-Instanz eine eigene Logdatei beschreibt, ohne dass sich Einträge überschneiden. Warnungen und Fehler werden zusätzlich in der Windows-Ereignisanzeige (.ToEventLog) und als E-Mail-Benachrichtigung (.Mail) ausgegeben. Für die E-Mail-Benachrichtigung wird hier beispielhaft ein SMTP-Server angesprochen. Der Grad des Loggings (.Level) ist auf den Wert "Debug" eingestellt, der für den Regelbetrieb sinnvoll ist. Der Wert "Trace" sollte nur zu Analysezwecken genutzt werden.

Datenbank

Als Verwaltungsdatenbank wird ein Microsoft SQL Server verwendet, da dieser in der Praxis oft genutzt wird. Hinsichtlich der Geschwindigkeit sollte jedoch einer MongoDB grundsätzlich der Vorzug gegeben werden, wo immer das möglich ist. Bei der Nutzung eines relationalen Datenbanksystems sollte zumindest das Logging in die Datenbank möglichst deaktiviert werden, weil dieses insbesondere bei einem hohen Log-Level zu einer hohen Belastung des Datenbanksystems führt.

Webservices

Die Programminstanz, die für die Ausführung der Webservices zuständig ist, benötigt ein Zertifikat für die Verschlüsselung von Passwörtern und ein Serverzertifikat für die SSL-/TLS-Verschlüsselung (Certificate[].Usage). Das Zertifikat für die Verschlüsselung von Passwörtern wird in der Beispielkonfiguration aus einer passwortgeschützten Datei geladen. Das Serverzertifikat wird anhand des Ortes und Namens im Windows-Zertifikatsspeicher gesucht.

Der Sternchen-Platzhalter für den Hostnamen in der Web-Adresse (WebService.Url[]) sorgt dafür, dass die Webservices über alle gültigen Namen angesprochen werden können, d.h. über den Servernamen und lokal über localhost. Der URL-Basispfad (.UrlBasePath) ist hier mit dem Standardwert belegt, kann durch Angabe von / aber auch explizit entfernt werden, um den Pfad nicht bei jedem Webservice-Aufruf als festen Adressbestandteil mit angeben zu müssen.

Als einfachste Variante eines Zugriffsschutzes ist für die Webservices eine Basisauthentifizierung konfiguriert (.AuthMode), die dafür sorgt, dass ein Benutzer sich im Browser mit einer der hinterlegten Benutzer-/Passwort-Kombinationen (.BasicAuthUser[]) anmelden muss.

Für den vorgesehenen Anwendungsfall sind sowohl der Status-Webservice als auch der Config-Webservice aktiviert (StatusService.Activate und ConfigService.Activate). Damit die separat laufende Programminstanz zur Szenarioverarbeitung regelmäßig Live-Informationen zum Status der Worker-Instanzen übermitteln kann, ist auf beiden Seiten die via UDP erfolgende Kommunikation konfiguriert (StatusService.LiveInfo). Hier auf der Empfängerseite ist dazu die Adresse angegeben, unter der auf eingehende Daten gehorcht werden soll (.UdpAddress). Außerdem muss diese Funktionalität beiderseitig eingeschaltet sein (.ViewWorkers).

Worker

In der Konfiguration der Instanz, die für die Szenarioausführung zuständig ist, ist die UDP-Adresse für die Live-Informationen aus Sicht des Senders definiert. Während beim Empfänger analog zu der Webservice-Adresse auch ein Sternchen-Platzhalter für den Hostnamen zulässig ist, wird auf Sender-Seite der konkrete Name des Zielhosts benötigt. Zusätzlich ist die Basisadresse des Status-Webservices der Gegenseite angegeben (.StatusServiceUrl), weil auf diesem zusätzlichen Weg Informationen für die Verschlüsselung der UDP-Daten auf Anwendungsebene übermittelt werden.

In der globalen Konfiguration der Instanz sind die Zuordnungen des Szenarios zu den Worker-Instanzen definiert (Worker[]). Darüber hinaus übernimmt die Instanz auch die Aufgabe der zeitgesteuerten Ausführung von allgemeinen Scheduler-Tasks (Schedule.Task[]) zum Aufräumen alter Daten bei Erreichen eines bestimmten Alters. Konkret sind dieses hier 2 makrobasierte Tasks zum Löschen von Stapel-/Dokument-Einträgen und von Log-Einträgen aus der Datenbank (DeleteBatches() und DeleteDbLogEntries()) sowie ein Task zum Löschen der datumsbezogenen Log-Unterorder aus dem Dateisystem (DeleteFolders()). Analog zu diesem kann bei Bedarf auch ein weiterer Task zur Löschung alter Backup-Daten der Szenario-Verarbeitung eingerichtet werden.