Patrones de Integración con Biztalk Server 2009 – Parte 4

1.c) Pipes and Filters

En los escenarios de integración, la llegada de un mensaje puede disparar la ejecución de un conjunto de pasos de procesamiento, donde cada paso realiza una función específica. Por ejemplo, supongamos que el ordenes de venta deja un mensaje en nuestro sistema de mensajería. Un requerimiento podría ser que el mensaje esté encriptado, otro requerimiento es que tenga autenticación basada en un certificado digital, un último requerimiento podría ser que el mensaje cumpla con el formato establecido para ser aceptado.

Para cumplir con todos estos requerimientos, tenemos que transformar el stream de los mensajes encriptados y con información de autenticación, que pueden venir en formatos no aceptables, en un stream de mensajes simples con capacidad de ser procesados por el sistema de mensajería para llevarlo a los sistemas destino (potencialmente con la necesidad de aplicar el mismo esquema de procesamiento previo al envío)

¿Cómo podemos realizar un procesamiento complejo del mensaje manteniendo independencia y flexibilidad?

image

Usamos el estilo de arquitectura de Pipes and Filters para dividir la tarea compleja de procesamiento en una secuencia de pasos de procesamientos pequeños e independientes (Filters) que se conecan por canales (Pipes).

Cada filtro expone una interfaz simple: recibe los mensajes en el pipe de entrada, procesa el mensaje y publica los resultados en el pipe de salida. El pipe conecta un filtro al siguiente, enviando los mensajes de salida de un filtro al otro. Dado que todos los componentes utilizan la misma interfaz externa, pueden ser compuestos en diferentes soluciones conectando los diferentes componentes a los diferentes pipes. Se pueden agregar nuevos filtros, omitir existentes o re-acomodarlos en nuevas secuencias.

Implementación en Biztalk Server

Biztalk Server implementa en sus “pipelines” de entrada y salida, el patrón de Pipes and Filters. Los pipelines de entrada BizTalk procesan los mensajes cuando entran y los pipelines de salida BizTalk procesan los mensajes a la salida. Cada pipeline consiste en una secuencia de transformaciones que pueden personalizarse, tanto en los componentes de transformación de la secuencia (lo que se denominan “pipeline components”) como en la personalización de los propios componentes (dado que se pueden construir “pipeline components” custom).

image

BizTalk define “etapas” en el pipeline de entrada y de salida, sin embargo, estas etapas pueden tener más de un componente cada una. Las etapas dan un marco conceptual al tipo de transformación que el mensaje debería recibir en cada una de ellas.

En el pipeline de entrada, estas etapas son:

image

            • Decode: usada para decodificar los mensajes. Un ejemplo de uso es para los mensajes codificados con MIME o la desencriptación
            • Disassemble: usado para normalizar los mensajes que llegan en un formato diferente al XML que pued ser reconocido por BizTalk a un formato aceptable. Un ejemplo son los mensajes que llegan en formato de archivo plano.
            • Validate: que se utiliza para validar un documento contra un conjunto de esquemas posibles. Esto permite “interceptar” documentos que llegan por el canal y no son adecuados para ser procesados por el mismo.
            • Resolve party: Verifica que el mensaje ha sido enviado por una fuente conocida y lo asocia a esa fuente en el registro “parties” de BizTalk.

 

En el pipeline de salida las etapas son:

image

            • Pre-Assemble: permite realizar procesamiento del mensaje antes de ser ensamblado para su envío. Por ejemplo, puede validarse el XML de acuerdo a esquemas.
            • Assemble: ensambla el documento XML BizTalk en un XML, archivo plano u otro formato necesario de salida.
            • Encode: se utiliza para codificar y firmar digitalmente el mensaje en la salida.

 

Naturalmente, decodificar el mensaje es el primer paso que se realiza en el receive pipeline y codificarlo es el último paso en el pipeline de salida.

Este diseño asegura que todo el resto de los filtros en el pipeline pueden trabajar en mensajes que no están codificados.

BizTalk Server provee pipelines por defecto para usos frecuentes como “pass-through” que no realizan ningún procesamiento en el pipeline y los que realizan parsing en mensajes Xml.

Advertisement
Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s