1.31.2011

Transformaciones en los Puertos: Biztalk

Normalmente cuando creamos orquestaciones recibimos un mensaje de un cliente y dentro de la orquestación lo transformamos hacia un tipo de mensaje el cual vamos a enviar a otro puerto o vamos a procesar en la orquestación. Este tipo de mapeos es normal para los que desarrollamos en Biztalk, sin embargo; estamos desaprovechando una de las características más importantes del Biztalk: Transformar fuera de la orquestación, es decir en el puerto físico.

¿Y que ventajas tiene este tipo de solución?

Pues muy simple, si el mensaje del cliente cambia ( como suele suceder ) y yo tengo el proyecto dividido correctamente ( una librería para los esquemas, otra librería para los mapas, otra para las orquestaciones y otra para los pipelines ) entonces no tenemos que recompilar nuestra orquestación para hacer el cambio, solamente debemos cambiar el mensaje y modificar el mapeo.

El Ejemplo

Para comprender mejor el concepto vamos a trabajar con un ejemplo. En primera instancia vamos a crear un mensaje que es el que nos llega desde el cliente. Este mensaje tiene un campo tipo consulta de tipo entero que nos indica que consulta desea hacer:

image

Si el TipoConsulta es 0 se requiere una consulta de una persona física, y si es 1 se requiere una consulta de persona jurídica. Pero ahora vamos a suponer que dentro de la orquestación se utiliza otro mensaje, ya que el tipo de consulta es de tipo string, es decir “Fisica” o “Juridica”. El mensaje a utilizar dentro de la orquestación es el siguiente:

image

En situaciones normales recibiríamos el mensaje del cliente y haríamos la transformación dentro  de la orquestación, sin embargo; en este caso no vamos a hacerlo de esa forma. Esta vez, vamos a esperar en la orquestación el mensaje ya transformado y luego de forma muy simple vamos a escribir en el log el tipo de consulta solicitada. La orquestación es la siguiente:

image

Las comparaciones se hacen contra un string y no contra un entero.

image

Las formas de Scripting simplemente tienen una línea de código en C# en donde se indica hacer log del tipo de consulta solicitada:

image

Ahora creamos el mapa para la transformación.

image

En el functoid de script esta la comparación para hacer la transformación.

image

Una vez completado este trabajo, vamos a configurar la orquestación en la consola de administración, nótese que no hemos asociado el mapa a la orquestación en ninguna parte. Para esto, configuramos la orquestación en la consola y le creamos un puerto de recibo y una locación de recibo; la locación de recibo será vía archivo.

image

Ahora si, procedemos a asociar el mapa con el puerto de recibo.

image

Como podemos ver en la imagen, en la opción “Inbound Maps” del puerto, establecemos el mapa que transformará el mensaje del cliente antes de llegar a la orquestación – de hecho si no se transforma la orquestación no se activaría porque no esta esperando un tipo de mensaje del cliente si no el mensaje ya transformado.

Luego ponemos el mensaje en el folder establecido en el receive location, y procedemos a verificar el log con el resultado del procesamiento.

image

Como podemos ver, la transfomación se hizo en el puerto físico y la orquestación se activo porque al messageBox llego el mensaje ya transformado.

Technorati Tags:

No hay comentarios: