Existen varias etapas en el ciclo de vida de un analizador de flujo de mensajes definido por el usuario.
Este tema describe las interacciones que tienen lugar entre los componentes de WebSphere Message Broker al ejecutar un analizador definido por el usuario. Explica cada paso en términos de los sucesos que inician cada etapa y los sucesos que se producen durante y después de cada etapa, así como las API a las que se llama. Al comprender los conceptos de este tema podrá 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 inicia cuando se inicia un 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 pertinente y se toman los requisitos del analizador de la cabecera de mensaje, por ejemplo, MQMD. El intermediario se inicia y carga el LIL (Loadable Implementation Library) y la fábrica de analizador. Antes de llamar a la función cpiCreateContext, el intermediario crea 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. 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.
A continuación, el intermediario realiza una llamada a cpiParseBuffer. cpiParseBuffer realiza la inicialización que sea necesaria y devuelve la longitud del contenido de mensaje del que el analizador está tomando la propiedad. 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 de un objeto de analizador definido por el usuario, el intermediario invoca también la función de implementación de creación de contexto cpiCreateContext. Esta llamada permite al analizador asignar los datos de instancia que tiene asociados. También es necesaria una función cpiDeleteContext para suprimir el contexto del objeto de analizador.
Durante la fase de proceso, el analizar manipula y modifica los elementos del objeto de mensajes y hace referencia a dichos elementos. 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 se ha asignado al llamar a cpiParseBuffer y crea los elementos de mensaje necesarios.
Se invocan estas funciones durante cualquier tipo de navegación (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 soportado por un analizador definido por el usuario. Esta navegación 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 con el objeto de analizador y 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 empieza cuando se utiliza el mandato mqsistop para detener el proceso de ejecución.