Utilice el nodo Filter para direccionar un mensaje según el contenido del mensaje.
Este tema contiene las secciones siguientes:
Cree una expresión de filtro en ESQL para definir la ruta que va a seguir el mensaje. Puede incluir elementos del mensaje de entrada o propiedades del mensaje en la expresión de filtro, y puede utilizar datos contenidos en una base de datos externa para completar la expresión. El terminal de salida al que se dirige el mensaje depende de si la expresión se evalúa como verdadera, falsa o desconocida.
Conecte los terminales que cubren todas las situaciones que podrían resultar del filtro; si el nodo propaga el mensaje a un terminal que no está conectado, se elimina el mensaje, aunque sea transaccional.
El nodo Filter acepta sentencias ESQL del mismo modo que los nodos Compute y Database. La última sentencia ejecutada debe ser una sentencia RETURN <expresión>, cuya expresión se evalúe en un valor booleano. Este valor booleano determina a qué terminal se direcciona el mensaje. En muchos casos, el algoritmo de direccionamiento es una simple comparación de valores de campos de mensaje. La comparación la describe la expresión y la sentencia RETURN es la única sentencia. Si codifica RETURN sin una expresión (RETURN;) o con una expresión null, el nodo propaga el mensaje al terminal Unknown (desconocido).
Si el flujo de mensajes requiere opciones de direccionamiento más complejas, utilice los nodos RouteToLabel y Label.
El nodo Filter se encuentra en la bandeja Direccionamiento de la paleta y está representado en el WebSphere Message Broker Toolkit mediante el siguiente icono:
Consulte los ejemplos siguientes para obtener información sobre cómo utilizar este nodo:
Puede ver información sobre los ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit o el Information Center en línea. Puede ejecutar ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit.
Supongamos que ha creado una prueba en línea con diez preguntas de selección múltiple. Cada mensaje de entrada contiene el nombre y la dirección de un candidato seguidos de una serie de respuestas. Se comprueba cada respuesta, y si es correcta, el campo SCORE se incrementa en uno. Cuando se han comprobado todas las respuestas, se comprueba si el campo SCORE es mayor que cinco. Si lo es, el nodo Filter propaga el mensaje al flujo que maneja la entrada de candidatos satisfactorios; de lo contrario, el mensaje se filtra y se dirige al proceso de rechazo, y se crea un mensaje de desestimación.
Cuando haya colocado una instancia del nodo Filter en un flujo de mensajes, podrá configurarlo; consulte el apartado Configurar un nodo de flujo de mensajes. Las propiedades del nodo se visualizan en la vista Propiedades. Todas las propiedades obligatorias para las que debe especificar un valor (las que no tienen un valor predeterminado definido) están marcadas con un asterisco.
Los terminales del nodo Filter están descritos en la siguiente tabla.
Terminal | Descripción |
---|---|
In (de entrada) | El terminal de entrada que acepta un mensaje para que lo procese el nodo |
Failure (de anomalías) | El terminal de salida al que se direcciona el mensaje si se detecta una anomalía durante el cálculo |
Unknown (desconocido) | El terminal de salida al que se direcciona el mensaje si la expresión de filtro especificada se evalúa como unknown o un valor nulo |
False (falso) | El terminal de salida al que se direcciona el mensaje si la expresión de filtro especificada se evalúa como false |
True (verdadero) | El terminal de salida al que se direcciona el mensaje si la expresión de filtro especificada se evalúa como true |
Las tablas siguientes describen las propiedades del nodo. La columna con la cabecera O indica si la propiedad es obligatoria (marcada con un asterisco si tiene que entrar un valor cuando no hay definido ningún valor predeterminado); la columna con la cabecera C indica si la propiedad es configurable (puede cambiar el valor cuando añade el flujo de mensajes al archivo BAR para desplegarlo).
Las propiedades de Descripción del nodo Filter están descritas en la siguiente tabla.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Nombre de nodo | No | No | El tipo de nodo | El nombre del nodo. |
Descripción corta | No | No | Descripción corta del nodo | |
Descripción larga | No | No | Texto que describe el propósito del nodo en el flujo de mensajes |
Las propiedades básicas del nodo Filter se describen en la siguiente tabla.
Propiedad | O | C | Valor predeterminado | Descripción | Propiedad de mandato mqsiapplybaroverride |
---|---|---|---|---|---|
Origen de datos | No | Sí | El nombre del origen de datos ODBC de la base de
datos que contiene las tablas a las que se hace referencia en el ESQL
asociado a este nodo (identificado por la propiedad Expresión de filtro). Este nombre identifica la base de datos apropiada del sistema en el que se va a ejecutar el flujo de mensajes. El intermediario se conecta a esta base de datos con la información de ID
de usuario y contraseña que ha especificado en el mandato
mqsicreatebroker, mqsichangebroker o
mqsisetdbparms.
Si el ESQL que está asociado a este nodo incluye una sentencia PASSTHRU o una función SELECT y una referencia a base de datos, debe especificar un valor para la propiedad Origen de datos. |
dataSource | |
Transacción | Sí | No | Automática | La modalidad de transacción para el nodo. Los valores son los siguientes:
|
|
Expresión de filtro | No | No | Filter | El nombre del módulo dentro del recurso ESQL (archivo) que contiene las sentencias que se van a ejecutar para el mensaje que se recibe en el nodo. El archivo ESQL, que de forma predeterminada tiene el nombre <nombre_flujo_mensajes>.esql contiene ESQL para cada nodo del flujo de mensajes que lo necesite. Cada parte del código relacionada con un nodo específico se denomina
módulo. Si desea que el nombre del módulo incluya uno o más espacios, escriba
el nombre entre comillas en la propiedad
Expresión de filtro.
Codifique las sentencias ESQL para personalizar el comportamiento del nodo Filter en un archivo ESQL que esté asociado al flujo de mensajes en el que ha incluido esta instancia del nodo Filter. Si todavía no existe ningún archivo ESQL para este flujo de mensajes, efectúe una doble pulsación en el nodo Filter o pulse con el botón derecho del ratón en el nodo y pulse Abrir ESQL para crear y abrir un nuevo archivo ESQL en la vista de editor ESQL. Si el archivo ya existe, pulse Navegar al lado de la propiedad Expresión de filtro para visualizar el recuadro de diálogo Selección de módulo, que lista los módulos disponibles del nodo Filter definidos en los archivos ESQL a los que este flujo de mensajes puede acceder (pueden definirse archivos ESQL en otros proyectos dependientes). Seleccione el módulo apropiado y pulse Aceptar; si no hay disponibles módulos apropiados, la lista está vacía. Si el módulo que especifica no existe, se crea automáticamente y el editor lo muestra. Si el archivo y el módulo ya existen, el editor resalta el módulo adecuado. Si se crea un esqueleto de módulo para este nodo en un archivo ESQL nuevo o ya existente, consta del ESQL siguiente. En este ejemplo se muestra el nombre de módulo predeterminado:
Si crea su propio módulo ESQL, debe crear este esqueleto exactamente tal como se muestra. Puede actualizar el nombre predeterminado, pero asegúrese de que el nombre que especifique coincida con el nombre de la propiedad de nodo correspondiente Expresión de filtro. Para personalizar este nodo, añada su propio ESQL después de la sentencia BEGIN y antes de la sentencia RETURN. Si la expresión de la sentencia RETURN no es TRUE ni FALSE, se resuelve su valor para determinar el terminal al que se propagará el mensaje. Si la expresión se resuelve en un valor nulo, o si codifica RETURN;, u omite la sentencia RETURN, el nodo propaga el mensaje al terminal Unknown (desconocido). |
|
En este módulo puede utilizar todas las sentencias ESQL incluidas SET, WHILE, DECLARE e IF, pero (a diferencia del nodo Compute) el nodo Filter propaga el mensaje que recibe en su terminal de entrada al terminal de salida, sin modificar. Por lo tanto, en el nodo Filter, del mismo modo que en el nodo Database, sólo tendrá un mensaje al que hacer referencia. Los nombres de correlación ESQL que se utilizan en un nodo Filter son distintos de los que se utilizan para un nodo Compute. Para obtener más información sobre los nombres de correlación, consulte los enlaces relacionados. Puesto que no puede modificar ninguna parte de ningún mensaje, la sentencia de asignación (la sentencia SET, no la cláusula SET de la sentencia INSERT) sólo puede asignar valores a variables temporales. Por tanto, el ámbito de las acciones que puede realizar con una sentencia de asignación es limitado. |
|||||
Tratar los avisos como errores | Sí | No | No seleccionado | Para que los mensajes de aviso de base de datos se traten como errores y que se
propague el mensaje de salida desde el nodo al terminal de anomalías, seleccione
Tratar los avisos como errores. Inicialmente, el recuadro está vacío. Cuando selecciona el recuadro, el nodo gestiona todos los códigos de retorno positivos de la base de datos como errores y genera excepciones igual que si se tratase de errores negativos o más graves. Si no selecciona el recuadro, el nodo trata los avisos como códigos de retorno normales y no emite excepciones. El aviso más significativo es no encontrado que, en la mayoría de los casos, puede tratarse de forma segura como un código de retorno normal. |
|
Generar excepción en error de base de datos | Sí | No | Seleccionado | Para que el intermediario genere una excepción cuando se detecte un error de base de
datos, seleccione Generar excepción en error de base de
datos. Inicialmente, el recuadro está seleccionado.
Si deselecciona el recuadro, deberá incluir ESQL para comprobar si hay algún error de la base de datos que pudiera devolverse después de cada llamada efectuada a la base de datos (esto puede hacerse utilizando SQLCODE y SQLSTATE). Si se ha producido un error, deberá gestionarlo en el flujo de mensajes para asegurarse de la integridad del intermediario y de la base de datos; el error se ignora si no lo gestiona a través de su propio proceso, debido a que ha elegido no invocar el manejo de errores predeterminado mediante el intermediario. Por ejemplo, puede incluir la sentencia THROW de ESQL para generar una excepción o puede utilizar el nodo Throw para generar posteriormente una excepción propia. |
|
Conectarse antes de iniciar el flujo |
No |
Sí |
No seleccionado |
De forma predeterminada, el intermediario se conecta al origen de datos cuando es necesario en un flujo de mensajes. Si marca el recuadro de selección, las conexiones del origen de datos se establecerán antes de que el flujo reciba un mensaje, en lugar de hacerlo durante el proceso del flujo de mensajes. |
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Sucesos | No | No | Ninguno | Los sucesos que se han definido para el nodo se visualizan en este separador. De forma predeterminada, no se define ningún suceso de supervisión en ningún nodo en un flujo de mensajes. Utilice Añadir, Editar y
Suprimir para crear, cambiar o suprimir sucesos de supervisión para el nodo; consulte Configuración de orígenes de sucesos de supervisión utilizando propiedades de supervisión para obtener detalles. Puede habilitar e inhabilitar sucesos que se muestran aquí seleccionando o deseleccionando el recuadro Habilitado. |