Si ya vieron
la importancia del workflow, quizá se estén preguntando “¿Qué herramientas hay disponibles? ¿Por dónde debo comenzar?”
A ver si le puedo dar un llegue a estas preguntas.
El concepto de workflow en los sistemas ciertamente no es nuevo, de hecho probablemente se remonta a la era de las herramientas CASE. A través de los años me tocó personalmente manejar algunas herramientas en esta área—que ciertamente no eran las únicas:
Lotus Notes/DominoMis primeros pininos con workflow, hace como 8 años, fueron con Lotus Notes. Las herramientas de Lotus funcionan bajo un modelo de “base de datos” que en realidad eran “bases de documentos”. En otras palabras ustedes modelan algo que se maneja en papel—por ejemplo una requisición de compra, o una
petición para vacaciones—como una forma y se generan instancias de esa forma que se almacenan en la base. Esos “documentos” se podían enrutar via e-mail o poner en el Inbox de Fulano de Tal hasta que lo apruebe, y cuando lo hace se envían al siguiente mono involucrado en el proceso, etc. Es decir, tenía un enfoque muy humano.
Dentro de las bondades del Notes está que es muy sencillo desarrollar una aplicación de este tipo, es parte del ambiente y se puede utilizar en el Web tanto como un cliente Notes casi indistintamente. Sin embargo, no todos los flujos son humanos—p.ej. un proceso “batch” que corre cada noche para procesar algo. Además carecía de herramientas gráficas, lo cual forzaba a que todo el flujo se codificara de manera imperativa—con If/Then’s y eventos.
BizTalkEste es un producto server de Microsoft que tiene ya un buen rato y es excelente para la integración de sistemas o para integración entre empresas. Está muy orientado a servicios y cuenta con excelentes herramientas gráficas y de transformación—ustedes definen los mensajes y los canales donde recibirlos y luego le dan un workflow (orquestación) de manera gráfica.
Sin embargo, es algo costoso y tiene una desventaja: ¿qué pasa si quiero integrar mi workflow en una aplicación que será instalada en una PC de manera independiente? Con BizTalk, no puedo tener algo así.
Skelta, k2.net, etc.Hay algunas otras herramientas para .NET específicamente que me tocó evaluar para un proyecto. Estas, aunque muy interesantes y completas—proveían herramientas gráficas y sus propias librerías—tenían una sola desventaja con respecto a la que voy a proponer enseguida: tienen costo de licenciamiento. De ahí en más tienen varias ventajas: algunas de ellas funcionan con .NET 1.1 y son productos un poco más maduros.
Windows Workflow FoundationFinalmente llegamos a lo que me trae emocionado últimamente. Uno de los “pilares” de WinFX es Windows Workflow Foundation—parece trabalenguas—que espero finalmente traiga el workflow a las masas de los desarrolladores.
WinFX, para los que no han estado enterados es la nueva API de Microsoft Windows, que se planea lanzar con Windows Vista, sin embargo, las
Windows
Framework E
xtensions, también se lanzarán como un producto separado que se podrá correr en Windows XP, lo cual la hace un excelente candidato para poder distribuir una aplicación con esta funcionalidad en masa.
Así que para mi Workflow Foundation, es el mejor candidato para manejar workflow porque:
- Permite integrar worflow a prácticamente cualquier aplicación--Windows Forms, ASP.NET, Web Services, etc.
- Provee herramientas bastante robustas para muchos tipos de workflows: humanos y de sistema, “secuenciales” y “máquina de estados”, etc.
- Tiene capacidad de separar por completo las reglas de negocio y aplicarlas dinámicamente a un flujo que esté activo y corriendo (sin tener que suspenderlo o reiniciarlo).
- Tiene visibilidad de manera gráfica de en qué paso va el workflow. También puedes reutilizar en tu propia aplicación, muchos de los GUIs que se utilizan a la hora de diseñar el flujo.
- Las PCs nuevas que traigan Vista, o las que tengan XP podrán utilizarlo—si tienen instalado el .NET Framework 2.0 y el Runtime de WinFX
- No tiene costo de licenciamiento (hasta donde sé)
- Será el motor de workflow en la versión próxima de Microsoft Office (“12”) y de BizTalk. Y por ahí escuché también que será la base de cualquier producto “3rd party”—como Skelta y k2.net.
En la siguiente entrada les comentaré qué necesitan para comenzar a jugar…