BPM con referencias

Una de las premisas fundamentales para que un BPMS de buen resultado es que los procesos BPM deben de mandar hacer cosas, pero no hacer cosas ellos mismos. O dicho más formalmente: En automatización de un proceso BPM debe de centrarse el foco en secuenciar las tareas que se han de realizar, no en realizarlas. Entre las cosas que se debe de evitar, está la de mantener entidades de las que no se es responsable.

Así pues, y atendiendo al principio de responsabilidad del dato, la base de datos del BPMS deberá de mantener únicamente datos propios del proceso, e irá a buscar las entidades externas cuando las necesite.

Esto es especialmente importante en BPM, ya que entidades como cliente, cuenta, contrato, etc. que son subsceptibles de ser modificados por varios procesos o por eventos de forma concurrente, y un proceso BPM puede durar el tiempo suficiente como para que bloquear esos recursos no sea posible; debend e ser modificables de forma asíncrona.

Adicionalmente si los datos son responsabilidad de terceros deberemos de asumir que una vez adquiridos los datos, al poco, dichos datos dejan de ser validos.  Tras la primera tarea de usuario o automática que lleve más de unos segundos debemos descartarlos, y volver a pedirlos. No es necesario que alguien cambie los datos, la mera posibilidad de que alguien pueda haberlo hecho invalida los datos. Así pues no tiene sentido guardarlos.

¿Qué pasa con los datos que son responsabilidad del BPMS?

Entidades responsabilidad del BPMS?

Logicamente han de ser mantenidas por el BPMS, esto en la mayoría de los productos no es un problema. Pero también pueden/deben de ser puestos a disposición de terceros, a los que se les puede dejar la posibilidad de modificarlos. Para ello tenemos varias estrategias:

  • La más común consiste en dar acceso a la base de datos del producto. Esto es en general mala idea, muchos productos tienen cláusulas prohibiendolo. Atenta contra los principios de desacoplamiento del software y nos expone a los riesgos de actualizaciones no controladas. Lamentablemente, no es infrecuente.
  • Otra técnica consiste sincronizar una copia maestra. Esto se realiza con técnicas EAI o EDA (usado como EAI encubierto). Notificando los cambios que ocurren mediante eventos o replicándolos directamente en otra base de datos. Esto es muy trabajoso, complica mucho el proceso y es ineficiente, porque los puntos en los que los datos cambian pueden ser en realidad todo el proceso.
  • Una técnica que si da buen resultado es una tarea ad-hoc. Estas tareas no están presentes en todos los BPMS pero su idea normalmente es implementable. Consiste en una tarea que se puede ejecutar asíncronamente y tiene acceso al contexto del proceso. Si esta tarea se inicia con un mensaje y puede enviar otro mensaje (como en la figura) puede simular el comportamiento de un servicio tanto de consulta, como de actualización si lo juzgamos conveniente.
bpm adhoc.png

Proceso con tarea Ad-Hoc para exponer los datos responsabilidad del proceso

Nota sobre responsabilidades:
En la figura tenemos un dato “report”. Ese dato generalmente no será una entidad responsabilidad del BPMS, el proceso solo tendrá su referencia (probablemene un enlace).
Si será responsabilidad del proceso quien ha sido escogido para revisar el informe, o incluso la valoración que se ha dado (aprobado o no, y por qué)

Y que pasa una vez el proceso termina?

La mayoría de las veces cuando un proceso termina sus datos internos son eliminados o residen en la base de datos del BPMS (a la que ya he recomendado dejar tranquila). Es habitual que los datos del proceso no tengan valor una vez acabado el proceso, de hecho si lo tienen es un indicativo de que deberían externalizarse. (generalmente crear un sistema para que se responsabilice de ellos) .

Si aun así se consideran datos necesarios, por ejemplo para una explotación estadistica. Lo mas recomendable es transferir la responsabilidad de estos datos a un almacén creado a tal efecto: un hipercubo, un lago de datos, una base de datos para auditoria, etc.

Es típico que los procesos acaben con una tarea de volcado de datos, antes de que estos queden inaccesibles.

Anuncios