Albero del contesto

L'albero del contesto fa parte dell'insieme di alberi logici (assemblaggio di messaggi) in cui vengono catturate le informazioni sul flusso di messaggi, comprese le informazioni su come il flusso è stato invocato e sui messaggi provenienti da ciascun nodo del flusso. A differenza degli altri alberi logici, l'albero del contesto non viene catturato per impostazione predefinita. Affinché sia disponibile, deve essere referenziato nel flusso di messaggi.

All'avvio di un flusso, il server di integrazione rileva se si fa riferimento a un albero di contesto. Se nel flusso si fa riferimento a un albero di contesto, è possibile accedervi da tutti i nodi del flusso che supportano gli alberi di contesto, come ad esempio i nodi JavaCompute e i nodi ESQL, compresi i nodi Compute, Filter, Database e ESQL DatabaseInput nodi.

L'albero del contesto viene popolato con informazioni provenienti dagli alberi dei messaggi, LocalEnvironment, e ExceptionList. L'albero del contesto di un flusso di messaggi contiene i seguenti tipi di informazioni:
Dettagli del flusso
I dettagli del flusso includono le seguenti informazioni sul flusso di messaggi:
  • Nome flusso
  • Nome applicazione
  • Nome libreria
  • Nome server di integrazione
  • Nome nodo di integrazione
  • Hostname (nome host completamente qualificato)
  • ID processo

Queste informazioni non cambiano tra le invocazioni dei messaggi.

