Die Umgebungsbaumstruktur hat einen eigenen Korrelationsnamen (Environment), und Sie müssen diesen in allen ESQL-Anweisungen verwenden, die auf den Inhalt dieser Baumstruktur verweisen oder diesen festlegen.
Die Umgebungsbaumstruktur wird bei der Erstellung der logischen Baumstruktur für eine Eingabenachricht immer erstellt. Der Nachrichtenfluss füllt sie jedoch weder, noch verwendet er ihren Inhalt. Sie können diese Baumstruktur für Ihre eigenen Zwecke verwenden, beispielsweise zur Übergabe von Informationen von einem Knoten an einen anderen. Sie können die gesamte Baumstruktur als Arbeitspuffer oder Arbeitsbereich verwenden.
Wenn Sie Ihre eigenen Daten in der Umgebungsbaumstruktur erstellen, haben Sie den Vorteil, dass diese Daten als Bestandteil der logischen Baumstruktur an nachfolgende Knoten im Nachrichtenfluss weitergegeben werden. Wenn Sie in einem Rechenknoten eine neue Ausgabenachricht erstellen, wird die Umgebungsbaumstruktur auch von der Eingabenachricht in die neue Ausgabenachricht kopiert. (Dies ist anders als bei der Baumstruktur für die lokale Umgebung, die nur in die Ausgabenachricht eingefügt wird, wenn Sie dies ausdrücklich anfordern.)
Für die Dauer des Nachrichtenflusses ist nur eine Umgebungsbaumstruktur vorhanden. Alle Datenaktualisierungen oder Zusätze, die Sie an einem Knoten vornehmen, werden beibehalten, und alle Knoten im Nachrichtenfluss können auf die aktuellste Kopie dieser Baumstruktur zugreifen. Selbst wenn die Nachricht im Nachrichtenfluss zurückfließt (wenn beispielsweise eine Ausnahmebedingung ausgegeben oder die Nachricht durch das zweite Terminal des Knotens 'Nachrichtenflussablauf' verarbeitet wird), bleibt der aktuellste Status erhalten.
Dies ist anders als bei der Baumstruktur für die lokale Umgebung, die in ihren vorherigen Status zurückkehrt, wenn die Nachricht im Nachrichtenfluss zurückfließt.
SET Environment.Variables = ROW('granary' AS bread, 'reisling' AS wine, 'stilton' AS cheese); SET Environment.Variables.Colors[] = LIST{'yellow', 'green', 'blue', 'red', 'black'}; SET Environment.Variables.Country[] = LIST{ROW('UK' AS name, 'pound' AS currency), ROW('USA' AS name, 'dollar' AS currency)};
Diese Informationen stehen jetzt allen Knoten zur Verfügung, an die eine Nachricht weitergegeben wird, und zwar ungeachtet ihrer relativen Position im Nachrichtenfluss.
Der Nachrichtenfluss für Reservierungen (Reservation) im Beispielprogramm Airline (Fluglinie) ist ein weiteres Beispiel für die Verwendung der Umgebungsbaumstruktur zum Speichern von Informationen, die von anderen Knoten im Nachrichtenfluss verwendet werden. Der Rechenknoten in diesem Nachrichtenfluss schreibt Informationen in die untergeordnete Baumstruktur 'Environment.Variables', die er aus einer Datenbank extrahiert hat, und zwar gemäß des Wertes eines Felds in der Eingabenachricht.