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 DatabaseRetrieve

Utilice el nodo DatabaseRetrieve para asegurarse de que la información de un mensaje está actualizada.

Este tema contiene las siguientes secciones:

Finalidad

Utilice el nodo DatabaseRetrieve para modificar un mensaje utilizando información de una base de datos. Por ejemplo, puede añadir información a un mensaje utilizando una clave contenida en el mensaje; la clave puede ser un número de cuenta.

El nodo DatabaseRetrieve 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 DatabaseRetrieve

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 DatabaseRetrieve busca valores en la base de datos y los almacena como elementos en los árboles del conjunto de mensajes de salida. El tipo de información que se obtiene de la base de datos en forma de valores de columna de salida, que se adquieren y se vuelven a pasar en el conjunto de resultados de consultas SQL, primero se convierte en un tipo Java coincidente y luego en un tipo de valor de elemento de mensaje interno cuando al final se almacena en una ubicación de un árbol del conjunto de mensajes de salida. Si ya existe un elemento de mensaje en el árbol de mensaje de salida, el nuevo valor sobrescribe el valor anterior. Si el elemento de destino no existe, se crea y el valor se almacena.

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 normal 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 a la derecha para completar la condición de prueba. El operador podría ser una prueba de comparación nula, en cuyo caso no sería necesario el 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 1.0.

La aplicación de la expresión debe dar como resultado la devolución de un solo elemento, double, Boolean, o string; de lo contrario, se produce une excepción. Si la consulta devuelve varias filas, se selecciona la primera fila y se ignora el resto, salvo que se seleccione la opción Varias filas. En este caso, se procesan todas las filas y los valores de estas filas se utilizan para actualizar los árboles del mensaje ensamblado de salida.

Puede ser útil combinar un nodo DatabaseRetrieve con otros nodos de flujos de mensajes. Por ejemplo, puede utilizar un nodo XSLTransform para manipular datos antes o después de invocar el nodo DatabaseRetrieve.

El nodo DatabaseRetrieve tiene un terminal de entrada (In) y tres terminales de salida (Out, KeyNotFound y Failure). Si el mensaje se modifica satisfactoriamente, se direcciona al terminal Out. Si el mensaje no se modifica satisfactoriamente o se detecta una anomalía durante el proceso, el mensaje se direcciona al terminal Failure. Si no se devuelve ninguna fila en el conjunto de resultados que siguen a la ejecución de una consulta select SQL especificada, el mensaje original se dirige al terminal KeyNotFound.

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

El nodo DatabaseRetrieve 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 WebSphere Message Broker Explorer para modificar o crear el servicio suministrado; consulte Uso de WebSphere Message Broker Explorer para trabajar con servicios configurables para más información.

También puede utilizar 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 DatabaseRetrieve.

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 DatabaseRetrieve

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

En el siguiente ejemplos se añaden nuevos elementos (nombre de familia y wage) a la estructura de mensajes de entrada. Este ejemplo 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
Para hacer una copia del mensaje de entrada, seleccione Copiar mensaje. Cuando se selecciona esta opción, el nodo siempre crea un conjunto de mensajes de salida que se basa en el conjunto de mensajes de entrada, y estos árboles del nuevo conjunto de mensajes de salida se modifican y propagan al terminal Out (de salida) del nodo. Este comportamiento permite modificar el propio árbol de mensajes de salida ($OutputRoot), además de los demás árboles lógicos del conjunto de mensajes: $OutputLocalEnvironment, $OutputDestinationList, $OutputExceptionList y $Environment. Si los árboles lógicos sólo los va a modificar este nodo, por razones de rendimiento, no seleccione Copiar mensaje. Cuando esta propiedad no está seleccionada, el nodo siempre trabaja con el conjunto de mensajes de entrada original y espera que no se produzcan actualizaciones en relación al árbol de mensajes. Si una expresión XPath de la Tabla de elementos de datos intenta actualizar este árbol de mensajes a través de una referencia a $OutputRoot, se produce una MbReadOnlyMessageException. El mensaje de entrada es:
<EmployeeRecord>
	<EmployeeNumber>00001</EmployeeNumber>
</EmployeeRecord>
A continuación se muestra un ejemplo de la Tabla de elementos de consulta.
Nombre de tabla Nombre de columna Operador Tipo de valor Valor
Employee FamilyName      
Employee Salary      
Employee EmployeeNumber = Element $InputRoot/XMLNSC/EmployeeRecord/EmployeeNumber
A continuación se muestra un ejemplo de la Tabla de elementos de datos.
Nombre de columna Elemento de mensaje
Employee.FamilyName $OutputRoot/XMLNSC/EmployeeRecord/FamilyName
Employee.Salary $OutputRoot/XMLNSC/EmployeeRecord/Wage
El nodo DatabaseRetrieve 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: $InputBody/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 de entrada, que se localiza 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 fila del elemento de datos indica que se obtenga el valor de la columna FamilyName que se devuelve de la consulta y que se inserte en un nuevo elemento denominado "FamilyName" bajo EmployeeRecord. La segunda fila del elemento de datos indica que se obtenga el valor de la columna Salary que se devuelve de la consulta y que se inserte en un nuevo elemento denominado "Wage" bajo EmployeeRecord. El mensaje de salida que resulta es:
    <EmployeeRecord>
    	<EmployeeNumber>00001</EmployeeNumber>
    	<FamilyName>Smith</FamilyName>
    	<Wage>20000</Wage>
    </EmployeeRecord>
  • Si el valor en esta ubicación es 00002, se recupera la información para Harry Jones. El mensaje de salida que resulta es:
    <EmployeeRecord>
    	<EmployeeNumber>00002</EmployeeNumber>
    	<FamilyName>Jones</FamilyName>
    	<Wage>26000</Wage>
    </EmployeeRecord>
