WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Nodo DatabaseRoute

Utilice el nodo DatabaseRoute para direccionar mensajes utilizando información de la base de datos junto con expresiones XPath.

Este tema contiene las siguientes secciones:

Finalidad

El nodo DatabaseRoute utiliza una colección de valores de columna con nombre de una fila de base de datos seleccionada y aplica de forma sincronizada una o más expresiones XPath a esos valores adquiridos para tomar decisiones de direccionamiento.

Para obtener más información sobre la sintaxis de consultas XPath 1.0, consulte Especificación W3C XPath 1.0.

El nodo DatabaseRoute se representa en la bandeja Base de datos de la paleta de nodos de flujos de mensajes, y se representa en el WebSphere Message Broker Toolkit con el siguiente icono:

Icono de nodo DatabaseRoute

Utilización de este nodo en un flujo de mensajes

Consulte el ejemplo siguiente para ver cómo se debe 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.

Se da soporte a los valores de parámetros de entrada que se obtienen de elementos de mensajes del mensaje de entrada para su inserción en sentencias preparadas que este nodo utiliza. Estos valores se obtienen de los elementos name, value y name-value en el mensaje de entrada analizado entrante. Los elementos se obtienen al principio en la forma de un objeto com.ibm.broker.plugin.MbElement, por lo tanto, el rango de tipos de objetos Java™ soportados que los valores pueden aceptar está controlado por la interfaz de este objeto. Cuando los valores tienen el formato de objetos o tipos primitivos Java se convierten en su tipo de datos JDBC equivalente, como se muestra en la siguiente tabla.
Java JDBC
Entero INTEGER
Long BIGINT
Double DOUBLE
BigDecimal NUMERIC
Boolean BIT
byte[] VARBINARY o LONGVARBINARY
BitSet VARBINARY o LONGVARBINARY
String VARCHAR o LONGVARCHAR
MbTime java.sql.Time
MbTimestamp java.sql.Timestamp
MbDate java.sql.Date
Se utilizan los valores de un elemento sólo si el elemento es de un tipo conocido y su estado de valor es válido, de lo contrario, se emite una excepción. Los valores de columna de salida que se obtienen del conjunto de resultados procedentes de consultas SQL llevadas a cabo por este nodo se convierten primero en tipos Java coincidentes y luego en tipos de valor de elementos de mensajes internos, como se muestra en la siguiente tabla.
JDBC Java Tipo ESQL
SMALLINT Entero INTEGER
INTEGER Entero INTEGER
BIGINT Long DECIMAL
DOUBLE Double FLOAT
REAL Double FLOAT
FLOAT Double FLOAT
NUMERIC BigDecimal DECIMAL
DECIMAL BigDecimal DECIMAL
BIT Boolean BOOLEAN
BOOLEAN Boolean BOOLEAN
BINARY byte[] BLOB
VARBINARY byte[] BLOB
LONGVARBINARY byte[] BLOB
CHAR String CHARACTER
VARCHAR String CHARACTER
LONGVARCHAR String CHARACTER
TINYINT byte[1] BLOB
TIME java.util.Date TIME
TIMESTAMP java.util.Date TIMESTAMP
DATE java.util.Date DATE
Puede direccionar un mensaje a la misma ubicación, tanto si una consulta frente a una base de datos especificada es satisfactoria o no lo es, conectando los dos terminales de salida de no anomalía con la misma ubicación de salida.

Si se encuentra un error en la expresión XPath de un patrón, se notifica durante la validación del WebSphere Message Broker Toolkit. El mensaje de error notificado puede incluir la serie de expresión incorrecta y su nombre de terminal estático o dinámico único asociado, o la serie puede marcarse como interrumpida dentro de la tabla.

