viernes, 21 de septiembre de 2012

Conceptos sobre procesos de negocio (BP, BPM, BPMS, ...)

Toda empresa realiza una serie de actividades para lleva a cabo el trabajo o servicio que efectúa. A este conjunto actividades relacionadas se les conoce como bussines process (BP). Dado que los procesos de negocio forman parte de lo más basico de la empresa se entiende que son importantes ya que sin ellos no habría actividad y en la medida en que se lleven a cabo esos procesos de negocio de forma rápida, eficaz y eficientemente dependerá la el buen o mal desarrollo de la misma. La definición formal de BP es:

«Sequencia de tareas que se realizan en cierto orden por sistemas o humanos para conseguir un objetivo de negocio.»

Las partes de esta frase son:

1) «Sequencia de tareas que se realizan en cierto orden»: Las tareas son las actividades que desarrolla la empresa para la consecución de los objetivos de negocio. La palabra secuencia impone cierto orden en las tareas de forma que cuando termina una se pasa a la siguiente hasta llegar a una última en la que se da por terminada el proceso y completado el objetivo de negocio. Algunas definiciones de tareas serían:
  • Comprobar disponibilidad de producto
  • Calcular precio
  • Obtener servicio mensajería
  • Enviar producto
  • Realizar cobro

2) «en cierto orden por sistemas o humanos»: Las tareas pueden realizarse por las personas o por sus sistemas informáticos. Se diferencia entre unos y otros porque los sistemas informáticos son rápidos y realizan las tareas normalmente de forma inmediata. Sin embargo los humanos son lentos (tardan en comprobar datos, tienen que hacer llamadas, ...) y realizan las tareas cuando están disponibles (puede coincidir que están de vacaciones, están ocupados con otras tareas, ...).

3) «para conseguir un objetivo de negocio»: La finalidad es conseguir un objetivo de negocio que es la principal razón por la que la empresa realiza su actividad. Lo difícil será identificar los objetivos de negocio importantes o principales de la empresa.

Este podría ser el esquema de un proceso de negocio (visión de alto nivel cercana al gestor) de una empresa dedicada a reciclar papel.


En este grafo pueden verse las actividades, la secuencia de las mismas en el grafo dirigido y los roles de las personas que involucradas en el proceso.

Los procesos de negocio no son estáticos sino que evolucionan a medida que se identifican mejoras o cambian los objetivos de negocio. Por lo tanto hay que adaptarlos a las necesidades reales del negocio a medida que cambian. A estas actividades se les conoce como Bussines Process Management (BPM) y se realizan de forma iterativa con los siguientes estados:
  • Identificar (encontrar/descubrir) procesos de negocio: identifica los objetivos de negocio y tareas que realiza para su consecución.
  • Diseñar/modelar: transforma la definición del proceso de negocio en un modelo formal por todos y sin ambigüedades posiblemente con una notación BPMN (Bussines Process Management Notation). BPMN usa grafos dirigidos, que se componen de nodos que presentan las tareas a ejecutar y las transiciones que dirigen el proceso de un nodo a otro.
  • Ejecutar los procesos: guía el flujo de trabajo de la compañía de forma que se de una buena comunicación entre sistemas y personas.
  • Mejorar: analizando las ejecuciones de los procesos y con la información recopilada se pueden realizar acciones para mejorar el proceso. Identificar cuellos de botella o identificar nuevas actividades o si pueden ser realizadas de forma paralela.
Los procesos de negocio se pueden definir en papel y en ellos no tienen por que intervenir sistemas informáticos para realizarlos sino que las personas son las encargadas de realizarlos completamente. Sin embargo, dado que en mayor o menor medida ya muchas empresas confian en sistemas informaticos para apoyarse en la realización de sus actividades automatizarlos puede suponer varias ventajas, en ese caso se llevan a cabo con sistemas BPMS (Bussines Process Management Systems) siendo los encargados de dirigir y ejecutar los procesos.

Algunas ventajas que aporta BPM a las empresas son:
  • Los procesos son representados en un lenguaje formal (BPMN) con lo que conocemos exactamente lo que hace, no una idea vaga, sabemos exactamente cual es el objetivo de negocio y que roles participan, esto permite mejorarlos identificando puntos de fallo y buscar soluciones.
  • Se produce una interacción ágil entre sistemas y roles: los empleados son guiados en su trabajo, se les proporciona la información que necesitan y se les pide la información necesaria para avanzar en el proceso. La información fluye y está disponible para todos los que la necesitan evitando ineficiencias.
  • Se pueden realizar acciones automáticas en función de la información recopilada en el proceso tal vez a través de sistemas BRMS (Bussines Rules Management Systems) facilitando el trabajo a las personas.
  • Se dispone de información en tiempo real. Se puede obtener las instancias de los procesos en ejecución, en que actividad están parados o que rol necesita completarla.
  • Visibilidad de los procesos tanto para negocio como para los desarrolladores y para todas las personas implicadas.
  • Se pueden realizar análisis de procesos: Se puede ver si se está pidiendo información innecesaria o si necesita más datos.
  • Proporcionan estadísticas y medidas para identificar cuellos de botella.
Además de las ventajas anteriores para los desarrolladores también tiene otras no menos importantes. Y es que permite eliminar las condiciones, bucles, switchs, timers, tratamiento de errores que serían necesarias para implementar el proceso de negocio con un lenguaje de programación como Java o C# que dan como resultado mucho código que es poco flexible, difícil de mantener, propenso a introducir errores cuando se modifica, esto es, un perfecto código spaghetti. Además de que cuando el proceso de negocio se transforma a código deja de estar visible para la gente de negocio e incluso para los desarrolladores es dificil saber lo que hace pasado el tiempo y tras varias modificaciones.

Hay varios BPMS disponibles incluso con licencias de software libre, entre los más conocidos están jBPM, Bonita y Activiti.

Aunque se trata de un libro algo antiguo y ya su código no refleja los cambios de la versión de jBPM 5 jBPM Developer Guide me ha parecido bastante interesante por su teoría básica y principios que expone de los BPMS, también está la versión para jBPM 5 que tendrá sus ejemplos de código más acorde a las últimas versiones de jBPM. Aún siendo libros de jBPM muchos de sus conceptos son aplicables a cualquier BPMS como Activiti o Bonita.El libro Activiti in Action no se centra tanto en la teoría como los anteriores sino que se restringe y explica perfectamente como se desarrollan los procesos de negocio con el framework Activiti dejando la teoría para otros libros.

jBPM Developer GuidejBPM 5 Developer GuideActiviti in Action

Para otra entrada trataré de hacer el típico hola mundo o algo un poco más complejo con uno de estos frameworks de BPMS y también con Drools, que permite implementar las reglas de negocio, para aplicar todos estos conceptos a nivel de un desarrollador.

Referencia:
Procesos de negocio con Activiti
Usar variables en un proceso de negocio con Activiti 
Tratamiento de errores en procesos de negocio con Activiti
Reglas de negocio con Drools y Activiti
jBPM
Bonita
Activiti