Cómo llamar a un servicio web usando la tarea Servicio web (vídeo de SQL Server)

Se aplica a: SQL Server 2008 Integration Services

Autores: Douglas Laudenschlager, Microsoft Corporation

Duración: 00:10:57

Tamaño: 11,3 MB

Tipo: archivo WMV

Ver este vídeo

Temas de ayuda relacionados:

Tarea Servicio web

Resumen del vídeo

Aprenda a llamar a un servicio web desde un paquete de Integration Services configurando un administrador de conexiones HTTP y la tarea Servicio Web. A continuación, aprenda a establecer una tarea XML para leer la información recuperada y utilizarla en el paquete.

Transcripción del vídeo

Hola, me llamo Douglas Laudenschlager y trabajo en el equipo de documentación de Microsoft SQL Server Integration Services.

Hoy veremos cómo llamar a un Servicio web utilizando la tarea Servicio web.

Como parte de esta presentación, aprenderá a:

  • Configurar un administrador de conexiones HTTP.
  • Configurar la tarea Servicio web.
  • Descargar el archivo WSDL que describe el servicio web.
  • Llamar a un método web y proporcionar los valores de entrada esperados.
  • Leer el valor devuelto utilizando una tarea XML.
  • Y utilizar los resultados del servicio web en el paquete.

Nos encontramos en Business Intelligence Development Studio, donde hemos creado un proyecto de Integration Services, hemos abierto el paquete y hemos agregado algunos componentes que necesitamos para nuestra presentación.

Antes de empezar a trabajar en nuestro paquete, echemos un vistazo al servicio web que vamos a utilizar. Se trata de un servicio web público y gratuito que proporciona información para la conversión de divisas. Aprovechamos que estamos aquí para copiar la URL al Portapapeles para utilizarlo en nuestro paquete. Este servicio web presenta un único método web denominado ConversionRate que devuelve tipos de cambio para la mayoría de las divisas mundiales. Si probamos el funcionamiento del sitio preguntando por el tipo de cambio de dólar estadounidense a euros, la respuesta XML será la misma que nuestro paquete recibirá.

Volvamos a nuestro paquete. En primer lugar, es necesario que creemos algunas variables para el paquete. Necesitamos que una variable contenga la respuesta XML del servicio web, que llamaremos ConversionRateResponse, y una segunda variable que contenga el tipo de cambio y que llamaremos ConversionRate. Ambas son valores de cadena.

El siguiente requisito previo para la tarea Servicio web es un administrador de conexiones HTTP que contenga la URL del servicio web. Vamos a agregar una nueva conexión HTTP aquí y vamos a pegarla en la URL del servicio web. Puesto que necesitaremos descargar el archivo de lenguaje de descripción de servicios web, o WSDL, para el servicio web, escribiremos ?wsdl al final de la URL. Ahora guardamos nuestro administrador de conexiones...

...y ya estamos listos para agregar la tarea Servicio web. Al abrir el Editor de la tarea Servicio web, lo primero que tenemos que hacer es asignar el administrador de conexiones HTTP que acabamos de crear. Ahora, necesitamos descargar el archivo WSDL que describe lo que el servicio web puede hacer, pero la tarea Servicio web tiene una particularidad y es que el botón Descargar WSDL (Download WSDL) no está disponible hasta que se ha seleccionado un archivo local en el equipo. Vamos a satisfacer ese requisito creando un documento de texto vacío que se llame CurrencyConvertor.wsdl. A continuación, seleccionamos el archivo ficticio que acabamos de crear, cambiamos el valor de OverwriteWSDLFile de False a True y ya podemos descargar sin problemas el archivo WSDL.

Ahora pasemos a la página Entrada (Input) del editor. Gracias al archivo WSDL, la tarea ahora conoce todos los datos del servicio web. Podemos seleccionar el servicio web, seleccionar su método web ConversionRate y configurar la llamada al método web para solicitar el tipo de cambio de dólares estadounidenses a euros.

Ahora pasemos a la página Salida (Output) del editor. Queremos guardar el resultado a una variable, no a un archivo, a la variable que hemos llamado ConversionRateResponse. Ahora guardemos nuestra tarea Servicio web.