El nodo necesita información de consulta que se utiliza para formar una consulta select SQL, que puede acceder a varias tablas en una base de datos utilizando varias condiciones de prueba. Algunas veces, no toda la información que desea recuperar en un conjunto de resultados está en una sola tabla de base de datos. Para obtener los valores de columna que desea, es posible que sea necesario recuperarlos de dos o más tablas. Este nodo da soporte al uso de sentencias SELECT que facilitan la obtención de columnas de una o más tablas en un único conjunto de resultados. La sintaxis de unión típica que recibe soporte también se denomina unión interna.

La información de unión interna recopilada para formar una consulta incluye una lista de los valores de columna calificados de la tabla que se van a recuperar y una lista de condiciones de prueba, que forman la cláusula WHERE de la sentencia SELECT. Los valores de columna calificados de la tabla pueden formar el operando de la izquierda en una condición de prueba. Elija un operador de comparación para aplicar este operando y, si lo desea, especifique un operando de la derecha para completar la condición de prueba. El operador puede ser una prueba de comparación nula, en el que no se necesita ningún operando de la derecha. El valor del operando de la derecha puede ser un tipo de base de datos (como Integer, Boolean o Long), otra columna calificada de la tabla o un valor que se obtiene de un elemento del mensaje de entrada, tal como se indica a través de una expresión general XPath.

Al desplegar un nodo DatabaseRoute de un flujo de mensajes, puede seleccionar un valor asociado a la propiedad Nombre de origen de datos. La lista de valores contiene referencias a entradas de proveedor JDBC predefinidas IBM® existentes que se definen cuando se crea un intermediario. Estas entradas están incompletas, de modo que puede modificarlas para acceder a la definición de origen de datos con la que desea trabajar. Si ya se hace referencia a un proveedor JDBC existente predefinido de IBM de forma predeterminada y se está utilizando en otro nodo de base de datos JDBC que requiere valores distintos, utilice WebSphere Message Broker Explorer; para más información, consulte Uso de WebSphere Message Broker Explorer para trabajar con servicios configurables o el mandato mqsicreateconfigurableservice para especificar una entrada nueva de proveedor JDBC.

Utilice el mandato WebSphere Message Broker Explorer o mqsideleteconfigurableservice para suprimir las entradas de proveedores JDBC que no desee.

Sólo puede suprimir servicios configurables con un nombre personalizado; no puede suprimir servicios configurables definidos por IBM.

El nodo DatabaseRoute tiene un terminal de entrada y un mínimo de cuatro terminales de salida: Match, keyNotFound, Default y Failure. Los terminales de salida keyNotFound, Default y Failure 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 DatabaseRoute y se utiliza en el editor de flujos de mensajes. Este comportamiento indica que no es necesario crear siempre el primer terminal de salida dinámico de este nodo, que es el número mínimo de terminales necesario para que este nodo pueda funcionar. 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). Si la consulta de base de datos que se aplica al origen de datos del nodo genera un conjunto de resultados vacío (es decir, no hay ninguna fila de base de datos que coincida), se copia un mensaje en el terminal keyNotFound. El nodo DatabaseRoute 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.

Cada expresión de filtro de la tabla de filtros se puede aplicar a:
  • El mensaje de entrada
  • La colección de valores de columna indicados que se seleccionan de una fila de base de datos coincidente
  • Los valores de mensaje de entrada y de columna devueltos
  • Ninguno de los dos
porque las expresiones pueden ser cualquier expresión XPath 1.0 general.

Al igual que el nodo Route, las expresiones se aplican en el orden en el que se indican 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.

La expresión de filtro puede fallar si compara un valor de columna devuelto con un literal de serie. La forma en que se almacena una entrada de columna (por ejemplo, un campo de caracteres de longitud fija) determina lo que se devuelve de la base de datos para una columna especificada. Se rellenan con espacios en blanco los campos de caracteres de longitud fija que se recuperan en una base de datos, donde el valor que se almacena es menor que la longitud de almacenamiento del carácter de columna especificada. Es este caso, se rellena la parte derecha de la serie de caracteres que se devuelve y forma parte de la serie. Debe recordar esto cuando compare ese valor de columna con un literal de serie, porque una expresión de comparación de igualdad puede fallar si el literal no contiene la misma serie exacta, incluidos los caracteres de relleno.

