Notifications to the BPM Engine from insertion in Entities

Available since Release 6.0.0

Introduction

This functionality allows to launch BPM Engine processes associated to the insertion of data in an Entity. The BPM Engine notifications are used for this purpose.

How does it work?

To give a general idea of how this functionality works we will follow a very simple example using the following diagram:

image-20240228-103824.png

Cargar BPM con Event Messages

Para poder notificar al BPM desde la inserción de entidades, hay que crearse un proceso que empiece con un Start Event Message, vamos a analizar en detalle el diagrama de ejemplo:

image-20240228-105503.png

 

  • Start Message: se trata de un Start Event Message, es importante darle un nombre al mensaje, ya que es el que utilizaremos para configurar las notificaciones desde la entidad. Este nodo recibirá la variable platformEntity con los datos insertados en la entidad en formato JSON.

  • checkJSON: comprueba si el JSON recibido por el Start Message es un array o no, para ello utiliza las siguiente expresión. Hay que destacar que evaluamos la variable platformEntity que es donde nos vendrán los datos insertados:

 

  • checkAge: en este nodo chequeamos si la persona tiene mas de 18 años, para ello volvemos a utilizar la varible platformEntity y chequeamos la propiedad age

 

En el caso de que los datos vengan en formato array la expresión seria la siguiente:

${JSON(platformEntity).elements().get(0).prop("person").prop("age").numberValue() >= 18}

En caso contratrio:

${JSON(platformEntity).prop("person").prop("age").numberValue() >= 18}
  • doSomething: aque el proceso queda a la espera de una acción del usuario.

Una vez creado el diagrama lo cargamos en nuestro BPM a través de la opción de menú Development > My BPM Tenants

Para mas información sobre cómo trabajar con el BPM Engine de Plataforma leer la sección BPM Engine

Habilitar notificaciones al BPM Engine desde la entidad

A la hora de crear una entidad hay que marcar la opción Allow BPM Notifications que se encuentra en la pestaña de Advanced Settings. Al marcar esta opción aparecerá una tabla en la cual habrá que añadir los Event Messages que se quieren notificar, para ello primero seleccionamos el proceso BPM correspondiente y se cargarán todos los Event Messages existentes en dicho proceso:

Una vez se han añadido todas las relaciones proceso-mensaje a la tabla, creamos la entidad.

Para este ejemplo vamos a crear la entidad Person con el siguiente esquema:

{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "person", "type": "object", "required": [ "person" ], "properties": { "person": { "type": "string", "$ref": "#/datos" } }, "datos": { "description": "Properties for DataModel person", "type": "object", "required": [ "name", "age", "city" ], "properties": { "name": { "type": "string" }, "age": { "type": "number" }, "city": { "type": "string" } } }, "description": "person", "entitydclass": [], "additionalProperties": true }

Visualizar la ejecución del proceso

De esta forma, cada vez que se inserte un dato en una entidad configurada para notificar al BPM, se notificarán a los Event Messages configurados y se lanzará el proceso correspondiente con los datos insertados en la entidad.

Podemos observar varias cosas:

  • Los datos vienen almacenados en la variable platformEntity en formato JSON

  • Los datos siguen el esquema de la ontología person que nos hemos creado al principio

  • Como los datos no vienen en formato array, el proceso ha evaluado correctamente si es un array o no y ha elegido el camino inferior del diagrama

  • El proceso se ha paralizado en la User Task a la espera de alguna acción por parte del usuario

A continuación dejamos disponible el BPMN del ejemplo:

Â