Definición Código de Compensación

Siempre me ha resultado curioso el comprobar que algo que llevas haciendo desde hace tiempo,a alguien se le ha ocurrido ponerle un nombre (¿cómo llamáis al cacharro que usan en las heladerí­as para hacer las bolas de helado para los cucuruchos? Yo lo llamaba “hacedor de bolas”, hasta que a un amigo se le ocurrió bautizarlo como “Chilaguillo”). Esta misma sensación la ha tenido leyendo teorí­a de patrones de diseño y de repente decir, anda, pero si esto lo llevo haciendo de hace tiempo, no sabí­a que era un patrón. Bueno, para ser sinceros, me ha pasado más veces con los anti-patrones que con los patrones 🙂
Esta semana, en el curso de Biztalk, me ha vuelto a pasar,  resulta que una de las opciones que incluye la herramienta es la de incorporar actividades de compensación, algo que, vení­a haciendo desde tiempo atrás, sin saber que tení­a ese nombre.
Un código o una acción de compensación se puede contemplar cuando estamos realizando una incursión en un entorno no transaccional, donde aplicamos cambios sobre diferentes orí­genes de datos. Si en alguno de los puntos se produce un error, podrí­amos no disponer de la posibilidad de volver todo al estado inicial de forma automática y con total seguridad de que se va a hacer de forma correcta (lo que serí­a una transacción de base de datos por ejemplo, o utilizando el componente de transacciones distribuidas de Microsoff el MSDTC).
Si no lo podemos resolver de forma automática, algo tendremos que hacer para que nuestro conjunto de datos no quede en un estado inconsistente. ¿Y qué podemos hacer? Pues muy fácil, compensar el error 🙂
Por poner un ejemplo algo gráfico, imaginaos una aplicación donde al pulsar un botón de “Iniciar Proceso” se lleven a cabo una serie de acciones que implican la creación de ciertos registros a través de servicios web pertenecientes a diferentes proveedores. Podrí­a darse el caso que alguno fallara, cuando una llamada a un servicio anterior ya ha sido confirmada. En ese caso, en el bloque “catch” correspondiente, tendrí­amos que comprobar cuál ha sido la llamada que ha fallado e intentar volver a su estado inicial las acciones que ya tení­amos confirmadas. Nos irí­a estupendo por ejemplo con contar métodos dentro de los mismos servicios web que nos permitieran volver atrás la acción (si hemos hecho una inserción, pues disponer de un método para hacer el borrado). Aunque también caben otro tipo de compensaciones que aunque a primera vista no parezcan muy elaboradas pueden dar muy buenos resultados, como enviar un e-mail a un administrador indicando en que punto del proceso se ha producido el fallo, o incorporar una entrada en el monitorizador de eventos del servidor para que salte la alerta automáticamente a los responsables del sistema, resolviendo el usuario el problema de forma manual.
Un saludo.
Miguel.

Formación Biztalk 2006

Esta semana estoy participando en un curso de Biztalk 2006. El curso lo imparte Francisco González, de Solid Quality Learning.
La verdad es que tení­a ganas de conocer la herramienta, ya que forma parte de los “grandes desconocidos” a nivel estándar, y, además, teniendo que ver con gestión de flujos y conocimiento de negocio, se “toca” bastante con lo que me vengo dedicando íºltimamente.
Biztalk a grandes rasgos es un integrador de sistemas, y no confundir con Integration Services, aunque pueda utilizarse también para realizar acciones similares en muchos casos. Lo más curioso es que realmente Biztalk es un transportador de mensajes entre diferentes entornos, toda “orquestación” funciona mediante mensajes xml que deben respetar ciertas estructuras xsd definidas a partir de la misma herramienta.
La verdad es que se presenta como una herramienta muy interesante para la pequeña/mediana empresa, que se encuentra en la tí­pica situación de contar con varios sistemas de información conviviendo al mismo tiempo, y que en un momento dado necesita explotar la información contenida en cada uno de dichos sistemas. La lástima de todo esto es la inversión inicial que debe realizarse para poner en marcha todo esto, ya que entre licencias de Biztalk y SQL Server, nos vamos practicamente a 100.000€ euros.
Describo a continuación el temario que estamos tratando:
Modulo 1: Introducción a  BizTalk Server 2006
Modulo 2: Creación de Schemas
Modulo 3: Creación de Maps
Modulo 4: Desplegando un proyecto BizTalk
Modulo 5: Enrutando Mensajes de BizTalk
Modulo 7: Integración con Adaptadores
Modulo 8: Creación de Orquestaciones en BizTalk
Modulo 9: Automatización de Procesos de Negocio
Modulo 10: Creación de Procesos de Negocio Transaccionales
Modulo 11: Desplegando y Gestionando Aplicaciones BizTalk
Modulo 12: Integración con Web Services
Modulo 13: Integración con Reglas de Negocio
Modulo 14: Monitorizando Actividades de Negocio
Modulo 15: Integración con Partners Comerciales 
Un saludo.
Miguel.