Por ejemplo, en una tabla llamada Employee, una columna de base de datos llamada LastName que se define como char(10) con el valor 'Smith', se devuelve como 'Smith ', de modo que la expresión de filtro deberá ser:
$Employee_LastName = 'Smith     '
que se resuelve en verdadero. La expresión:
$Employee_LastName = 'Smith'
se resuelve en falso.
Alternativamente, la expresión XPath puede utilizar la siguiente función:
Function: string normalize-space(string?)   
La función de espacio de normalización devuelve la serie de argumento con el espacio en blanco normalizado deshaciendo el espacio en blanco inicial y final y sustituyendo las secuencias de caracteres de espacio en blanco por un solo espacio. Por eso, la expresión es:
normalize-space($Employee_LastName) = 'Smith'

Cómo hacer que el servicio de proveedor JDBC esté disponible para el nodo DatabaseRoute

El nodo DatabaseRoute construye sus conexiones JDBC utilizando los detalles de conexión que están almacenados en el registro del intermediario como servicio configurable. Se proporcionan servicios configurables JDBCProviderpara todas las bases de datos soportadas. Utilice el mandato mqsichangeproperties para modificar los valores del servicio proporcionado para la base de datos elegida, o cree un nuevo servicio mediante el mandato mqsicreateconfigurableservice. Consulte Configuración de un proveedor JDBC para conexiones de tipo 4 para obtener más información y ayuda sobre cómo trabajar con servicios JDBCProvider. Debe configurar un servicio JDBCProvider distinto para cada base de datos a la que desea conectarse.

Nota: La propiedad maxConnectionPoolSize no se aplica a las conexiones JDBC utilizadas por los nodos DatabaseRetrieve o DatabaseRoute.

Cuando ha definido el servicio, establezca la propiedad Nombre de origen de datos de este nodo en el nombre del servicio JDBCProvider; los atributos del servicio se utilizan para establecer conexiones para el nodo DatabaseRoute.

Debe detener y reiniciar el intermediario para que los cambios entren en vigor, salvo que tenga previsto crear un nuevo grupo de ejecución en el intermediario al que desplegará el flujo de mensajes que contiene este nodo.

Utilización de la vista Explorador de origen de datos para consultar orígenes de datos

Utilice la vista Explorador de origen de datos para descubrir los nombres de tablas dentro de una base de datos de destino, así como los nombres de las columnas de esas tablas. Debe importar las definiciones de base de datos para las bases de datos en WebSphere Message Broker Toolkit para poder verlas en la vista Explorador de orígenes de datos.
  1. Vaya a la perspectiva Desarrollo de aplicaciones de intermediario.
  2. En la vista Explorador de origen de datos, expanda Conexiones. Se enumeran las conexiones de base de datos.
  3. Expanda una conexión de base de datos para listar las bases de datos y luego expanda la base de datos adecuada.
  4. Expanda Esquema para enumerar los esquemas y luego expanda el esquema apropiado.
  5. Expanda Tablas para listar todas las tablas.
  6. Pulse una tabla para mostrar sus propiedades en la vista Propiedades.
  7. En la vista Propiedades, pulse el separador Columnas para ver los nombres de columna.

Configuración del nodo DatabaseRoute

Una vez ha puesto una instancia del nodo DatabaseRoute 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.

Ejemplo

