BTS 2006: Integración con SQL Server (I)

Como os comentaba en un post previo de BizTalk Server 2006 (BTS 2006), recientemente en el CIIN hemos preparado (mi compañero de batallas Anuar y yo) un pequeño piloto con el objetivo de mostrar algunas de las prestaciones  de esta plataforma para resolver problemáticas de negocio específica, las posibilidades de integración que ofrece, sus capacidades BMP (Business Process Management), y las facilidades que aporta a la hora de administrar y gestionar los diferentes procesos de negocio desplegados. En particular, en este post y el siguiente voy a comentar como BTS 2006 facilita el intercambio de datos entre aplicaciones de una organización (escenario EAI) o entre socios de negocio (escenario B2B) a través de un conjunto de adaptadores que proporcionan la conectividad necesaria para permitir estos intercambios de datos. En el ejemplo desarrollado, os mostraré como de un modo muy sencillo se pueden insertar datos en una BD SQL Server 2005, y luego extraerlos para su envío a una lista de WSS (esta parte la desarrollaré en la segunda parte del post). Empecemos.


¿Qué es un adaptador en BTS 2006?


Antes de meternos en materia, creo que no está de más entender que es un adaptador. De acuerdo a la documentación online de BTS 2006 (descargable aquí), un adaptador es un componente software que permite enviar y recibir datos encapsulados en mensajes XML a través de distintos mecanismos de transporte: SMTP, POP3, MSMQ, SQL, WSS, etc. y otros que habilitan integración nativa con aquellas aplicaciones que los utilicen de una modo estándar.  Además de los adaptadores que vienen por defecto con BTS 2006, existen otros que  han ido desarrollando desde la propia Microsoft como es el caso del adaptador Microsoft CRM, o por partners como el adaptador de Attunity para el entorno Natural-Adabas. Por supuesto, dado el carácter extensible de BTS 2006,  se pueden definir adaptadores personalizados y a medida para resolver problemáticas concretas.


Insertando datos en SQL Server 2005


Para insertar datos en una BD, lo primero que tenemos que es definir crear el documento XML de intercambio (en un ejemplo real, una aplicación o entidad de negocio nos entregaría este documento, y a través de BTS 2006 insertaríamos los datos en la BD SQL) que cumpla con la especificación de BTS 2006 para poder insertar datos en una BD SQL Server:



Como vemos en el esquema anterior, hay dos puntos clave:


·         Dentro del elemento raíz <ReqRoot>, el atributo xmlns:updg=”urn:schemas -microsoft -com:xml -updategram”  que indica que vamos a realizar una operación de inserción de datos.


·         Los nodos hijos que identifican la tabla que vamos a actualizar y cuyos atributos coinciden con los campos de la tabla: <Facturas IDFactura=”BL0213″ FechaFactura=”2000-10-24″ />


Una forma de construir de manera automática el esquema que sigue el documento XML anterior es a través de la utilidad Add Generated Items que tenemos disponible para los proyectos de BTS 2005 en Visual Studio 2005. Esta utilidad nos permite generar esquemas XSD para ser utilizados en adaptadores de BTS 2006.



Esta opción nos permitirá definir estos esquemas para los adaptadores registrados (en nuestro caso, para el adaptador SQL). Como vemos en la siguiente figura, el wizard nos va guiando en las configuraciones necesarias para poder generar el correspondiente esquema XSD (especificar el servidor de BD SQL Server, la base de datos, etc.).



Los siguientes pasos en la configuración pasan por especificar el espacio de nombres para nuestro esquema y si lo vamos a utilizar en un puerto físico de recepción o de envío de BTS 2006. En este caso lo que queremos hacer es recoger un archivo XML y volcar su contenido en la BD, luego especificamos que el puerto sea de envío.


 


A continuación especificaremos que vamos a insertar los datos a través de una sentencia SQL (opción updategram), y finalmente la tabla de datos y las columnas a actualizar.  Llegado a este punto, hemos concluido el proceso de generación del XSD, que nos aparecerá en nuestra solución de BTS 2006. Sin más, a través de la opción Generate Instance, podemos crear un XML que cumpla el esquema XSD autogenerado.



Antes de seguir, seguro que os habréis dado cuenta de una limitación del wizard: sólo permite insertar datos en una tabla, mientras que el esquema XML de más arriba parece que permite insertar datos en múltiples tablas. A pesar de esta limitación, la idea de enseñaros este wizard es ver como generar el XSD que necesitaríamos y a partir de él ver la estructura del XML que lo cumple, para de esta manera deducir fácilmente como podemos modificar esa estructura para poder actualizar más de una tabla de la BD.


Una vez que ya tenemos el XML, tenemos que implementar en BTS 2006 el mecanismo de recogida del fichero XML de una carpeta local y el volcado de datos en la carpeta SQL Server.  Para ello, y a través de la BizTalk Administration Console, necesitamos definir:


·         Un puerto de recepción con la correspondiente ubicación de recepción que recogerá el archivo XML de la carpeta que especifiquemos (también podríamos definir que se recogieran los datos de una ubicación FTP, de un buzón POP3, etc.).


 



  • Un puerto de envío, que hemos e configurar para que se suscriba al puerto de recepción anterior e inserte los datos en la BD SQL Server. La parte de suscripción ya la vimos en un post previo, por lo que nos centraremos en las configuraciones necesarias para insertar los datos en la BD SQL Server. En este caso, cuando creemos el puerto de envío, especificamos que el tipo de transporte sea SQL y lo configuramos de manera adecuada.

Como veis, la configuración del transporte SQL es realmente sencilla. Sólo tenemos que especificar la cadena de conexión y el nombre del esquema que se va a utilizar en el intercambio de datos.


 


Probando la inserción


 


Sin más, para probar que la inserción de datos funciona correctamente colocamos un archivo XML en la carpeta especificada en la ubicación de recepción del puerto de recepción creado y a través del SQL Server Management Studio comprobamos que la inserción de datos se ha realizado tal y como esperábamos.


 


 


Bueno, pues hasta aquí la primera entrega de la integración de BTS 2006 con SQL Server. En el próximo post veréis como es todavía más sencillo extraer datos de SQL Server. Espero que el post os haya resultado interesante.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

6 comentarios en “BTS 2006: Integración con SQL Server (I)”

  1. Hola Juan Carlos!

    Espectacular artículo. Espero ávidamente la continuación, ya que Biztalk es una de las innumerables cosas que aún me faltan por aprender…

  2. Hola Augusto!
    Gracias por tus comentarios, espero en breve poner la parte II, y seguro que Anuar y yo iremos poniendo más cosillas de BizTalk por aqui porque parece que nos va a tocar “jugar” con él bastante en el futuro cercano. Un saludo
    JC

  3. The social bookmarking seo company will help you setting your Blog on very good place in the most of search engines. A lot of businessmen think about that.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *