Skip to main content

xSuite Interface Windows Prism 5.x – Online-Hilfe

Konstanten

In jeder Konfiguration kann ein Abschnitt mit Konstanten definiert werden. Ein solcher Abschnitt dient primär dazu, in standardisierten Konfigurationsvorlagen die Konfigurationswerte, die projektspezifisch angepasst werden, an zentraler Stelle zu pflegen.

Jede Konstantendefinition besteht aus einem Name-/Wert-Paar. Der Name dient in der Syntax %Konstantenname%, d.h. in Prozentzeichen eingebettet, als Platzhalter. Dieser Platzhalter kann an einer anderen Stelle in den Konfigurationsdaten verwendet werden, um den Wert der Konstante an dieser Stelle einzufügen. Dabei wird eine reine Textersetzung durch den Konstantenwert vorgenommen. Die Textersetzung erfolgt beim Programmstart noch vor der inhaltlichen Interpretation der Konfigurationsdaten. Eine Konstante kann somit für den vollständigen Wert einer Eigenschaft genutzt werden oder für einen Teilwert, solange nach der Ersetzung der Konstante der Wert in seiner Gesamtheit den syntaktischen Vorgaben entspricht.

Konstanten können sowohl in globalen Konfigurationen als auch in Szenariokonfigurationen definiert werden. Für einen Block von Konstanten kann angegeben werden, ob diese Konstanten nur für einen bestimmten Mandanten gültig sind. Somit sind gleichnamige Konstanten für unterschiedliche Mandanten mit spezifischen Werten definierbar. Zur Laufzeit werden abhängig vom Ausführungskontext, d.h. für welchen Mandanten ein Verarbeitungsszenario ausgeführt wird, die mandantenspezifischen Werte dieser Konstanten genutzt.

Besonderheiten beim JSON-Format

Der Wert einer Konstanten wird immer als Typ "String" angegeben. Im JSON-Format müssen String-Werte immer durch Anführungszeichen ausgezeichnet werden. Abhängig von der Art des Zielwertes ergeben sich dadurch bei einer Konfiguration im JSON-Format die folgenden Besonderheiten.

Zielwert

Beispiel

String-Wert

Eine Konstante für den Datenbankserver wird z. B. als "DBHOST": "localhost" definiert. Die Anführungszeichen um localhost sind nicht Bestandteil dieses Wertes, sondern dienen nur der Auszeichnung als String in der JSON-Syntax.

Bei der Verwendung der Konstanten ist darauf zu achten, dass der Platzhalter erneut in Anführungszeichen eingebettet wird, d.h. "Host": "%DBHOST%". Ansonsten ergibt sich nach der Ersetzung ein syntaktisch falsches "Host": localhost anstatt des korrekten "Host": "localhost".

Boolean-Wert

Wenn der Zielwert den Datentyp "Boolean" hat, könnten die Anführungszeichen um den Platzhalter theoretisch weggelassen werden. Beim Aktivieren des Loggings in die Windows-Ereignisanzeige ist der Konfigurationsschlüssel z. B. definiert als "ToEventLog": %TOEVENTLOG% und die Konstante hat den Wert true. Nach der Ersetzung ergibt sich so ein syntaktisch korrektes "ToEventLog": true.

In der Praxis müssen die Konfigurationsdaten jedoch schon vor der Konstantenersetzung eine gültige JSON-Syntax haben, um überhaupt eingelesen werden zu können. Eine gültige Syntax liegt nur vor, wenn der Konstanten-Platzhalter als String angegeben ist, d.h. "ToEventLog": "%TOEVENTLOG%".

Nach der Konstantenersetzung ist der Boolean-Wert ebenfalls in Anführungszeichen eingebettet. Der Wert kann aber dennoch korrekt interpretiert werden, weil der Zieldatentyp bekannt ist und der String-Wert vom Programm daher implizit in einen Boolean-Wert konvertiert wird.

Auflistung mehrere Werte

In einigen Fällen ist eine Auflistung mehrerer Werte innerhalb einer Konstante notwendig, z. B. um die zulässigen Benutzer für einen Webservice-Aufruf zu definieren. Ein entsprechender Konfigurationsschlüssel kann z. B. "AllowUser": ["User1", "User2", "User3"] lauten. Damit dieser Schlüssel auch vor der Ersetzung syntaktisch korrekt bleibt, muss der Konstanten-Platzhalter in Anführungszeichen stehen, z. B. "AllowUser": ["%USERS%"]. Die Konstante selbst ist als "USERS": "User1\", \"User2\", \"User3" zu deklarieren.

Dabei ist zu beachten, dass die äußeren Anführungszeichen vor User1 und hinter User3 nicht mit anzugeben sind. Die Anführungszeichen, die dort stehen, sind nicht Teil des Wertes, sondern kennzeichnen den Wert nur als String in JSON-Syntax. Vor und hinter dem Platzhalter %USERS% existieren bereits Anführungszeichen und nach der Ersetzung würden dort ansonsten doppelte Anführungszeichen stehen.

Abhängigkeiten

Für Konstanten, die in einer globalen Konfiguration definiert sind, gelten folgende Abhängigkeiten:

  • ohne Mandantenbezug: Die Konstanten können sowohl in der globalen als auch in allen Szenariokonfigurationen verwendet werden.

  • mit Mandantenbezug: Die Konstanten können in allen Szenariokonfigurationen verwendet werden, die im Kontext dieses Mandanten ausgeführt werden.

Für Konstanten, die in einer Szenariokonfiguration definiert sind, gelten folgende Abhängigkeiten:

  • ohne Mandantenbezug: Die Konstanten können nur in eben dieser Szenariokonfiguration verwendet werden, aber unabhängig davon, für welchen Mandanten das Szenario ausgeführt wird.

  • mit Mandantenbezug: Die Konstanten können nur in eben dieser Szenariokonfiguration verwendet werden und nur, wenn das Szenario im Kontext dieses Mandanten ausgeführt wird.

Hinweis

Bei gleichnamigen Konstanten, die mehrfach definiert sind, haben die spezifischeren Konstanten Priorität. Konstanten, die in einer Szenariokonfiguration definiert sind, haben somit Vorrang vor global definierten Konstanten.

Mandantenspezifisch definierte Konstanten haben immer Vorrang vor mandantenunabhängig definierten Konstanten, unabhängig davon, ob dieser in eine globalen oder einer Szenariokonfiguration definiert sind.