Herramientas de usuario

Herramientas del sitio


plugins:validacionescomponente

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
plugins:validacionescomponente [2017/02/02 11:18]
fcristina creado
plugins:validacionescomponente [2021/04/30 19:19] (actual)
Línea 3: Línea 3:
 Previo a la entrega de un componente temporal, es aconsejable realizar una validación integral en lo que respecta a modificaciones a nivel base de datos y del diccionario de datos de Libertya realizadas en el componente. Previo a la entrega de un componente temporal, es aconsejable realizar una validación integral en lo que respecta a modificaciones a nivel base de datos y del diccionario de datos de Libertya realizadas en el componente.
  
-La finalidad de dicha actividad es evitar incluir eventuales errores al incorporar este componente en la versión standard de libertya (la BBDD "master" de desarrollo de LY, la cual es incluida como parte de los archivos entregados en cada release).+La finalidad de dicha actividad es evitar incluir eventuales errores al incorporar este componente en la versión standard de Libertya (la BBDD "master" de desarrollo de LY, la cual es incluida como parte de los archivos entregados en cada release).
  
 De esta manera evitamos entradas erróneas en el diccionario de datos que generen warnings al momento de aplicar actualizaciones de Libertya (que ya incluyen los cambios del componente temporal) sobre otra instancia. De esta manera evitamos entradas erróneas en el diccionario de datos que generen warnings al momento de aplicar actualizaciones de Libertya (que ya incluyen los cambios del componente temporal) sobre otra instancia.
  
