viernes, junio 01, 2012

Modelar, prototipar, ejecutar y monitorear procesos de negocios con GXflow y GeneXus Evolution 2


Motivaciones

En general cuando estamos comenzando a embarcarnos en un proyecto nuevo cualquiera sea deberíamos preguntarnos por qué lo estamos haciendo cual es la motivación. Cuando hablamos de flujos de trabajo dentro de una empresa seguramente que lo primero que queremos es optimizar la forma en la cual trabajamos.

Entonces, debemos preguntarnos por qué es importante automatizar los procesos de la empresa.

Para hacer este ejercicio mental debemos enfocarnos en cómo estamos haciendo las cosas hoy de forma de comprender como ocurren los diferentes procesos en nuestras empresas para cumplir determinados objetivos. El hecho de enfocarnos en los procesos nos dará una mejor visibilidad de los mismos y podremos identificar posibles mejoras además de comprender el alcance de los mismos para evaluar si es posible automatizarlos. Con esto lograremos formalizar dichos procesos más allá del conocimiento que en general esta distribuido entre los diferentes actores de un proceso, de esta forma vamos a lograr reproducir la película desde el inicio hasta el fin viendo claramente cuales son las tareas y quienes deben realizarlas. Teniendo formalizados y automatizados los procesos de la empresa vamos a lograr que las cosas se realicen según lo pautado logrando la consistencia que nos va a permitir ahorrar tiempos muertos que muchas veces se da cuando hay que realizar el pasaje de una tarea a otra etapa pues son las personas quienes tienen que decidir como sigue el trámite en curso.

Desde el punto de vista de la empresa u organización podemos afirmar que seguro vamos a mejorar un indicador que a lo mejor suena algo intangible como es el stress de las personas que participan de los procesos. El hecho de tener bien definido como se deben hacer las cosas y que cada uno tiene claro el rol que debe cumplir pero además conoce como se desarrolla todo mejora enormemente la comunicación entre los actores y agilita mucho el pasaje de información en las distintas etapas. Algo que ayuda mucho en todo esto es tener la posibilidad en todo momento de saber en qué estado esta un proceso y quienes tienen las tareas en un momento dato. Todo esto redunda en un aumento de la productividad dado que se ahorra mucho tiempo de gestión y operativa en determinar como se debe continuar con determinado proceso y obviamente esto trae como consecuencia un ahorro en dinero. Otro tema importante es que se gana en control pues en cualquier momento podemos saber el status de los procesos y actuar proactivamente por ejemplo para delegar trabajo o reasignar tareas que aún no se han procesado.

El hecho de tener claro como están definidas todas las etapas de un proceso nos permite evaluar el impacto de cualquier cambio que se haga en el mismo ya sea un cambio para optimizar o un cambio obligado porque hay que agregar nuevas tareas por cambios en regulaciones. El hecho de poder medir este riesgo ante los cambios le da a la empresa mayor flexibilidad y de esta forma puede ir haciendo evolucionar sus procesos a los cambios que le dicten los mercados con los cuales interactúa. 

Desde el punto de vista del desarrollo la ganancia viene por el lado de que vamos a “declarar” más y programar menos, vamos a separar toda la lógica del control de flujos de nuestra programación lo cual hará que sea mucho más entendible lo que hacemos y por lo tanto mucho más fácil de mantener. Las reglas del flujo de negocio queda plasmadas en un “dibujo” que cualquier persona puede entender lo cual hace que también sea mucho más fácil incorporar personas nuevas al equipo de desarrollo dado que se facilita la tarea de pasaje de conocimiento. Ayuda mucho en la documentación de lo qué hace el sistema y además nos ayuda en la reutilización de programas, dado que programas que usamos desde otras opciones del sistema también pueden ser usados embebidos en los procesos de negocio.

BPM


Una vez que tenemos claro cuales son las motivaciones para formalizar y automatizar los flujos de trabajo la siguiente pregunta que debemos responder es qué debemos hacer para llevar esto adelante.

Uno de los temas importantes a tener en cuenta es qué metodología vamos a usar para llevar adelante el proyecto de formalización y automatización de los procesos de negocio. Para esto recomiendo el ciclo de vida que propone la disciplina Business Process Management (BPM).

Hay que tener claro que cuando hablamos de BPM no estamos hablando sólo de tecnología, sino de una forma de encarar los proyectos donde el foco se pone en los procesos. Donde se propone un ciclo de mejora continua el cual propone a través del modelado de las actividades y procesos lograr un mejor entendimiento del negocio, con lo cual muchas veces se presenta la oportunidad de mejorarlos. Luego la etapa de automatización de los procesos la cual reduce errores, asegurando que los mismos se comporten siempre de la misma manera y dando elementos que permitan visualizar el estado de los mismos. Una vez que tenemos procesos automatizados la etapa de administración de los procesos nos permite asegurarnos de que los mismos estén ejecutándose eficientemente y obtener información que luego puede ser usada para mejorarlos. Es a través de la información que se obtiene de la ejecución diaria de los procesos que se puede identificar posibles ineficiencias en los mismos y de esta forma optimizarlos. De esta forma volvemos al inicio de este ciclo donde cambiaremos nuestros modelos en procura de mejorar los procesos.