La respuesta que nuestra tarea va a recibir es el documento XML que vimos cuando probamos el servicio web en línea. De aquí tenemos que extraer el tipo de cambio. Para eso utilizaremos una tarea XML.

La tarea XML puede hacer numerosas cosas diferentes con documentos XML y por eso cuenta con muchas propiedades que hay que configurar. Lo primero que tenemos que seleccionar, aunque no es el primer elemento de la página, es la operación que deseamos realizar y esto es una consulta XPATH en el XML. El origen XML está en la variable que denominamos ConversionRateResponse. Queremos guardar el resultado de nuestra consulta; queremos guardarlo en una variable, en la variable que denominamos ConversionRate y sí, queremos sobrescribir cualquier valor con el valor actual. Vamos a escribir nuestra consulta XPATH directamente y consultar el nodo "/double", que contiene el tipo de cambio. Y finalmente, la operación que estamos realizando es una operación XPATH para extraer Values. Ahora guardemos nuestra tarea XML.

Voy a mostrarle una técnica útil para comprobar los valores de las variables del paquete mientras este se está ejecutando. Vamos a establecer un punto de interrupción en el evento OnPostExecute de la tarea XML y ejecutar nuestro paquete.

[pausa]

El paquete se ha interrumpido en el punto establecido y podemos ir a la ventana Locals y ver el valor actual de cualquier variable del paquete. Si nos desplazamos hacia abajo en la lista, veremos ConversionRateResponse con la larga cadena XML y ConversionRate con el tipo de cambio. Si deseamos ver estas dos variables en una lista menos abarrotada, podemos utilizar el comando Add Watch para agregar ambas a la ventana Watch.

A continuación finalizamos nuestra tarea, desactivamos la depuración y quitamos el punto de interrupción establecido.

Ya podemos conectarnos y volver a habilitar la tarea Flujo de datos que empezamos a configurar.

En primer lugar, vamos a utilizar un origen OLE DB para extraer datos de una vista a la base de datos de ejemplo AdventureWorks. Vamos a obtener el apellido de cada vendedor y sus ventas hasta la fecha en dólares estadounidenses.

A continuación, vamos a utilizar el tipo de cambio que obtuvimos del servicio web para agregar una nueva columna que pase esas ventas a euros. Para agregar una nueva columna, utilice una transformación Columna derivada. Llamaremos SalesYTDEuro a la nueva columna y la definiremos con la multiplicación de los valores de la columna Sales YTD por el tipo de cambio obtenido en el servicio web. En primer lugar, tenemos que convertir el tipo de cambio, que actualmente es una cadena, en un tipo de datos numérico apropiado. A continuación, utilizaremos la función ROUND para redondear el resultado en dos decimales y guardaremos la transformación Columna derivada.

Como no queremos malgastar tiempo guardando nuestros datos de ejemplo, vamos a utilizar una transformación Recuento de filas para terminar el flujo de datos. Este es un método fácil y rápido y el único requisito es asignar el valor de recuento de filas a una variable del paquete, que puede ignorar.

Ahora agreguemos un visor de datos a nuestro flujo de datos para poder ver los resultados de nuestro trabajo al mismo tiempo que se ejecuta el paquete. Aceptamos el formato de cuadrícula predeterminado y ejecutamos nuestro paquete finalizado.

[pausa]

Transcurrido un tiempo podemos ver que todo ha ido como se esperaba y que nuestros datos contienen ahora una nueva columna con las ventas hasta la fecha convertidas de dólares a euros gracias al tipo de cambio obtenido del servicio web utilizando la tarea Servicio Web y la tarea XML.

En esta presentación ha aprendido cómo llamar a un servicio web usando la tarea Servicio web.

También ha aprendido a:

  • Configurar un administrador de conexiones HTTP.
  • Configurar la tarea Servicio web.
  • Descargar el archivo WSDL que describe el servicio web.
  • Llamar a un método web y proporcionar los valores de entrada esperados.
  • Leer el valor devuelto utilizando una tarea XML.
  • Y utilizar los resultados del servicio web en el paquete.

Esperamos que haya obtenido nueva información de este vídeo y haya aprendido técnicas útiles. Cuando cierre esta reproducción y vuelva a la página web, podrá ver otros vídeos de Integration Services disponibles. Gracias.