Reglas sobre los datos: Clases de Datos/Data Classes
Introducción
Esta funcionalidad permite asociar tanto a Entidades (a nivel general) como a atributos de estas, reglas que permita comprobar la integridad de un dato como normalizar los datos a la entrada de los datos de forma sencilla. A esta funcionalidad la hemos llamado Data Classes.
Cómo usar los Data Classes
Configuración centralizada DATACLASS
Las reglas se definen como un nuevo tipo de configuración centralizada, DATACLASS, donde se podrán definir reglas de validación y formato del dato, permitiendo así ejecutar un preprocesado antes de insertar los datos.
Este preprocesado permitirá definir mensajes de error que se insertarán en la entidad de auditoría del usuario, facilitando así la visualización de los datos fallidos y la muestra de estadísticas de carga en un dashboard.
Para crear las reglas será necesario seguir el siguiente formato al crear el fichero de configuración:
Tipos de reglas
Como se puede observar, existen dos tipos de reglas, las property, que irán directamente relacionadas con un campo/propiedad de la entidad, y las entity, que serán reglas que relacionen distintas propiedades de una entidad.
Dentro de cada regla se distinguen dos tipos, las de validación y las de cambio de formato:
Changes. Estas reglas son de cambio o corrección de formato, por ejemplo convertir a mayúsculas, minúsculas, corregir un texto… Por lo que será necesario indicar el orden de ejecución. Los campos a definir serán:
name: nombre del cambio de formato.
order: el orden de ejecución.
script: el código en JavaScript o Groovy para procesar el cambio. Habrá que poner en primer lugar el lenguaje utilizado, Groovy o JavaScript, y hay que tener en cuenta que value será la nomenclatura para el valor a cambiar.
Existe la opción de prescindir del uso de código JavaScript/Groovy, siempre que el cambio sea sencillo del tipo condición/efecto. Para ello, habrá que rellenar los campos condition, effect y else, este último si fuese necesario, en vez del script.
Validations. Estas reglas normalmente devolverán un verdadero o falso, dependiendo de si se cumple la condición o no, por ello se deberá indicar el tipo de error y el mensaje de error si la condición necesaria no se cumple. Los campos a rellenar serán:
name: nombre de la validación.
script: código en JavaScript o Groovy a ejecutar para validar el dato. Habrá que poner en primer lugar el lenguaje utilizado, Groovy o JavaScript, y hay que tener en cuenta que rawdata será la nomenclatura para el JSON de inserción.
error: el tipo de error. Puede ser error si se desea interrumpir la inserción de los datos, o warning si aunque falle se quiere seguir insertando el dato.
errormsg: mensaje que quieres que aparezca cuando no se cumple la regla de validación. Se puede mostrar el valor de la propiedad a editar o a validar, poniendo ${value} en el caso de que la regla sea de tipo property, o ${rawdata.dni} en el caso de que la regla sea de tipo entity (DNI o la propiedad deseada del JSON de inserción).
Cómo asociar una DataClass a una Entidad
Para usar estas reglas, habrá que asociarlas a la entidad en la que queremos hacer ese preprocesado, por ello cuando se cree o edite una entidad, habrá varias opciones nuevas:
Un check para habilitar o deshabilitar el preprocesado de reglas:
Un selector múltiple donde poder elegir las reglas existentes a nivel de ontología:
Un selector múltiple por cada propiedad, donde se podrán seleccionar las reglas de propiedad que existan:
De esta forma, cuando hagamos una inserción de datos en la ontología, se ejecutarán los cambios de formato y se comprobarán las reglas de validación antes de pasar a la inserción.
Auditoría
Todos los errores que se produzcan al ejecutar una regla de validación se insertarán en la ontología de auditoría del usuario (Audit_nombreUsuario).
Entre todos los campos que existen al guardar los errores de auditoría destacaremos los siguientes:
errorMessage: indica que el error se ha producido en la inserción, y seguidamente mostrará el mensaje que se ha introducido en el dataclass donde se define esa validación.
methodName: siempre será dataClassError, pudiendo así identificar todos los errores de preprocesado de datos con los dataclass.
type: indica si es un error o un warning.
formatedTimeStamp: indica la fecha y hora en el que se produjo el error.
user: el usuario que ha realizado la inserción de los datos.
ontology: la ontología destino donde se estaba haciendo la inserción.