Utilice el nodo Route para dirigir mensajes que satisfacen determinados criterios de búsqueda por distintas rutas de un flujo de mensajes.
Este tema contiene las siguientes secciones:
Por ejemplo, puede reenviar un mensaje a distintos proveedores de servicio en función de los detalles de la petición. También puede utilizar el nodo Route para omitir pasos innecesarios. Por ejemplo, puede comprobar si determinados datos están en un mensaje y realizar únicamente una operación de búsqueda en una base de datos si faltan datos. Si establece la propiedad Modalidad de distribución en Todas, podrá desencadenar varios sucesos que requieran, cada uno, distintas condiciones. Por ejemplo, puede registrar las solicitudes relacionadas con un identificador de cuenta determinado y enviar solicitudes relacionadas con un producto específico que requiera una auditoría.
Puede utilizar expresiones de filtro XPath para controlar el proceso. Un resultado de una expresión de filtro se convierte a booleano, de modo que se garantiza que el resultado sea true o false. Para obtener más información sobre la sintaxis de consulta de XPath 1.0, consulte Especificación W3C XPath 1.0.
El nodo Route se representa en la bandeja Direccionamiento de la paleta de nodos de flujos de mensajes, y se representa en el WebSphere Message Broker Toolkit con el siguiente icono:
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.
El nodo Route tiene un terminal de entrada y un mínimo de tres terminales de salida: Match (coincidente), Default (valor predeterminado) y Failure (de anomalías). Los terminales de salida Default (valor predeterminado) y Failure (de anomalías) son estáticos, por lo que siempre están presentes en el nodo. El terminal Match (coincidente) se crea automáticamente cada vez que se selecciona un nuevo nodo Route y se utiliza en el editor de flujo de mensajes. Este comportamiento significa que no siempre es necesario crear el primer terminal de salida dinámico, que es el número mínimo de terminales necesarios para que este nodo funcione. Puede renombrar este terminal dinámico si "Match" no es un nombre adecuado.
Un mensaje se copia en el terminal Default (valor mensaje) si ninguna de las expresiones de filtro es verdadera. Si se produce una excepción durante el filtrado, el mensaje se propaga al terminal Failure (de anomalías). El nodo Route puede definir uno o varios terminales de salida dinámicos. Para todos los terminales, la expresión de filtro asociada se aplica al mensaje de entrada y, si el resultado es verdadero (true), se direcciona una copia del mensaje al terminal especificado. El nodo Route determina el orden en el que se controlan los terminales. El nodo siempre propaga mensajes a los terminales en el orden en el que aparecen en la tabla de filtros.
Cada expresión de filtro se aplica al mensaje de entrada en el orden en el que se especifican en la tabla de filtros. Si el resultado es verdadero, se redirecciona una copia del mensaje a su terminal de salida dinámico asociado. Si establece la propiedad Modalidad de distribución en Primera, es posible que no se produzca la aplicación de todas las expresiones de filtro.
<EmployeeRecord>
<EmployeeNumber>00001</EmployeeNumber>
<FamilyName>Smith</FamilyName>
<Wage>20000</Wage>
</EmployeeRecord>
y las siguientes expresiones de filtro XPath:$Root/XMLNSC/EmployeeRecord/EmployeeNumber="00002"|Match
$Root/XMLNSC/EmployeeRecord/EmployeeNumber="00001"|out_exp2
En este ejemplo, la propiedad Modalidad de distribución se establece en Primera. El nodo Route procesa las expresiones de filtro XPath, en el orden en el que se visualizan, en el mensaje de entrada. Como la propiedad Modalidad de distribución se establece en Primera, el mensaje de entrada sin modificar sólo se propaga una vez al terminal de salida dinámico correlacionado con la primera expresión de filtro que se resuelve en verdadero. En el ejemplo anterior, la primera expresión de filtro, que está asociada con el terminal Match (coincidente), es falsa porque el número de empleado del mensaje de entrada no es "00002". Por lo tanto no se propaga ningún mensaje al terminal Match (coincidente). La segunda expresión de filtro es verdadera, por lo que una copia del mensaje de entrada se direcciona al terminal dinámico "out_expr2". Si el número de empleado del mensaje de entrada es "00003" y, por lo tanto, no coincide con ninguna expresión de filtro, el mensaje se propagará al terminal de salida estático Predeterminado. Si la propiedad Modalidad de distribución se ha establecido en Todo en este ejemplo, se obtendrá el mismo resultado porque sólo una expresión de filtro es verdadera.
Los terminales de nodo Route se describen en la siguiente tabla.
Terminal | Descripción |
---|---|
In (de entrada) | El terminal de entrada estático que acepta un mensaje para que lo procese el nodo. |
Match (coincidente) | Un terminal de salida dinámico al que puede dirigirse el mensaje original cuando el proceso termina correctamente. Puede crear terminales dinámicos adicionales; consulte Terminales dinámicos. |
Default (valor predeterminado) | El terminal de salida estático al que se dirige el mensaje si ninguna expresión de filtro se resuelve en verdadera. |
Failure (de anomalías) | El terminal de salida estático al que se dirige un mensaje si se ha detectado una anomalía durante su proceso. |
El nodo Route puede tener más terminales de salida dinámicos. No todos los terminales de salida dinámicos que se crean en un nodo Route necesitan correlacionarse con una expresión de la tabla de filtros. Los mensajes no se propagan nunca a terminales de salida dinámicos sin correlacionar. Se pueden correlacionar varias expresiones al mismo único terminal de salida dinámico. No existe ningún terminal de salida estático al que se pase directamente el mensaje. Para obtener más información sobre cómo utilizar terminales dinámicos, consulte Utilización de terminales dinámicos.
Una vez ha puesto una instancia del nodo Route en un flujo de mensajes, puede configurarlo. Para obtener más información, consulte 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.
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).
Propiedad | O | C | Default (valor predeterminado) | Descripción |
---|---|---|---|---|
Nombre de nodo | No | No | El tipo de nodo, Route | El nombre del nodo. |
Descripción corta | No | No | Una descripción breve del nodo. | |
Descripción larga | No | No | Texto que describe la finalidad del nodo en el flujo de mensajes. |
Propiedad | O | C | Default (valor predeterminado) | Descripción | Propiedad de mandato mqsiapplybaroverride |
---|---|---|---|---|---|
Tabla de filtros | Sí | No | Una tabla donde las filas son expresiones y nombres de terminal asociados que definen el cambio que lleva a cabo este nodo después de la evaluación de cada expresión de filtro. La expresión completa tiene el formato
Todas las expresiones XPath deben empezar por $Root, $Properties, $LocalEnvironment,
$DestinationList, $ExceptionList o $Environment. Si crea una expresión manualmente, también puede iniciar la expresión con $Body.
No obstante, el Creador de expresiones XPath y la validación asociada en WebSphere Message Broker Toolkit no da soporte al uso de la variable
$Body. Si utiliza el Creador de expresiones XPath, utilice la variable $Root en su lugar.Las expresiones se evalúan en el orden en el que se visualizan en la tabla. Para mejorar el rendimiento, especifique las expresiones que se satisfacen más a menudo al principio de la tabla de filtros. Normalmente se especifica un nombre de terminal único para cada expresión XPath. |
||
Modalidad de distribución | No | Sí | Todo | Esta propiedad determina el comportamiento de direccionamiento del nodo cuando un mensaje de entrada coincide con varias expresiones de filtro. Si establece la propiedad Modalidad de distribución en Primera, el mensaje se propaga al terminal de salida asociado de la primera expresión de la tabla que se resuelve en el verdadera. Si establece esta propiedad en Todo, el mensaje se propaga al terminal de salida asociado para cada expresión de la tabla que se resuelve en verdadera. Si no hay ninguna terminal de salida que coincida, el mensaje se propaga al terminal Default (valor predeterminado). | distributionMode |
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. |