====== Creacion del archivo jar con componentes y metadatos ====== ===== Componentes del jar ===== A fin de poder instalar un plugin, es necesario crear el archivo //jar// correspondiente. El mismo contendrá las clases compiladas con la lógica de persistencia, documentos, procesos, etc.; en conjunto con una serie de archivos necesarios para el correcto deploy. Estos archivos son (respetar minúsculas): * **manifest.properties**: Indica las especificaciones del plugin (nombre, versión, etc.). Este archivo es obligatorio y debe respetar un formato y contenido predefinido (el cual se detalla posteriormente). El mismo se genera automáticamente al disparar el proceso de creación de un plugin: **Exportar Plugin**. * **preinstall.sql**: Opcional. Conjunto de sentencias SQL para la modificación estructural de la base de datos (nuevas tablas, columnas, funciones, etc.). El proceso **Exportar Plugin** sugerirá un sql básico basado en la información existente en los metadatos de la aplicación, __el cual deberá adecuarse según corresponda__. * **install.xml**: Opcional. Contenido generado automáticamente desde el proceso **Exportar Plugin** a partir de los metadatos de la aplicación. * **postinstall.xml**: Opcional. Contenido generado automáticamente desde el proceso **Exportar Plugin** a partir de los datos transaccionales de la aplicación. Cabe mencionar que, dependiendo del tipo de plugin que se está creando, es posible que no sean necesarios todos los archivos. Algunos ejemplos: * Un plugin que no realiza modificación alguna sobre la base de datos, solo requiere el **manifest**. * Un plugin que modifica una ventana o la definición de un proceso, requiere: **manifest** + **install** * Un plugin que crea o modifica la estructura de una tabla, requiere: **manifest** + **preinstall** + **install** * Un plugin que crea un nuevo artículo o entidad comercial, requiere: **manifest** + **postinstall** El archivo **manifest.properties** generado contendrá los siguientes datos (obtenido de la información de [[plugins:versionycomponente|Componente y versión]]): * **VERSION**: Versión del plugin. * **PREFIX**: Prefijo del plugin. * **PACKAGENAME**: Package inicial del plugin. * **PUBLICNAME**: Nombre público del plugin. * **AUTHOR**: Autor del plugin. * **CORELEVEL**: Nivel de core. * **INSTALLPROCESS**: Optativo. En caso de requerir una customización de postInstall, se disparará este proceso para requerir parámetros específicos (más de esto luego). En el manifest se guarda la clave universal del proceso. Por ejemplo, siguiendo el ejemplo del [[plugins:versionycomponente|plugin DISY]], esto sería: # Manifest de ejemplo para Plugin Disytel VERSION = 1.01 PREFIX = DISY PACKAGENAME = ar.com.disytel.plugin PUBLICNAME = Plugin especial de ejemplo AUTHOR = Disytel SA CORELEVEL = 2 # Proceso de instalacion custom INSTALLPROCESS = DISY-AD_Process-1001290 # AUTOGENERADO - NO MODIFICAR COMPONENTUID = DISY-AD_Component-1010001 COMPONENTVERSIONUID = DISY-AD_ComponentVersion-1010001 ===== Configuración ad-hoc de post Instalación ===== Durante el desarrollo de un plugin, es posible crear un proceso y párametros a fin de lograr una customización ad-hoc sobre el conjunto de datos contenido en el archivo //postinstall.xml//. Este es el proceso que debe especificarse en el campo **INSTALLPROCESS** del //manifest.properties// (el proceso de exportación de plugin (**Exportar Plugin**) se encarga de hacer ésto pidiendo el proceso correspondiente al momento de la exportación). La postinstalacion customizada permite reemplazar un conjunto de valores contenido dentro del XML por los correspondientes valores especificados en los parámetros del proceso ah-hoc. Por ejemplo, supongamos que un plugin requiere incorporar una nueva entidad comercial: "Agente de Retención". Dicha entidad comercial se deberá generar específicamente para la compañía donde estamos instalando el plugin, pero la instalación del plugin se realiza bajo System Administrator de la compañía System. En este caso deberemos especificar dentro del proceso que hemos creado, un parámetro **AD_CLIENT_ID**. Luego, durante la instalación del plugin, se reemplazaran los valores //AD_Client_ID// contenidos en el XML por el valor que haya especificado el usuario. El framework puede encargarse de hacer el mapeo de los parámetros definidos en el proceso creado automáticamente. Simplemente hay que indicar en el proceso creado, la clase **org.openXpertya.process.PluginPostInstallProcess** (la cual interactua con el parser **PluginXMLUpdaterPostInstall**). Sin embargo es posible redefinir este proceso para ampliar aun mas su lógica, o bien para permitir realizar acciones posteriores. Por ejemplo, podemos crear un proceso **PluginXMLUpdaterDisy** que apunta a una clase **ar.com.disytel.plugin.process.PluginXMLUpdaterDisyProcess**. Este proceso contendrá los parámetros que deseemos utilizar para reemplazar los valores del XML con los cargados en cada uno de los parámetros. Además del mapeo de estos valores, desde este proceso es posible realizar otras actividades, tales como asignar a un usuario (que también podría recibirse mediante otro parámetro) los permisos para los componentes previamente creados. Recordar que el proceso creado deberá extender de **org.openXpertya.process.PluginPostInstallProcess**. En caso de ser necesario un mapeo especial, incluso es posible redefinir el proceso de parseo postinstall general del XML: **PluginXMLUpdaterPostInstall**, subclasificando dicha clase y redefiniremos el método **appendSpecialValues()** según sea necesario. En la implementación del proceso que estamos (por ejemplo **PluginXMLUpdaterDisyProcess**), instanciaremos ésta nueva subclase, la cual contendrá la lógica de reemplazo ad-hoc. ===== Como generar el archivo .jar ===== Es necesario incorporar el o los archivos de **.properties**, **.sql**, **.xml** en el directorio **bin** del proyecto plugin compilado en Eclipse. Siguiendo el ejemplo (ar.com.disytel.plugin), tendremos entonces la siguiente estructura de archivos: * disytel_plugin * bin * //ar// (directorio del package inicial el cual contendrá las clases Java compiladas ) * **manifest.properties** * **preinstall.sql** * **install.xml** * **postinstall.xml** * src Una vez copiados los archivos, __y ubicados en el directorio **bin**__ se genera el jar mediante el siguiente comando: jar cvf nombre.jar * Recordar que **ES IMPORTANTE** respetar los nombres de los archivos, las ubicaciones de los mismos, y el formato del archivo **manifest.properties**. En caso de tener que gestionar archivos binarios, ver [[plugins:replicacionbinarios]]. Para su instalación en otro equipo, este archivo luego debe ser ubicado en el directorio **lib/plugins** del **ServidorOXP** y ejecutar el **Configurar.sh**. Finalmente se deberá ejecutar el proceso **Instalador de Componentes y Plugins** a fin de impactar el contenido del mismo.