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:
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:
Â
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:
Â