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 Bei der Verwendung der Konstanten ist darauf zu achten, dass der Platzhalter erneut in Anführungszeichen eingebettet wird, d.h. |
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 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. 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. Dabei ist zu beachten, dass die äußeren Anführungszeichen vor |
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.