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.
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.
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.
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.
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.
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.
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.