Trazabilidad de Procesos

Disponible desde 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 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…).

Cómo crear un proceso

Para dar de alta un nuevo proceso accedemos a la opción de menú Data Governance > My Process Traceabilities y accederemos al listado de processos, seleccionamos el botón +

Una vez en el formulario de creación tendremos los siguientes campos:

  • Identification: identificador único del proceso

  • Description: breve descripción de lo que hace el proceso

  • Cron: expresión cron que va a definir cada cuanto se tiene que ejecutar el proceso. Pinchando sobre el icono del reloj se abre un cuadro de dialógo dónde podemos programar de manera sencilla el cron. Seleccionando la opción Confirm se generará automáticamete la expresión cron.

  • Activated from/to: es posible seleccionar un intervalo de fechas para la ejecución del proceso, sólo durante ese periodo se lanzará la monitorización de dicho proceso. En el caso de dejar estos campos vacíos se ejecutará siempre y cuando el campo Active esté habilitado.

  • Active Process: indica si la trazabilidad del proceso está activa o no, solo se comprobará el estado del proceso si se encuentra activo.

  • Filter by field: indica que se quieren filtrar las operaciones según un campo predefinido. Esto es útil cuando tenemos varios dispositivos realizando operaciones sobre una misma ontología y solo queremos tener en cuenta uno de ellos para la monitorización del proceso.

  • Ordered execution: 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.

  • Check executions: 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 2 ejecuciones, lo que quiere decir que para que se verifique dicha operación tienen que insertarse dos instancias en la ontología indicada.

  • Operations: se podrán añadir tantas operaciones como se quieran al proceso, habrá que indicar:

    • El tipo de operación.

    • La entidad sobre la que se ejecutará la operación.

    • El campo por el cual queremos filtrar las operaciones, los campos se corresponderán con los campos de la ontología seleccionada. Esta opción solo está habilitada cuando se seleccione la opción Filter by field 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.

    • El número de ejecuciones en el caso de estar habilitado el check Check Executions.

    • La posición en el caso de estar habilitado el check Ordered execution.

Una vez creado el proceso, aparecerá en el listado de procesos y en el caso de estar activo se empezará a monitorizar.

Cómo visualizar la trazabilidad de un proceso

UI en el Control Panel

Una vez creado el proceso se podrá acceder a la visualización del mismo a través del listado. 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 ha ido bien y rojo si ha ido mal).

Además, seleccionando una de las operaciones directamente sobre el diagrama podremos 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, tendremos 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 ontología de auditoría del usuario. Por lo que se podrán consultar todas las ejecuciones de un proceso a través del QueryTool e incluso se podría incluir en un dashboard.

Los datos siguen la siguiente estructura:

{ "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" }

Donde tenemos los siguientes datos de interés:

  • Todos los datos con type=PROCESS_EXECUTION hacen referencia a la trazabilidad de procesos.

  • El campo version nos indica la versión del proceso al cual corresponden los datos.

  • en el campo resultOperation podremos verificar si la ejecución del proceso a ido bien o no.

  • id se corresponde con el id del proceso.

  • Dentro del campo extraData tenemos en formato JSON la información de cada operación por separado.

Versionado de los datos

Tal y como hemos 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 sistema muy sencillo de versionado de los datos, así cada vez que se modifican las operaciones de un proceso se sube de versión, dicha versión vendrá especificada en el campo version de los datos de la auditoría.

Cabe destacar que en la interfaz gráfica del Controlpanel, 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.