Ciclo di vita del programma di analisi definito dall'utente

In questo argomento vengono esaminate le varie fasi di vita di un programma di analisi di flusso di messaggi definito dall'utente. Le fasi sono le seguenti:

Questo argomento risulta utile nella comprensione delle interazioni che hanno luogo tra i componenti WebSphere Message Broker quando si esegue un programma di analisi definito dall'utente. Viene fornita una spiegazione di ciascuna fase in termini di eventi causati e che si verificano durante e dopo ciascuna fase e le API che sono richiamate. La comprensione dei concetti presenti in questo argomento consente di progettare e sviluppare il proprio programma di analisi in modo più efficace.

Registrazione

La prima fase del ciclo di vita del programma di analisi definito dall'utente è quella di registrazione. Scopo di tale fase è quello di registrare il programma di analisi definito dall'utente con il broker. Tale fase viene attivata da quella di inizializzazione dell'avvio dell'elaborazione del gruppo di esecuzione.

Creazione istanza

Il programma di analisi viene creato durante la fase di creazione istanza del relativo ciclo di vita. Quando viene ricevuto un messaggio di input oppure quando un messaggio di output viene creato in un nodo Compute, viene individuato il programma di analisi pertinente ed i requisiti di analisi vengono ricavati dall'intestazione del messaggio, come ad esempio MQMD. Il broker viene avviato e esegue il caricamento della LIL (Loadable Implementation Library) e del produttore del programma di analisi. L'elaborazione del gruppo di esecuzione crea un'istanza del programma di analisi e il broker esegue una chiamata a cpiCreateContext per consentire all'oggetto programma di analisi di acquisire la sezione appropriata del messaggio.

Prima che questa funzione venga richiamata, il broker avrà creato un elemento nome come elemento root effettivo per il programma di analisi. Tuttavia, questo elemento non ha un nome. Il programma di analisi dovrà assegnargli un nome nella funzione cpiSetElementName.

Il broker quindi esegue una chiamata a cpiParseBuffer. Lo scopo di cpiParseBuffer in questa fase è quello di eseguire qualsiasi inizializzazione necessaria e di restituire la lunghezza del contenuto del messaggio di cui il programma di analisi sta assumendo la proprietà. Il programma di analisi valuta la quantità di dati da analizzare e richiama il numero appropriato di byte.

Ogni volta che viene creata un'istanza di un oggetto programma di analisi definito dall'utente, il broker dei messaggi richiama anche la funzione di implementazione di creazione del contesto cpiCreateContext. Ciò consente al programma di analisi di assegnare i dati di istanza associati ad esso. E' richiesta inoltre una funzione cpiDeleteContext per eliminare il contesto dell'oggetto programma di analisi.

Elaborazione

Scopo della fase di elaborazione è quello di manipolare, modificare e fare riferimento ad elementi all'interno di un oggetto messaggio che il programma di analisi sta interpretando. La fase di elaborazione del flusso di messaggi inizia quando si verifica un'attività di elaborazione dei messaggi, come la navigazione, che richiede l'accesso ad un elemento all'interno di un messaggio che non esiste nella rappresentazione del modello interno del broker del messaggio implicato.

Durante la fase di elaborazione del flusso di messaggi, il programma di analisi viene richiamato in risposta al tentativo di navigare nella struttura ad albero del messaggio. Il programma di analisi esamina il buffer assegnato quando è stata richiamata cpiParseBuffer e crea gli eventuali elementi di messaggi necessari.

Il programma di analisi può quindi navigare negli elementi di messaggi utilizzando una o tutte le funzioni di implementazione del programma di analisi riportate di seguito:
  • cpiParseFirstChild
  • cpiParseLastChild
  • cpiParsePreviousSibling
  • cpiParseNextSibling

Tali funzioni vengono richiamate quando viene effettuata qualsiasi forma di navigazione, come ad esempio un'espressione filtro che specifica un campo di messaggio, nella parte di struttura ad albero dell'elemento di sintassi che rappresenta logicamente i dati per un formato del messaggio supportato da un programma di analisi definito dall'utente. Ciò si verifica quando un'operazione nell'ambito del broker richiede la creazione o l'estensione di una struttura ad albero dell'elemento di sintassi.

Nella decisione di come eseguire al meglio la navigazione nella struttura ad albero dell'elemento della sintassi, è necessario tenere presenti i seguenti punti:
  • Un elemento di sintassi ha cinque puntatori ai relativi parent, elementi associati e primi ed ultimi child. Ciò significa che è disponibile una serie limitata di navigazioni
  • Le stesse classi interne vengono utilizzate per eseguire tutte queste navigazioni
  • Il programma di analisi non controlla la navigazione. La direzione di navigazione è decisa dall'ESQL o da un nodo definito dall'utente così come l'ordine secondo cui vengono richiamate le funzioni di implementazione del programma di analisi navigazionale. Il programma di analisi definito dall'utente non ha alcun controllo su ciò ed è necessario che risponda correttamente allo schema di navigazione scelto. Ciò potrebbe significare ad esempio l'esecuzione dell'analisi da destra a sinistra, così come da sinistra a destra.
  • Quando si scrive un programma di analisi definito dall'utente, è previsto che il codice del programma di analisi corrente venga posto in una funzione parseNextItem. Tale funzione crea la struttura ad albero dell'elemento di sintassi, un elemento alla volta, impostando nomi, valori ed indicatori di completamento in modo appropriato. La modalità di implementazione di questa funzione dipende dalla natura del flusso di bit da analizzare. Il programma di analisi di esempio fornito con WebSphere Message Broker dimostra ciò.

Una volta che il programma ha terminato l'esecuzione dell'analisi delle parti rilevanti della struttura ad albero dell'elemento di sintassi, richiama cpiWriteBuffer. Questa funzione accoda la relativa parte di struttura ad albero dell'elemento di sintassi al flusso di bit nel buffer di messaggi associato all'oggetto programma di analisi. Ciò crea il messaggio di output.

Eliminazione

La fase di eliminazione è quella finale nel ciclo di vita del programma di analisi definito dall'utente. Una volta che il programma di analisi ha scritto la relativa parte di struttura ad albero dell'elemento di sintassi nel flusso di bit e ha creato il messaggio di output, le risorse di sistema create dal broker ad uso del programma di analisi devono essere rilasciate.

La fase di eliminazione inizia quando viene utilizzato il comando mqsistop per arrestare il processo di esecuzione.

Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
as01413_