Suponga el siguiente ejemplo, que utiliza una tabla de base de datos denominada Employee.
EmployeeNumber FamilyName FirstName Salary
00001 Smith John 20000
00002 Jones Harry 26000
00003 Doe Jane 31000
Las siguientes propiedades de nodo DatabaseRoute se establecen como se especifican:
Nombre de tabla Nombre de columna Operador Tipo de valor Valor
Employee FamilyName ASC Ninguno Ninguno
Employee Salary ASC Ninguno Ninguno
Employee EmployeeNumber = Elemento $Body/EmployeeRecord/EmployeeNumber
El nodo DatabaseRoute conecta a la tabla de base de datos Employee y extrae el valor que se debe comparar de cada mensaje de entrada. La expresión XPath que se utiliza para navegar al cuerpo del mensaje es: $Body/EmployeeRecord/EmployeeNumber. La consulta SQL es:
SELECT Employee.FamilyName, Employee.Salary
FROM Employee
WHERE EmployeeNumber=?
ORDER BY Employee.FamilyName ASC, Employee.Salary ASC
donde ? es el valor que se recupera del mensaje entrante. Este valor se ubica a través de la propiedad Valor en la tercera fila de la tabla de elementos de consulta, que tiene el tipo de valor Elemento.
  • Si el valor en esta ubicación es 00001, se recupera la información para John Smith. La primera expresión XPath, que está asociada con el terminal dinámico out_expr1, no se cumple, por lo que no se cumple su condición y no se propaga ningún mensaje al terminal Out (de salida). Se cumple la segunda expresión XPath, por lo que se direcciona un mensaje de entrada al terminal dinámico out_expr2.
  • Si el valor en esta ubicación es 00002, se recupera la información para Harry Jones. Se cumple la primera expresión XPath, que está asociada con el terminal dinámico out_expr1, por lo que una copia del mensaje de entrada se direcciona al terminal out_expr1. La segunda expresión XPath no se procesa porque la propiedad Modalidad de distribución se establece en Primera.

Terminales

Los terminales de nodo DatabaseRoute 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.
Valor predeterminado El terminal de salida estático al que se dirige el mensaje si ninguna expresión de filtro se resuelve en verdadera.
keyNotFound El terminal de salida estático en el que se copia el mensaje si no hay ninguna fila de base de datos que coincida.
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.

Terminales dinámicos

El nodo DatabaseRoute puede tener más terminales de salida dinámicos. No todos los terminales de salida dinámicos que se crean en un nodo DatabaseRoute necesitan correlacionarse con una expresión de la tabla de filtros. Para los terminales de salida dinámicos, los mensajes nunca se propagan a los mismos. Se pueden correlacionar varias expresiones al mismo único terminal de salida dinámico. Para obtener más información sobre cómo utilizar terminales dinámicos, consulte Utilización de terminales dinámicos.

Propiedades

Las tablas siguientes describen las propiedades de 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 DatabaseRoute se describen en la siguiente tabla.
Propiedad O C Valor predeterminado Descripción
Nombre de nodo No No El tipo de nodo, DatabaseRoute 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.
Las propiedades básicas del nodo DatabaseRoute se describen en la siguiente tabla.
Propiedad O C Valor predeterminado Descripción Propiedad de mandato mqsiapplybaroverride
Nombre de origen de datos DB2 El alias que se utiliza para localizar la definición del servicio JDBCProvider que se almacena en el registro de intermediario. El alias se utiliza para localizar y compilar el URL de conexión JDBC para la conexión con un DBMS. El URL de conexión es específica del controlador, pero incluye el nombre de base de datos con la que conectarse.

Si la conexión a la base de datos se realiza mediante una cuenta y contraseña de inicio de sesión, el nodo también utiliza esta propiedad como clave de consulta, mientras que estos valores se pueden adquirir de una entrada DSN del registro de intermediario coincidente esperado.

Si el DBMS está protegido por contraseña, defina el parámetro -n en el mandato mqsisetdbparms para la clave de seguridad exclusiva JDBC antes de desplegar el flujo de mensajes que contiene este nodo DatabaseRoute.

