La informatización o mecanización de los procesos de negocio de la compañía (BPM), es uno de los pilares sobre los que se asienta SOA, o viceversa. BPM se debe asentar en una arquitectura basada en web services.

Si pensamos en una gran empresa, un banco por ejemplo, y aunque sólo tenga un sólo proceso de negocio mecanizado ¿cuantas instancias del mismo proceso pueden estar activas en un mismo momento? Por ejemplo, el proceso de solicitud de préstamos, quizás miles o cientos de miles.
En una empresa de telecomunicaciones, cuantas solicitudes de alta de línea o de potabilidad pueden estar tramitando en un momento dado ¿decenas de miles?. Cuantos siniestros puede tramitar una empresa de seguros ¿cientos de miles?.
Además los procesos de negocio puede ser de muy larga duración, no hablo ya de unos cuantos días, pueden llevar años. Por ejemplo, en una empresa de seguros se tienen procesos judiciales que pueden durar 10 años.
Una de las preocupaciones a las que tenemos que hacer frente en BPM es el rendimiento y escalabilidad general de la solución.

En un proceso de larga duración, el motor de procesos debe “congelar” el estado del proceso cuando este se detiene.
Se puede detener por ejemplo, cuando debe intervenir una persona para completar la tarea. Por ejemplo, es necesario que un supervisor apruebe solicitudes de préstamo de más de 50.000€, o el cliente debe aportar la documentación requerida. Esta parada puede ser de minutos, días o años como comentaba anteriormente.
Normalmente todos las soluciones de motores de procesos de los distintos fabricantes utilizan una base de datos para almacenar este estado del proceso a la espera de que se puede “despertar” en respuesta a un evento externo, por ejemplo cuando el cliente envía la documentación requerida.
Por lo tanto, desde el punto de vista del rendimiento y la escalabilidad del proceso, es muy importante que es información que define el estado del proyecto sea la mínima posible.

Buenas prácticas de rendimiento

En este artículo se define el decálogo de buenas prácticas para lograr un buen rendimiento en el servidor de procesos (independientemente del fabricante):
  1. Realizar un tuneado y dimensionamiento correcto del hardware buscando cuellos de botella
  2. Separar los procesos de larga duración con tareas humanas de aquellos de corta duración. Los primeros necesitan guardar el estado del proceso y necesitan más recursos de la máquina donde se ejecutan.
  3. Solo persistir los datos necesarios para mantener el estado del workflow. Cuando se necesita guardar más datos de negocio, guardar únicamente “puntero” o claves primarias de los datos que se guardan en la base de datos de negocio, no la del proceso
  4. Dejar el servidor de procesos para lo que es, ejecutar procesos. El resto que está alrededor (pantallas, lógica de negocio, etc.) establecer una arquitectura para darle soporte. Desde aquí se invocará al proceso
  5. No usar el BPM para guardar el estado de negocio de la aplicación. La lógica de negocio debe ir en la capa de negocio, no en el proceso.
  6. El proceso debería representar los pasos (o tareas) del proceso con la lógica de negocio fuera de él, implementado en clases o servicios
  7. La capa de presentación debe proveer la flexibilidad para que la solución sea multo-canal. Tener la capa de presentación fuera del motor de procesos.
  8. La capa de integración debe ser implementada usando un ESB que provee servicios para el motor de procesos.
  9. Saca la lógica compleja del motor de procesos.
  10. Usa un motor de reglas para tomar decisiones de negocio fuera del motor de procesos.

Conclusión:

Si queremos que nuestra solución de BPM tenga éxito tenemos que poner especial importante a las cuestiones de rendimiento y escalabilidad y para ello hay que seguir las mejores prácticas que nos permitan asegurar esto.

Como siempre lo principal es aplicar el sentido común y sobre todo la conclusión de siempre, hay que usar los productos para lo que se han diseñado aunque suene a perogrullada: en el motor de procesos ejecutar sólo procesos.

Comparte esta entrada:

Share

Anuncios