Nuevas características

Notificaciones al BPM Engine desde inserción en Entidades

En la release 6.0.0-Vegas hemos añadido una funcionalidad que nos va a permitir lanzar procesos desde el BPM Engine asociados a la inserción de datos en una Entidad. Para ello, se van a usar las notificaciones del BPM Engine.

¿Cómo funciona?

Para dar una idea general de como funciona esta funcionalidad, vamos a seguir un ejemplo muy sencillo utilizando el siguiente diagrama:

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 dieciocho años; para ello volvemos a utilizar la variable de «platformEntity», en donde comprobaremos la propiedad «age».

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

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

En caso contrario:

${SJON(platformEntity).prop("person").prop("age").numberValue() >= 18}

Nota: SJON debe de ser JSON; lo expresamos momentáneamente así por un problema en el blog.

doSomething

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

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.

Aquí, remarcamos los siguientes puntos:

  • 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 os dejamos disponible en este enlace el BPMN del ejemplo, por si os interesa replicarlo.


Si estáis interesados en conocer más acerca de las notificaciones para el BPM Engine, no dudéis en dejarnos un comentario o mandarnos un aviso en nuestro canal de soporte de Onesait Platform.

Imagen de cabeceraJason Leung on Unsplash.

✍🏻 Author(s)

Deja una respuesta