# Paquetes Los paquetes están formados por transacciones, tareas, datos iniciales y otros recursos (por ejemplo imágenes o scripts js, css, etc.). ## Clasificación Los paquetes pueden clasificarse en dos categorías: * Paquetes de sistema. Incluyen bibliotecas y aplicaciones que son de utilidad para otros paquetes o el sistema V12, como el paquete *dbext* que ofrece funciones para gestionar variables globales, eventos, autorizaciónes, etc. * Paquetes de usuario. Incluyen principalmente aplicaciones con un propósito específico o para un área del negocio, como el paquete *rhgf* (Gestión Financiera de los Recursos Humanos) ## Estructura La estructura de carpetas de un paquete debe ser: ``` / (raíz del paquete) |---Nombre_del_paquete/ |---_install/ |---_static/ |---entry-point.dkl ``` * Raíz del paquete. Aquí se incluyen archivos que se colocarán en la carpeta de binarios de Devkron, p.e. archivos .dll, programas o bibliotecas comunes. * Carpeta ```Nombre_del_paquete``` Esta carpeta debe tener el nombre del paquete, contiene a las carpetas ```_install```, ```_static``` y a las que correspondan a las transacciones y tareas incluidas. * Carpeta ```_install``` Contiene esquemas, datos y programas requeridos por la instalación * Carpeta ```_static``` Contiene recursos estáticos que son requeridos por las páginas de los programas del paquete, por ejemplo imágenes, js o css * Archivo ```entry-point.dkl``` Este archivo es el punto de entrada para todas las transacciones (generalmente carga configuraciones e inicializa el controlador) ## Instalación Los paquetes generalmente están acoplados a un esquema de datos relacionales, datos iniciales, nuevos privilegios y variables globales que deben ser integrados a la base de datos para poder usarse. Una lista simple (no exhaustiva) de tareas necesarias para la instalación puede incluir: 1. Instalar el esquema de datos (ddm) lo que implica alterar la estructura de la base de datos 2. Insertar datos iniciales, privilegios y variables. 3. Relacionar los nuevos privilegios insertados al grupo de Administradores (groupid: 'admins', 'administradores' o 'administrators' ) Para simplificar el proceso de instalación, todos los paquetes incluyen el programa ```_install/install.dkl``` que realiza estas tareas de forma automatizada desde la línea de comando. ## Enrutamiento Una vez instalado un paquete, se podrá acceder a las transacciones (aplicaciones y servicios) mediante URLs dentro del directorio virtual ```!``` y a sus recursos estáticos a través del directorio virtual ```$```. Ejemplos: * ```https://sistema.miempresa.com/!/cxc/clientes/``` Accede a la transacción ```clientes``` (a través de entry-point.dkl) del paquete ```cxc``` * ```https://sistema.miempresa.com/$/cxc/icono1.png``` Accede a una imagen en la carpeta ```_static``` del paquete ```cxc```