Utilice el nodo DatabaseRetrieve para asegurarse de que la información de un mensaje está actualizada.
Este tema contiene las siguientes secciones:
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:
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.
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 |
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 |
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.
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.
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.
EmployeeNumber | FamilyName | FirstName | Salary |
---|---|---|---|
00001 | Smith | John | 20000 |
00002 | Jones | Harry | 26000 |
00003 | Doe | Jane | 31000 |
<EmployeeRecord>
<EmployeeNumber>00001</EmployeeNumber>
</EmployeeRecord>
Nombre de tabla | Nombre de columna | Operador | Tipo de valor | Valor |
---|---|---|---|---|
Employee | FamilyName | |||
Employee | Salary | |||
Employee | EmployeeNumber | = | Element | $InputRoot/XMLNSC/EmployeeRecord/EmployeeNumber |
Nombre de columna | Elemento de mensaje |
---|---|
Employee.FamilyName | $OutputRoot/XMLNSC/EmployeeRecord/FamilyName |
Employee.Salary | $OutputRoot/XMLNSC/EmployeeRecord/Wage |
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.<EmployeeRecord>
<EmployeeNumber>00001</EmployeeNumber>
<FamilyName>Smith</FamilyName>
<Wage>20000</Wage>
</EmployeeRecord>
<EmployeeRecord>
<EmployeeNumber>00002</EmployeeNumber>
<FamilyName>Jones</FamilyName>
<Wage>26000</Wage>
</EmployeeRecord>
<EmployeeRecord>
<EmployeeNumber>00001</EmployeeNumber>
<FamilyName>Smith</FamilyName>
<Wage>20000</Wage>
<EmployeeNumber>00002</EmployeeNumber>
<FamilyName>Jones</FamilyName>
<Wage>26000</Wage>
</EmployeeRecord>
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.
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).
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. |
Propiedad | O | C | Valor predeterminado | Descripción | Propiedad de mandato mqsiapplybaroverride |
---|---|---|---|---|---|
Nombre de origen de datos | Sí | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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. |
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Elementos de datos | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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. |
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. |