La struttura ad albero LocalEnvironment fa parte della struttura ad albero del messaggio logica in cui è possibile memorizzare le informazioni mentre il flusso di messaggi elabora il messaggio.
La root della struttura ad albero LocalEnvironment è chiamata LocalEnvironment. Questa struttura ad albero è sempre presente nel messaggio di input: una struttura ad albero LocalEnvironment vuota viene creata quando il nodo di input riceve un messaggio.
Utilizzare la struttura ad albero LocalEnvironment per memorizzare le variabili a cui è possibile fare riferimento e che possono essere aggiornate dai nodi di elaborazione del messaggio presenti successivamente nel flusso di messaggi. E' possibile anche utilizzare la struttura ad albero LocalEnvironment per definire le destinazioni (che sono interne ed esterne al flusso di messaggi) a cui è inviato un messaggio. WebSphere Message Broker memorizza inoltre le informazioni in LocalEnvironment in alcune circostanze e fa riferimento ad esso per accedere ai valori che potrebbero essere stati impostati per le destinazioni. (Confrontare con la Struttura ad albero Environment, a cui il broker fa riferimento solo in una situazione.)
La figura di seguito mostra la struttura ad albero LocalEnvironment. I child di Destination dipendono dal protocollo. L'esempio di seguito mostra la struttura di un messaggio WebSphere MQ. Se il messaggio è analizzato da un altro programma di analisi integrato o da un programma di analisi definito dall'utente, la struttura ad albero sotto l'elemento Destination ha un contenuto differente rispetto a quello mostrato nella figura.
Nella struttura ad albero mostrata sopra, LocalEnvironment ha tre child:
Le variabili nell'ambiente locale possono essere modificate da qualsiasi nodo di elaborazione del messaggio successivo e persistono fino a che il flusso di messaggi esce dall'ambito e il nodo che lo ha creato ha completato l'operazione e restituisce il controllo al nodo precedente
Le variabili in questa struttura ad albero secondaria sono permanenti solo all'interno di una singola istanza di un flusso di messaggi. Se si dispone di più istanze di un messaggio che attraversano il flusso di messaggi ed è necessario trasmettere informazioni da una all'altra, si deve utilizzare un database esterno.
Le informazioni relative al trasporto sono utilizzate da alcuni nodi di input e di output.
Se il flusso di messaggi inizia con un nodo HTTPInput, un elemento nome HTTP singolo viene aggiunto a Destination. L'elemento HTTP.RequestIdentifier viene creato ed inizializzato in modo che possa essere utilizzato da un nodo HTTPReply. E' possibile anche creare altri campi nella struttura HTTP per l'utilizzo da parte del nodo HTTPRequest, ad esempio l'URL del servizio a cui viene inviata la richiesta. L'argomento per ogni nodo che contiene più informazioni sul contenuto di Destination per il protocollo WebSphere MQ Web Services Transport.
Se il flusso di messaggi include un nodo MQOutput, ogni elemento è un elemento nome singolo, MQDestinationList. Se esiste più di un elemento, ognuno di essi è elaborato dal nodo in ordine sequenziale.
Se è stato incluso un nodo di output definito dall'utente nel flusso di messaggi, il contenuto di Destination (se supportato) è definito da quel nodo.
E' possibile configurare i nodi di output per esaminare l'elenco delle destinazioni e inviare il messaggio a quelle destinazioni, impostando la proprietà Modalità destinazione su Elenco di destinazioni. Se si procede in questo modo, è necessario creare questa struttura ad albero secondaria e il relativo contenuto per definire quelle destinazioni, dandogli il nome Destination. Se non si procede in questo modo, il nodo di output non può consegnare i messaggi.
Se si preferisce, è possibile configurare il nodo di output per inviare i messaggi ad un'unica destinazione fissa, impostando la proprietà Modalità destinazione su Nome coda o Coda di risposta a. Se si seleziona una di queste opzioni fisse, l'elenco di destinazioni non ha effetti sulle operazioni del broker e non è necessario creare questa struttura ad albero secondaria.
E' possibile creare l'elemento MQ per contenere un singolo elemento Defaults facoltativo. L'elemento Defaults, se creato, deve essere il primo child e contenere una serie di elementi nome-valore che forniscono valori predefiniti per la destinazione del messaggio e le relative opzioni PUT per quel parent.
E' possibile anche creare un numero di elementi chiamati DestinationData all'interno di MQ. Ciascuno di questi può essere impostato con una serie di elementi nome-valore che definisce la destinazione di un messaggio e le relative opzioni PUT.
La serie di elementi che definisce una destinazione è descritta in Tipi di dati per elementi nell'albero secondario DestinationData.
Il contenuto di ogni istanza di DestinationData è lo stesso contenuto di Defaults per ogni protocollo e può essere utilizzato per sovrascrivere i valori predefiniti in Defaults. E' possibile impostare Defaults per contenere valori comuni a tutte le destinazioni e impostare solo i valori univoci in ciascuna struttura ad albero secondaria DestinationData. Se non si imposta un valore in DestinationData o Defaults, viene utilizzato il valore impostato per la proprietà del nodo corrispondente. Allo stesso modo, se si specifica un nome o un valore campo scritto in modo errato o con il maiuscolo/minuscolo sbagliati, viene ignorato e viene utilizzato il valore impostato per la proprietà del nodo corrispondente.
Le informazioni inserite in DestinationData dipendono dalle caratteristiche della proprietà del nodo corrispondente: ciò viene descritto in Accesso alla struttura ad albero LocalEnvironment.
Il child di Destination è RouterList. Esso ha un elemento child singolo chiamato DestinationData, che ha un'unica voce chiamata labelName. Se si sta utilizzando uno scenario di instradamento dinamico che coinvolge i nodi RouteToLabel e Label, è necessario impostare la struttura ad albero secondaria Destination con un child RouterList che contiene le etichette di riferimento.
L'argomento relativo a ogni nodo di output contiene ulteriori informazioni sul contenuto di WrittenDestination per WebSphere MQ e WebSphere MQ Everyplace.
Quando l'elaborazione del flusso di messaggi è completata, la struttura ad albero LocalEnvironment viene eliminata.
L'Esempio Prenotazioni per compagnie aeree e l'Esempio Instradamento del messaggio dimostrano come utilizzare LocalEnvironment per instradare i messaggi in modo dinamico in base all'elenco di destinazioni. L'esempio Estensione definita dall'utente utilizza LocalEnvironment per memorizzare informazioni successivamente aggiunte al messaggio di output creato dal flusso di messaggi.