dataSource
Elementos de consulta No   Una tabla de elementos de consulta que se utilizan para componer una sola sentencia select SQL. La tabla consta de cinco columna, y una o varias filas. Las columnas son Nombre de tabla, Nombre de columna, Operador, Tipo de valor y Valor. Estas cinco propiedades describen un elemento de consulta, que indica un valor de columna calificada de tabla que se va a recuperar de una base de datos. En este caso, el elemento forma parte de las cláusulas SELECT y ORDER en la consulta generada. De lo contrario, el elemento de consulta actúa como una condición de prueba que forma un predicado dentro de la cláusula WHERE en la consulta generada.  
Nombre de tabla No   El nombre de una tabla de base de datos que forma parte de la sentencia select SQL, incluido el nombre de esquema; por ejemplo, myschema.mytable.  
Nombre de columna No   El nombre de la columna de la tabla de base de datos que se debe recuperar del conjunto de resultados, como se califica mediante el valor de la propiedad Nombre de tabla. Esta cláusula SELECT puede hacer referencia a este nombre como un valor de columna que se debe devolver de una consulta o al que se debe hacer referencia en una condición de prueba en la cláusula WHERE.  
Operador No   Un operador de comparación que se aplica a un operando de la izquierda (la columna de tabla que se especifica en las dos primeras columnas de la fila) y, de forma opcional, un valor de operando de la derecha. Si especifica un valor de operando Ascendente 'ASC' o Descendente 'DESC' para esta propiedad, esta fila significa la declaración de una columna calificada de tabla que forma parte de las cláusulas SELECT y ORDER BY en la consulta generada y, de forma opcional, a la que se puede hacer referencia en filas futuras como valor de operando de la derecha.  
Tipo de valor No   Un valor que se establece en Ninguno o que indica el tipo de valor que se expresa en la última columna de esta fila. Si esta propiedad no se establece en Ninguno, hace referencia a una fila que describe una condición de prueba en la cláusula WHERE de la sentencia select SQL.  
Valor No   Una propiedad que se establece en especifica Ninguno o que especifica una de un conjunto de tipos de propiedades especificado, como lo expresa la propiedad Tipo de valor. Por ejemplo, si la propiedad Tipo de valor se establece en Elemento, la propiedad Valor recopila una expresión general de XPath 1.0. El valor que se devuelve de la expresión cuando se aplica al mensaje de entrada del nodo se utiliza como el valor de operando de la derecha que se va a comparar a través de este predicado. El valor comparado del operando de la derecha debe coincidir con el tipo que se recupera de la columna de la tabla con la que se compara como operando de la izquierda. Las expresiones complejas son posibles, donde se pueden obtener cero o más valores del mensaje de entrada, y manipular para formar un solo valor para su comparación. Por ejemplo, la suma de varios valores de campos en el mensaje de entrada se puede calcular mediante una expresión general que se presenta para un tipo de valor Elemento.  
Modalidad de distribución No Todo Esta propiedad especifica el comportamiento de direccionamiento de este nodo cuando un mensaje de entrada coincide con varias expresiones. Si la propiedad Modalidad de distribución se establece en Primera, el mensaje se propaga al primer terminal de salida coincidente. Si la propiedad Modalidad de distribución se establece en Todo, el mensaje se propaga a todos los terminales de salida coincidentes. Si no hay ningún terminal de salida coincidente, el mensaje se propaga al terminal Default (valor predeterminado).  
Las propiedades de tabla de expresiones de filtro del nodo DatabaseRoute se describen en la siguiente tabla.
Propiedad O C Valor predeterminado Descripción
Tabla de filtros No   Una tabla de filtros (expresiones generales de XPath 1.0) y nombres de terminales asociados que definen todo el filtrado adicional que lleva a cabo este nodo. La tabla consta de dos columnas y una o varias filas. Debe tener como mínimo una fila en esta tabla para que el nodo pueda llevar a cabo la lógica de direccionamiento. Al igual que el nodo Route, las expresiones se evalúan en el orden en el que se visualizan en la tabla. Para mejorar el rendimiento, coloque las expresiones XPath que se satisfacen más a menudo al principio de la tabla de filtros.
Las propiedades de supervisión del nodo se describen en la siguiente tabla.
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.

Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:58:41


Tema de referenciaTema de referencia | Versión 8.0.0.5 | ac37380_