Para ayudarnos a encarar esto contamos con un conjunto de herramientas dentro de la familia de productos GeneXus.

Por un lado tenemos el modelador de procesos Business Process Modeler integrado dentro del ambiente de desarrollo de GeneXus. Este modelador nos ofrece la posibilidad de dibujar el flujo de trabajo de una manera gráfica que nos acerca al lenguaje de los usuarios del negocio y así poder entender mejor su realidad. Además este modelador esta basado en el estándar de notación gráfica BPMN y ofrece la posibilidad de exportar o importar diagramas de otras herramientas a través de XPDL

Tenemos a GeneXus en sí mismo como la herramienta que nos permite automatizar el desarrollo de nuestras aplicaciones BPM. Para quienes no conocen GeneXus es recomendable que vean una presentación enfocada en esta herramienta para comprender el alcance de la Suite.

Para la gestión y monitoreo de los procesos contamos con el GXflow Process Manager y el Inbox. Para el análisis y optimización de estos procesos contamos con GXplorer que nos permite explotar la información estadísticas generada por nuestras aplicaciones y nuestros datos históricos de cómo se dio la ejecución de los procesos.

Por último la capacidad de integrar todo esto a través de un portal haciendo uso de  GXportal para la construcción de portales.

Lo cual nos da una plataforma ágil, flexible y robusta para el desarrollo de aplicaciones basadas en BPM.

Les dejo un video que muestra casi todo el ciclo, desde el modelado , pasando por la etapa de desarrollo y prototipación y finalmente por la ejecución y monitoreo. Todo esto con la última versión de GeneXus y GXflow que es la X Evolution 2. (Les recomiendo verlo en modo full screen)

¿Cómo habilitar seguridad en mi aplicación web o para smart devices con GeneXus X Evolution 2?

Algo que casi siempre necesitamos en cualquier sistema que hagamos es controlar el acceso de los usuarios que pueden usarlo y seguramente también necesitemos controlar qué permisos tienen dichos usuarios sobre las distintas acciones que ofrece el sistema.

Por un lado entonces debemos resolver el problema de autenticación donde ya no es viable simplemente tener una tabla con usuarios y contraseñas pues los tiempos han cambiado y vemos que es cada vez más común que las aplicaciones y sitios nos ofrecen identificarnos con nuestras cuentas de Facebook y de Twitter. Ni que hablar que si vamos a implementar esto además tenemos que hacerlo siguiendo las buenas prácticas que dicta OWASP y tener en cuanta no sólo la arquitectura de una aplicación web,  sino que ahora se nos suma el mundo de los smart devices agregando nuevas plataformas (iOS, Android, Blackberry) y por lo tanto haciendo más complejo lograr tener una aplicación que nos de la tranquilidad de poder dormir sin estar pensando qué "agujeros" dejamos por ahí.

A todo esto tenemos que agregarle el chequeo de permisos cada vez que se ejecuta un programa de nuestro sistema de forma que nos aseguremos que el usuario que quiere ejecutarlo tenga los permisos correspondientes. En general es algo que como desarrolladores subestimamos y tendemos dejar para el final por verlo como una tarea repetitiva y tediosa, lo cual agranda los riesgos de que nos olvidemos de poner los controles de sesión y permisos en alguno de los cientos o miles de programas que pueda tener nuestro sistema.

A partir de la versión X Evolution 2 de GeneXus viene built-in un nuevo módulo de seguridad que nos ayuda  a resolver esto de una manera declarativa y sobre todo con mucho menos programación tengamos resuelto automáticamente los aspectos de autenticación y autorización de nuestras aplicaciones tanto para Web como para Smart Devices. Esta funcionalidad se llama GeneXus Access Manager (GAM) y el siguiente video muestra como partiendo de una Base de Conocimiento en la cual no se tenía aún nada implementado para los controles de seguridad pasamos a tener todo el esquema de autenticación resuelto declarando propiedades en nuestra KB y dejando que GeneXus se encargue de generar todo el código necesario para que esto se cumpla y así evitarnos tener que programar todos estos controles en cada uno de nuestros programas.




Los invito a que conozca más sobre el GAM desde acá en el Wiki de la comunidad GeneXus.
Otra lectura que considero importante para entenderlo es conocer los escenarios de autenticación y los escenarios de autorización que se pueden resolver con el GAM.