Trazabilidad de procesos
Disponible desde la versión 3.3.0-Moonwalker
Introducción
Se ha añadido una nueva funcionalidad a la Plataforma que va a permitir trazar y monitorizar la ejecución de un proceso en la Plataforma que involucre diversos componentes.
En esta primera versión de la funcionalidad, sólo se han tenido en cuenta operaciones con Entidades (inserts, updates, deletes) desde distintas fuentes (IoTBroker, Dataflow, etc.).
Cómo crear un proceso
Para dar de alta un nuevo proceso, se accederá al menú de Procesamiento > Definición Trazabilidades de Procesos.
Se mostrará entonces el listado de trazabilidad de procesos disponibles para el usuario. Para crear uno nuevo, se pulsará en el botón de «+» situado en la parte superior derecha de la pantalla.
Se lanzará entonces el asistente de creación de trazabilidad, en el que habrá que rellenar la siguiente información:
Identificación: el identificador único del proceso.
Descripción: pequeño texto descriptivo de lo que hace el proceso.
Cron: expresión cron que va a definir cada cuanto se tiene que ejecutar el proceso. Haciendo clic sobre el icono del reloj, se abre un cuadro de dialógo dónde se va a poder programar de manera sencilla el cron.
Activar desde/hasta: es posible seleccionar un intervalo de fechas para la ejecución del proceso, durante el cual se lanzará la monitorización de dicho proceso. En el caso de dejar estos campos vacíos, se ejecutará siempre y cuando el campo Proceso activo esté habilitado.
Proceso activo: indica si la trazabilidad del proceso está activa o no. Sólo se comprobará el estado del proceso si se encuentra activo.
Filtrar por campo: indica que se quieren filtrar las operaciones según un campo predefinido. Esto es útil cuando se tienen varios dispositivos realizando operaciones sobre una misma Entidad y sólo se quiere tener en cuenta uno de ellos para la monitorización del proceso.
Ejecución ordenada: indica si las operaciones definidas después tienen que ejecutarse de manera ordenada, o si por el contrario nos da igual el orden de ejecución.
Verificar ejecuciones: indica si cuando se verifique la ejecución del proceso hay que tener en cuenta el número de ejecuciones de cada operación o no. En el siguiente ejemplo, se ha configurado para que la operación
insert
tenga dos ejecuciones, lo que quiere decir que para que se verifique dicha operación tienen que insertarse dos instancias en la Entidad indicada.Añadir operación: se podrán añadir tantas operaciones como se quieran al proceso. Para cada operación habrá que indicar las siguientes propiedades
El tipo de operación:
insert
,update
,delete
.La Entidad sobre la que se ejecutará la operación.
El campo por el cual se quiere filtrar las operaciones, los cuales se corresponderán con los campos de la Entidad seleccionada. Esta opción sólo está habilitada cuando se seleccione la opción de Filtrar por campo, y no se tendrá en cuenta en las operaciones del tipo
delete
. Es importante que el campo seleccionado sea un identificador único.El valor por defecto que deberá tomar el campo seleccionado anteriormente, para que se valide la operación. Hay que tener en cuenta que el identificador tiene que ser un campo alfanumérico.
La fuente de la ejecución: ApiManager, DataFlow, Notebook, etc.
El número de ejecuciones, en el caso de estar habilitado la opción de verificar ejecuciones.
La posición, en el caso de estar habilitado la opción de ejecución ordenada.
Una vez rellenada la información del formulario, sólo habrá que pulsar en el botón «Crear» para terminar de crear el proceso. Seguidamente, aparecerá el listado de procesos disponibles, donde se podrá visualizar el proceso recién creado.
Cómo visualizar la trazabilidad de un proceso
Interfaz de usuario en el Control Panel
Una vez creado el proceso, se podrá acceder a la visualización del mismo a través del listado. Para ello, abrá que pulsar en el icono de «👁» de las opciones de procesos.
Aparecerá por un lado un diagrama de cajas que representarán nuestro proceso:
En el caso de ser un proceso ordenado, las operaciones aparecerán unidas y en orden.
En el caso de un proceso NO ordenado, las operaciones aparecerán desvinculadas unas de otras.
En dicho diagrama se podrá apreciar de manera visual el último estado de cada una de las operaciones con un código de colores («verde» si todo ha ido bien, y «rojo» si se ha producido algún error).
Además, seleccionando una de las operaciones directamente sobre el diagrama, se va a poder obtener información sobre la operación, así como su último estado y el mensaje de error en el caso de haber fallado la ejecución de la operación.
Por otro lado, se cuenta con un listado con el histórico de todas las ejecuciones de los proceso, desglosado por operaciones y ordenado por defecto de manera descendente. En el caso de que una de las operaciones haya fallado, aparecerá un icono de información al lado de la operación y aparecerá el mensaje de error de la ejecución.
Auditoría
Los datos de la trazabilidad de los procesos se almacenan en la Entidad de auditoría del usuario. Por lo que se podrán consultar todas las ejecuciones de un proceso a través del Query Tool, e incluso se podría incluir en un Dashboard de manera visual.
Los datos siguen la siguiente estructura en formato JSON:
{
"extraData": "{\"e01c999e-c998-4db6-b592-865be5ad9713\":{\"message\":\"Operation not executed.\",\"status\":false},\"aa258a0f-08a1-4b24-93e4-a5c7dabadd86\":{\"message\":\"Operation not executed.\",\"status\":false},\"765898a8-59e9-4571-9f7e-c40c8dfda71e\":{\"message\":\"Operation OK\",\"status\":true}}",
"module": "CONTROLPANEL",
"message": "Process with identification process04 executed successfuly.",
"type": "PROCESS_EXECUTION",
"version": 1,
"otherType": "com.minsait.onesait.platform.controlpanel.helper.processtrace.ProcessTraceHelper",
"timeStamp": 1636981555525,
"formatedTimeStamp": "2021-11-15T13:05:55.525Z",
"operationType": "PROCESS_EXECUTION",
"id": "e751faf3-844b-42f6-895e-6af89a7df5df",
"resultOperation": "SUCCESS",
"user": "rbarrio1",
"ontology": "Audit_rbarrio1"
}
Como datos de interes, se tiene:
Todos los datos con
type=PROCESS_EXECUTION
hacen referencia a la trazabilidad de procesos.El campo
version
indica la versión del proceso al cual corresponden los datos.En el campo
resultOperation
se podrá verificar si la ejecución del proceso a ido bien o no.Respecto al campo
id
, se corresponde con el identificador del proceso.Dentro del campo
extraData
se tiene, en formato JSON, la información de cada operación por separado.
Versionado de los datos
Tal y como se ha visto en el apartado anterior, a la hora de visualizar los datos de la trazabilidad de un proceso es crucial saber las operaciones que intervienen en el proceso. Por este motivo, el modificar las operaciones de un proceso que ya ha estado activo y tiene datos almacenados en la auditoría podría ocasionar problemas de compatibilidad entre los datos.
Para evitar esto, se ha creado un sencillo sistema de versionado de los datos, así cada vez que se modifican las operaciones de un proceso se sube de versión, la cual vendrá especificada en el campo version
de los datos de la auditoría.
Cabe destacar que en la interfaz gráfica del Control Panel, cuando se consulte el histórico de las ejecuciones de un proceso, en el listado solo aparecerán los datos de la última versión.
Cómo se gestiona la verificación de los procesos
Procesos no ordenados
Una vez creado un proceso no ordenado, periódicamente (según la periocidad que se haya indicado a la hora de la creación del proceso) se comprobará si el proceso se ha ejecutado correctamente o no.
En este caso se verificarán de manera individual las operaciones, ya que las operaciones no están relacionadas entre sí de ninguna manera.
Procesos ordenados
En este caso, cuando se comprueba el estado del proceso, se empieza comprobando la primera operación y si se ha ejecutado correctamente se pasa a la segunda operación, y así sucesivamente. En el caso de que una de las operaciones intermedias haya fallado, se da por fallado todo el proceso aunque haya operaciones posteriores que se hayan ejecutado correctamente, ya que se entiende que el proceso solo es válido si se ejcutan todas las operaciones en el orden correcto.