-Para comprender el paso a paso veamos el siguiente ejemplo.  Se supone que se desarrolló un componente temporal denominado FOO.+===== Ejemplo =====
  
 +Para comprender el paso a paso veamos el siguiente ejemplo.  Se supone que se desarrolló un componente temporal denominado **FOO**, el cual posteriormente será parte de la versión standard de Libertya, versión **LY CORE 17.05**.
  
 +Los pasos para verificar el componente a nivel BBDD/Metadatos son los siguientes:
  
 +==== PASO 1: Exportar el componente temporal ====
 +
 +
 +Esto simplemente implica realizar la exportación del componente utilizando la funcionalidad **Exportar Componente** desde el perfil **System Administrator**.
 +
 +Al exportar, es posible que sea necesario habilitar el check **Validar consistencia de la bitácora**. Este check verifica para cada entrada del changelog si efectivamente existe la entrada en la BBDD.  Por ejemplo, si el changelog indica la creación del campo **FOO-AD_Field-10189311**, se valida si efectivamente existe dicho registro en la tabla **AD_Field**.
 +
 +Adicionalmente, se puede tildar también la entrada **Deshabilitar entradas inexistentes**. Este check desactivará las entradas del changelog que presentan inconsistencias entre la bitácora de cambios y la base de datos. Siguiendo el ejemplo anterior, si no se encuentra el registro **FOO-AD_Field-10189311** en la tabla **AD_Field**, entonces se desactivan los registros de la tabla ad_changelog que conforman la información de generación del AD_Field en cuestión.
 +
 +Estas situaciones pueden darse por ejemplo cuando se crea información en los metadatos y se registran automáticamente los cambios en la bitácora, pero luego se elimina dicha información. Si bien la eliminación queda registrada en la bitácora, es probable que registros relacionados son eliminados directamente en cascada (por constraints de Foreign Key) sin pasar por la bitácora, generándose un eventual desfazaje entre metadatos y base de datos.  Un ejemplo es la creación de un Field y sus traducciones.  La eliminación del Field implica la eliminación en cascada de las traducciones a nivel postgres, pero esto no queda registrado en la bitácora.
 +
 +**NOTA:** Estas funcionalidades fueron implementadas a partir de la revision r1670, y sólo asisten en la búsqueda y detección de potenciales errores.  Si bien en una primera iteración de la validación podría omitirse la utilización de estos checks, en caso de presentarse errores a lo largo de estos pasos probablemente en una segunda iteración sea necesario habilitarlos a fin de reducir el volumen de eventuales errores a presentarse.
 +
 +
 +==== PASO 2: Instalar en una copia de la BBDD libertya standard, incorporando al changelog ====
 +
 +Una vez exportado el componente **FOO** y armado el .jar de instalación, se procederá a instalarlo en una BBDD de libertya standard, indicando que se utilizará la funcionalidad de [[plugins:copiadechangelog#instalacion_con_copia_de_changelog_con_mapeo_a_componente_existente|copia de changelog con mapeo a componente existente]] hacia el componente **LY CORE 17.05** a fin de incorporar los cambios del componente **FOO** a la bitácora de cambios de la versión standard.
 +
 +De esta manera, el componente **LY CORE 17.05** de la versión standard contendrá todos los cambios de **FOO** como si hubieran sido desarrollados directamente sobre dicha BBDD.
 +
 +==== PASO 3: Exportar el changelog de LY CORE que ahora incluyen los cambios de FOO ====
 +
 +La intención ahora es exportar **LY CORE 17.05** completo (incluyendo las modificaciones de **FOO** llevadas a CORE), a fin de verificar posteriormente que efectivamente no haya errores al realizar una actualización desde LY CORE 16.04.
 +
 +Se exporta el componente y se genera el jar de actualización correspondiente, siguiendo el ejemplo: **org.libertya.core.upgrade_16.04_17.05.jar**.  Lógicamente será necesario ampliar el **preinstall_from_16.04.sql** alojado en los fuentes de LY según sea necesario a partir de las modificaciones incorporadas en el componente **FOO**, a fin de generar el **preinstall.sql** definitivo que quedará almacenado en el .jar de instalación.
 +
 +Nuevamente, aquí se sugiere utilizar las funcionalidades **Validar consistencia de la bitácora** y **Deshabilitar entradas inexistentes** en caso de ser necesario.
 +
 +==== PASO 4: Prueba de instalación ====
 +
 +Sobre una BBDD de **Libertya 16.04**, se prueba a realizar la actualización en cuestión, validando que no se presenten errores al momento de aplicar la misma.
 +
 +En caso de errores, será necesario depurar/adaptar la bitácora de cambios del componente temporal **FOO** según las necesidades del caso, para realizar nuevamente las validaciones pertinentes.
 +
 +
 +===== En caso de error =====
 +
 +En caso de errores, se deberá determinar primeramente el origen del mismo.  Para esto será necesario revisar el log de instalación a fin de saber cuales son las entradas del changelog problemáticas.
 +
 +Una vez determinado ésto, se debe proceder a realizar los ajustes necesarios, como por ejemplo deshabilitar dichas entradas o realizar modificaciones sobre las mismas.
 +
 +A partir de la revisión r1766 la instalación de un componente incluye el changelogGroupID asociado a cada actividad de la bitácora, haciendo más sencilla la determinación del origen del error.
 +
 +Por ejemplo:
 +
 +  WARNING: - Imposible eliminar - referencia inexistente en tabla. 
 +  Referencia: (FOO2CORE-C_RetencionSchema-1010123) .
 +  Tabla: C_RetencionSchema - changelogGroupID:1178479
 +
 +Con esto sabemos que el changelogGroupID es el 1178479, el cual podemos observar en el **postinstall.xml**:
 +
 +  <changegroup changelogGroupID="1178479" 
 +  operation="D" 
 +  tableName="C_RetencionSchema" 
 +  uid="FOO2CORE-C_RetencionSchema-1010123"/>
 +  
 +Esto permite realizar las modificaciones pertinentes sobre la tabla AD_Changelog del componente de desarrollo FOO, por ejemplo:
 +
 +  UPDATE AD_Changelog SET isactive = 'N' WHERE changelogGroup_ID = 1178479
plugins/validacionescomponente.1486034310.txt.gz · Última modificación: 2021/04/30 19:21 (editor externo)