Dettagli dell'invocazione
I dettagli dell'invocazione contengono informazioni sull'invocazione del messaggio corrente:
  • Data/ora
  • ID thread
  • Nome del nodo (il nome del nodo di input o di risposta che ha ricevuto l'invocazione)
Nodi
Questa sezione contiene informazioni su ciascun nodo che è stato propagato attraverso il flusso nel punto in cui viene visualizzato l'albero:
  • Nome nodo
    • Dettagli del carico utile
      • Dominio
      • Codifica
      • CodedCharSetId
      • Messaggio
      • Modello
      • Formato fisico
    • Carico utile
    • Intestazioni
      • E-mail
        • Cartelle di intestazione dei messaggi di posta elettronica copiate così come sono dall'albero principale dei messaggi (come EmailInputHeader e EmailOutputHeader )
      • HTTP
        • HTTP cartelle di intestazione copiate così come sono dall'albero dei messaggi principale (come HTTPInputHeader e HTTPRequestHeader )
      • JMS
        • Cartelle di intestazione JMS copiate così come sono dall'albero dei messaggi principale (come JMS_Transport)
      • MQ
        • MQ cartelle di intestazione copiate così come sono dall'albero dei messaggi principale (come MQMD, MQRFH2, e MQCIH)
    • Metadati
      • QueueManager
        • MQ solo nodi
      • Coda
        • MQ solo nodi
      • URL
        • Solo nodi HTTPAsyncRequest, HTTPRequest, RESTAsyncRequest, RESTRequest, SOAPAsyncRequest e SOAPRequest
      • Metodo
        • Solo nodo RESTRequest
      • StatusCode
        • Solo i nodi HTTPRequest e RESTRequest
      • Parametri
        • Solo applicazioni REST
      • Variabili
        • Solo flussi richiamabili
    • Tipo di nodo

Il nodo di ingresso del flusso di messaggi popola la sezione FlowDetails dell'albero del contesto con informazioni chiave sul flusso; queste informazioni non cambiano nel corso del flusso e non cambiano quando si propagano all'interno e all'esterno dei sottoflussi. Il nodo di input popola anche la sezione InvocationDetails dell'albero del contesto con informazioni sul messaggio da elaborare.

Quando un flusso si propaga in avanti attraverso i nodi del flusso di messaggi, una sezione di nodo viene catturata nell'albero del contesto all'uscita di ogni nodo. Quando l'elaborazione del flusso si snoda fino a un punto precedente a un nodo del flusso, la sezione del nodo viene rimossa dall'albero del contesto. In qualsiasi punto di un flusso, un JavaCompute un nodo o un nodo ESQL (ad esempio un nodo di calcolo, filtro, database o un nodo DatabaseInput ) può accedere al messaggio emesso da qualsiasi nodo fino a quel momento. Anche se si imposta un punto di interruzione prima di un nodo JavaCompute o di un nodo ESQL, il contesto è visibile nel breakpoint prima di quel nodo. Ciò significa che non è necessario scrivere codice per memorizzare parte dell'albero dei messaggi nella variabile Environment, LocalEnvironment, o SHARED ROW per un uso futuro nel flusso. Poiché gli alberi di contesto contengono la sezione dei nodi che viene acquisita per tutti i nodi di un flusso, utilizzano più memoria rispetto all'acquisizione mirata dei dati nell'albero dell'ambiente. Tuttavia, sebbene siano più lenti e richiedano più memoria rispetto all'uso di variabili condivise Environment o ESQL, gli alberi di contesto sono più facili da usare e richiedono meno tempo rispetto alla scrittura di codice per memorizzare parti dell'albero dei messaggi.

Nodi utilizzati per l'instradamento (come i nodi Label, RouteToLabel e FlowOrder nodi), nella gestione degli errori (come i nodi Trace, TryCatch, Throw e Log ) o nel controllo (come i nodi Validate e SecurityPEP ) non acquisiscono una sezione di nodo nell'albero del contesto.

Quando un nodo del sottoflusso si propaga nel suo sottoflusso, una sezione dell'albero del contesto viene acquisita dal terminale di ingresso per rappresentare i dati che sono stati inviati in un sottoflusso. Ciò significa che, per impostazione predefinita, solo i dati inviati al flusso secondario sono visibili al flusso secondario. Mentre si trova in un sottoflusso, i nodi del sottoflusso acquisiscono il loro contenuto nell'albero del contesto e sono visibili ai nodi del sottoflusso. Quando il flusso si propaga da un sottoflusso (utilizzando un nodo terminale di uscita del sottoflusso), una singola rappresentazione dell'intero nodo del sottoflusso viene aggiunta all'albero del contesto del flusso o del sottoflusso chiamante. Ciò significa che solo i dati in uscita dal flusso secondario sono visibili in relazione al nodo del flusso secondario.

Il corpo del messaggio nell'albero dei messaggi principali è rappresentato come elemento payload nell'albero del contesto. Il campo PayloadDetails.Domain associato indica il dominio del messaggio. Il resto dei campi di PayloadDetails mostra quali altri dati sono associati al payload. Per rappresentare il payload nell'albero del contesto, è necessario leggere le informazioni di base dal corpo del messaggio nell'albero del messaggio. Non avvia l'analisi del messaggio e non convalida il messaggio quando la convalida è abilitata. Tuttavia, se c'è un problema nell'impostazione del parser (ad esempio un parser JSON non è in grado di trovare il suo schema JSON nominato), questo viene segnalato immediatamente quando gli alberi di contesto sono abilitati.

Se sono presenti intestazioni di trasporto, vengono aggiunte alla sezione delle intestazioni del nodo sotto il nome del trasporto:
  • Tutte le intestazioni relative a HTTP vengono aggiunte a una sottocartella HTTP
  • Tutte le intestazioni relative a MQ vengono aggiunte a una sottocartella MQ
  • Tutte le intestazioni relative a JMS vengono aggiunte a una sottocartella di JMS
  • Tutte le intestazioni relative alla posta elettronica vengono aggiunte a una sottocartella Email
Se non sono presenti intestazioni di trasporto, non viene creata alcuna sezione di intestazioni per il nodo.

La cartella Metadati è popolata da informazioni chiave sulle interazioni esterne con i flussi MQ, HTTP, SOAP, REST e Callable. Queste informazioni sono popolate da parti delle informazioni già memorizzate nel sito LocalEnvironment per questi trasporti.

L'esempio seguente mostra la struttura dell'albero del contesto:

- FlowDetails
   - FlowName
   - ApplicationName
   - LibraryName
   - IntegrationServerName
   - IntegrationNodeName
   - HostName
   - ProcessId   
- InvocationDetails
  - Timestamp
  - ThreadId 
  - NodeName
- Nodes
  - "users nodeLabel1"
    - PayloadDetails
      - Domain
      - Encoding
      - CodedCharSetId
      - Message
      - Model
      - PhysicalFormat
    - Payload
    - Headers
      - HTTP
       - …. Folders copied as-is from the main message tree (Such as HTTPInputHeader, HTTPRequestHeader)
      - MQ
       - …. Folders copied as-is from the main message tree (Such as MQMD, MQRFH2, MQCIH ….)
        - ....  
    - Metadata
    - NodeType
      - ….
  - "users nodeLabel2"
    
    - PayloadDetails
       - ….
    - Payload
       - …. Folders copied from the main message tree.
    - Headers
       - …. Folders copied from the main message tree.
    - Metadata
    - NodeType
       - ….
  - ….