En este tema se describen las interacciones que se llevan a cabo entre los componentes WebSphere Message Broker cuando se ejecuta una analizador definido por el usuario. Describe cada fase en términos de los sucesos que son la causa y se producen durante y después de cada una de las fases y las API que se invocan. Al comprender los conceptos de este tema puede diseñar y desarrollar el analizador de un modo más eficaz.
La primera fase del ciclo de vida del analizador definido por el usuario es la fase de registro. La finalidad de la fase de registro es registrar el analizador definido por el usuario con el intermediario. Esta fase se activa mediante la fase de inicialización del arranque del proceso del grupo de ejecución.
El analizador se crea durante la fase de creación de una instancia del ciclo de vida del analizador. Cuando se recibe un mensaje de entrada o cuando se crea un mensaje de salida en un nodo Compute, se identifica el analizador relevante y se toma los requisitos del analizador de la cabecera del mensaje como, por ejemplo, MQMD. El intermediario se inicia, carga el LIL (Loadable Implementation Library) y la fábrica de analizador. El proceso del grupo de ejecución crea una instancia del analizador y el intermediario realiza una llamada a cpiCreateContext para que el objeto del analizador adquiera la sección adecuada del mensaje.
Antes de llamar a esta función, el intermediario habrá creado un elemento de nombre como el elemento raíz eficaz para el analizador. No obstante, este elemento no tiene nombre. El analizador debe asignar un nombre a este elemento en la función cpiSetElementName.
A continuación, el intermediario llama a cpiParseBuffer. La finalidad de cpiParseBuffer en esta fase es realizar el proceso de inicialización necesario y devolver la longitud del contenido del mensaje que pasará a ser propiedad del analizador. El analizador evalúa la cantidad de los datos del mensaje que se han de analizar y reclamará el número de bytes adecuado.
Cuando se crea una instancia del objeto de analizador definido por el usuario, el intermediario de mensajes invoca también la función que implementa la creación del contexto, esto es, cpiCreateContext. Esto permite al analizador asignar los datos de la instancia que tiene asociados. También es necesaria una función cpiDeleteContext para suprimir el contexto del objeto del analizador.
La finalidad de la fase de proceso es manipular, alterar y hacer referencia a elementos dentro de un objeto de mensaje que interpreta el analizador. La fase de proceso del flujo de mensajes comienza cuando se produce cualquier actividad de proceso de mensajes como, por ejemplo, la navegación que requiere acceso a un elemento dentro de un mensaje que no existe en la representación del modelo interno que hace el intermediario del mensaje en cuestión.
Durante la fase de proceso del flujo de mensajes, se invoca el analizador como respuesta a los intentos de navegar por el árbol de mensaje. El analizador examina el almacenamiento intermedio que estaba asignado cuando se ha invocado cpiParseBuffer y crea los elementos de mensaje que sean necesarios.
Se invocan estas funciones durante cualquier tipo de navegación como, por ejemplo, una expresión de filtro que especifica un campo de mensaje, en la parte del árbol de elementos de sintaxis que representa lógicamente los datos de un formato de mensaje al que da soporte el analizador definido por el usuario. Esto se produce cuando una operación interna del intermediario requiere que se cree o amplíe un árbol de elementos de sintaxis.
Cuando el analizador ha acabado de analizar las partes relevantes del árbol de elementos de sintaxis, llama a cpiWriteBuffer. Esta función añade su parte del árbol de elementos de sintaxis a la corriente de bits del almacenamiento intermedio de mensajes asociado al objeto del analizador. Esto crea el mensaje de salida.
La fase de destrucción es la fase final del ciclo de vida del analizador definido por el usuario. Cuando el analizador ha escrito su parte del árbol de elementos de sintaxis en la corriente de bits y ha creado el mensaje de salida, es necesario liberar los recursos del sistema que ha creado el intermediario para que los utilice el analizador.
La fase de destrucción comienza cuando se utiliza el mandato mqsistop para detener el proceso de ejecución.