Si selecciona la propiedad Varias filas y se devuelven los detalles de los dos empleados desde una consulta en la forma de dos filas en el conjunto de resultados, el mensaje de salida que resulta es:
<EmployeeRecord>
	<EmployeeNumber>00001</EmployeeNumber>
	<FamilyName>Smith</FamilyName>
	<Wage>20000</Wage>
	<EmployeeNumber>00002</EmployeeNumber>
	<FamilyName>Jones</FamilyName>
	<Wage>26000</Wage>
</EmployeeRecord>

Validación de mensajes

Establezca las propiedades de validación para definir cómo debe validarse el mensaje producido por el nodo DatabaseRetrieve. Estas propiedades no hacen que se valide el mensaje de entrada. Se espera que, si se necesita dicha validación, el nodo de entrada o un nodo de validación anterior ya habrá realizado la validación.

Si desea ver información más detallada, consulte los apartados Validar mensajes y Propiedades de validación.

Terminales y propiedades

Los terminales de nodo DatabaseRetrieve se describen en la siguiente tabla.

Terminal Descripción
In (de entrada) El terminal de entrada que acepta un mensaje para que lo procese el nodo.
Out (de salida) El terminal de salida al que se dirige el mensaje de salida cuando se ha modificado satisfactoriamente.
KeyNotFound (de claves no encontradas) El terminal de salida al que se dirige, sin modificar, el mensaje original, cuando el conjunto de resultados está vacío.
Failure (de anomalías) El terminal de salida al que se dirige un mensaje si se ha detectado una anomalía durante su proceso.

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 DatabaseRetrieve se describen en la siguiente tabla.
Propiedad O C Valor predeterminado Descripción
Nombre de nodo No No DatabaseRetrieve 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 DatabaseRetrieve 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 que se utiliza para conectar 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 DatabaseRetrieve.

dataSource
Copiar mensaje No Deseleccionado Esta propiedad indica si es necesaria una copia del mensaje de entrada original porque se va a actualizar el árbol de mensaje, posiblemente además de los árboles lógicos dentro del mensaje ensamblado. Por omisión, este recuadro de selección está borrado. Por razones de rendimiento, seleccione esta propiedad sólo si se aumentará el mensaje de entrada.  
Varias filas No Deseleccionado Esta propiedad indica si se han procesado todas las filas cuando una consulta devuelve varias filas. Si selecciona Varias filas, se procesan todas las filas y los valores de estas filas se utilizan para actualizar los árboles del conjunto de mensajes de salida. Si no selecciona esta propiedad, se elige la primera fil y se ignora el resto.  
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, tal 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 dentro de 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 filas) y, de forma opcional, un valor que se aplica a un operando en 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 un 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 tabla con la que se ha comparado 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.  
Las propiedades de la tabla de elementos de datos DatabaseRetrieve se describen en la siguiente tabla.
Propiedad O C Valor predeterminado Descripción
Elementos de datos No   Lista de elementos de datos. Un elemento de datos se describe mediante las propiedades Nombre de columna y Elemento de mensaje.
Nombre de columna No   Nombre de la columna de base de datos de la que se obtiene el valor del elemento. La lista de nombres se actualiza automáticamente en función de las entradas de columna que se especifican en la tabla de elementos de consulta.
Elemento de mensaje No   Una expresión de vía de acceso de lectura/escritura XPath 1.0 que describe la ubicación de vía de acceso de un elemento de mensaje. El elemento de mensaje es donde se almacena el valor de la base de datos. La expresión XPath debe valorarse en un único elemento del mensaje.

Las propiedades de validación del nodo DatabaseRetrieve se describen en la siguiente tabla.

Para ver la descripción completa de estas propiedades, consulte el apartado Propiedades de validación.
Propiedad O C Valor predeterminado Descripción
Validar No Ninguno Esta propiedad controla si tiene lugar la validación. Los valores válidos son Ninguna, Contenido y valor, Contenido y Heredar.
Acción para anomalía No No Excepción Esta propiedad controla qué sucede si falla una validación. Sólo puede establecer esta propiedad si Validar se establece en Contenido o Contenido y valor. Los valores válidos son Rastreo de usuario, Anotaciones de error locales, Excepción y Lista de excepciones.
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 | ac37390_