IntelligenceNuevas características

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

✍🏻 Author(s)

Deja una respuesta