====== Datos del Componente y Version del Componente ====== ===== Introducción ===== Al momento de desarrollar un plugin, es necesario registrar los datos relacionados con el mismo, así como iniciar la bitácora de registro de metadatos y datos relacionados. Estos valores son los que permitirán replicar luego la información en las máquinas donde se desee instalar el plugin. ===== Desarrollando un plugin ===== Desde //System Administrator//, la ventana **Componentes** permite especificar la información del mismo. La misma cuenta con dos pestañas: * **Componentes**: Esta pestaña almacena la información general del plugin. * **Nombre público**: Nombre general con el cual se referencia el plugin. Por ejemplo: Plugin Disytel Components. * **Prefijo**: Prefijo a utilizar y respetar en las modificaciones al diccionario de datos (más de esto luego). Por ejemplo: DISY. * **Nombre del Paquete**: Package a utilizar y respetar en las modificaciones de clases. Por ejemplo: ar.com.disytel.plugin. El framework utilizará este valor a fin de buscar e instanciar las clases correspondientes. * **Autor**: El creador del plugin. * **Nivel de core**: Nivel de core. El nivel 0 se encuentra reservado para el desarrollo sobre el core de la aplicación. El nivel 1 se encuentra reservado para los componentes de localizaciones. Este valor actualmente deberá setearse en 2 o más. * **Versión del componente**: Esta pestaña almacena las distintas versiones (o releases) que se van desarrollando. * **Version**: Valor de versión o release del plugin. Por ejemplo: 1.01, 9.12, etc. ===== Registrando en la bitácora ===== Una vez almacenada la información del Componente y su versión, es necesario empezar a registrar TODA modificación que se realice sobre el diccionario de datos (**tablas de metadatos** como AD_Table, AD_Window, etc.), y sobre ciertas tablas del core transaccional (**tablas de datos** como C_BPartner, M_Product, C_Doctype, etc.). El conjunto de tablas del cual se generará la bitácora se encuentra definido en el //esquema de tablas// (más de esto luego). En la pestaña Versión de componente, haciendo click sobre el botón **Comenzar Desarrollo** el sistema: - Registrará toda modificación realizada en los metadatos y datos en la tabla **AD_Changelog** - Para estos registros, generará claves universales (**AD_ComponentObjectUID**) a fin de poder referenciarlas a lo largo de distintas versiones del plugin. - Toda inserción en los metadatos referenciará a la Versión de Componente que actualmente se encuentra en desarrollo (**AD_ComponentVersion_ID**). Estos datos permitirán generar posteriormente el archivo //install.xml// (y de manera similar el //postinstall.xml//), el cual contendrá la definición de metadados según lo desarrollado mientras que el plugin se encontraba //en desarrollo//. Estos archivos - entre otros - son los utilizados al momento de instalar el plugin en otra máquina. Es **IMPORTANTE** comprender que, de ampliar los metadatos sin haber iniciado del desarrollo, __los mismos NO se almacenarán en la bitácora__. Esto llevará a que el //install.xml// sea mayormente inservible, obligando a la replicación manual de los mismos. Para los datos transaccionales (//postinstall.xml//), el sistema barre toda la información perteneciente al esquema de tablas de datos en la bitácora, y busca todo registro perteneciente a la versión de componente correspondiente. ===== Detalles sobre el prefijo ===== El prefijo es un String de cuatro letras, y debe usarse para evitar conflictos a nivel estructural de la base de datos. Supongamos dos plugins (PluginA con prefijo **PLGA** y PluginB con prefijo **PLGB**) que desarrollan una tabla **C_Ejemplo** cada una. Esto llevaría a una superposicion de nombres que haría imposible la instalacion de ambos plugins. Es por esto que se utiliza el prefijo, convirtiendo los nombres de las tablas a crear a: **C_PLGA_Ejemplo** y **C_PLGB_Ejemplo**. Aunque mediante este mecanismo es poco probable la aparición de conflictos, es necesario validar la disponibilidad de un prefijo antes de iniciar el desarrollo de un nuevo plugin. ===== Esquema de tablas ===== El esquema de tablas permite especificar cuales son las tablas que deseamos tener en cuenta para la generación de la bitácora de metadatos, así como las tablas de datos a contemplar. Esta configuración puede gestionarse desde la ventana **Esquema de Tablas**, pero a fin de garantizar el correcto uso del framework de plugins, se recomienda **no modificar** la información de la misma.