Gobierno del Dato: Data Classes
Siguiendo con las novedades de esta versión 4.3.0-Quest de Onesait Platform, en esta entrada vamos a hablar de una nueva 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
Estas reglas se definen como un nuevo tipo de configuración centralizada dentro de la Plataforma y denominada como «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 va a 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 estas reglas, será necesario seguir este formato al crear el fichero de configuración:
dataclass:
name: generalDataClass
description: general rules
dataclassrules:
ruletype: property
rulename: comunidadesEsp
chages:
order: 0
name: comMadrid
script: |
groovy
return value.replace("Madrid", "Comunidad de Madrid");
order: 1
name: Asturias
script: |
groovy
return value.replace("Asturias", "Principado de Asturias");
validations:
name: comunidades
script: |
groovy
def comunidades = ["Andalucía", "Aragón", "Canarias", "Cantabria", "Castilla y León", "Castilla-La Mancha", "Comunidad de Madrid", "Extremadura", "Galicia", "Islas Baleares", "La Rioja", "Melilla", "Navarra", "País Vasco", "Principado de Asturias", "Murcia", "Cataluña", "Ceuta"] as String[]
return comunidades.contains(value);
error: error
errormsg: ${value} no es una comunidad española
ruletype: entity
rulename: adultAge
changes:
name: pediatra
order: 0
condition: rawdata.age > 17
effect: rawdata.adult = 'yes'
else: rawdata.adult = 'no'
validations:
name: isAdult
error: error
errormsg: El paciente ${rawdata.dni} es menor de 18
script: |
javascript
var json = JSON.parse(rawdata);
if (json.age > 18) {
return true;
} else {
return false;
}
Tipos de reglas
Como se puede ver, 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 cambio de formato (changes) y de validación (validations):
- Changes: estas reglas son de cambio o corrección de formato, como por ejemplo convertir a mayúsculas, minúsculas, corregir un texto, etc., 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 quieras 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 (usa 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 Entidad:
- Un selector múltiple por cada propiedad, donde se podrán seleccionar las reglas de propiedad que existan:
De esta forma, cuando hagas una inserción de datos en la Entidad, 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 entidad de auditoría del usuario (Audit_nombreUsuario):
Entre todos los campos que existen al guardar los errores de auditoría, destacamos 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 Entidad destino donde se estaba haciendo la inserción («Ontología» es el nombre con el que se conocían previamente las «Entidades»).
Imagen de cabecera: Christina @ wocintechchat.com en Unsplash