# V12 ## Conceptos básicos V12 es un marco de trabajo estructurado y extensible para construir y mantener sistemas Web complejos formados por una colección de paquetes integrados mediante un conjunto de conceptos comunes y usuarios que registran, procesan y extraen información de una base de datos relacional central. * Paquetes. Son la unidad modular estructurada en la que se organizan físicamente los componentes de software. * Conceptos comunes. Definen reglas, convenciones y el comportamiento esperado por todos los componentes de software para integrarse como un solo sistema. ### Paquetes Un paquete está formado por programas, bibliotecas, esquemas, privilegios, datos y recursos. ### Programas Un programa en V12 es una pieza de software con un punto de entrada que puede estar compuesto por uno o más archivos de código Devkron, imágenes, datos y otros recursos. Los programas se clasifican en: Transacciones y Tareas. #### Transacciones Una transacción en V12 es un programa disponible para los usuarios autorizados. Las transacciones reciben datos de entrada, los procesan, afectan a la base de datos y proporcionan una salida. Las transacciones se clasifican en: Aplicaciones y Servicios ##### Aplicaciones Las aplicaciones son programas con un propósito específico que proporcionan interfaz de usuario para que se introduzcan, consulten o afecten datos. Las aplicaciones en V12 se construyen siguiendo el patrón MVC con el [marco de trabajo CRUD-L de Devkron](https://docs.induxsoft.net/es/devkron/Sitios-y-aplicaciones-Web-con-DKL/crudl.md), por lo que están formadas por una o más vistas, un modelo y un controlador. ###### Vistas Las vistas son páginas Web (o pantallas) con las que interactúa el usuario, vea [Lineamientos generales de la Interfaz del Usuario](https://docs.induxsoft.net/es/productos/v12/devops/lineamientos-ui.md) para más información. ###### Modelo Implementa las operaciones con datos de una aplicación. ###### Controlador Es responsable de seleccionar la operación del modelo y entregar la vista apropiada. ##### Servicios Los servicios son colecciones de operaciones disponibles a través de solicitudes HTTP que no ofrecen interfaz de usuario. El marco CRUD-L de Devkron con el que se construyen las aplicaciones, automáticamente implementa un conjunto de operaciones básicas sobre entidades de datos estilo REST. ###### Operaciones Una operación es un proceso atómico que recibe datos de entrada y devuelve datos de respuesta generalmente en JSON. #### Tareas Las tareas son programas que no están disponibles para ser ejecutados directamente por los usuarios. Cada tarea es responsable de notificar o registrar su progreso, estado o finalización de ser necesario. Por lo que el invocador no tiene ningún control una vez que la ha iniciado. ##### Tarea bajo demanda Es iniciada desde un servicio o un modelo de aplicación en respuesta a una acción invocada por un usuario. ###### Manejador de eventos Es iniciado cuando un evento conocido (para el que está registrado) se dispara. ##### Tarea programada Es iniciada automáticamente en intervalos de tiempo configurados. ### Bibliotecas Son archivos de código fuente Devkron que contienen funciones comunes que pueden ser utilizadas por diferentes programas. ### Esquemas Son archivos en DDM o JSON que contienen definiciones de entidades de la base de datos. #### Entidad Una entidad (entity) o tipo de elemento de datos (data element type) es una tabla de la base de datos que representa un concepto relevante del dominio del sistema. ### Privilegios Archivos con listas de privilegios (permisos) conocidos por los programas. Un privilegio es un identificador asociado a una operación del modelo o de los servicios que puede estar o no concedido a un grupo de usuarios. ### Datos Archivos con información en cualquier formato que generalmente se importan a la base de datos durante la instalación, ya sean variables de configuración o información inicial. ### Recursos Imágenes y otros archivos usados por los programas que generalmente están disponibles para descarga. ### Conceptos comunes * Acción. Es la solicitud de un usuario desde una vista para que se realice un proceso. * Operación. Es un proceso disponible a través de un servicio Web. * Evento. Es el mensaje enviado por un proceso bajo ciertas condiciones previstas para que sea procesado por cualquier programa que implemente un controlador. * Manejador de evento. Es el programa previsto para responder a un determinado evento. * Notificación. Es un mensaje enviado por un proceso con la intención de informar al usuario. * Variable. Es un par clave/valor almacenado en la base de datos que representa un parámetro de configuración global. #### Resumen Los usuarios interactúan con el sistema a través de acciones sobre las vistas de las aplicaciones que muestran, capturan o envían datos hacia un modelo que recupera o afecta los datos de entidades persistentes en una base de datos relacional central. Para que diferentes aplicaciones, servicios o tareas; incluso pertenecientes a distintos paquetes; puedan integrarse y funcionar de manera coherente sin dependencia, se comunican entre sí a través de eventos y con el usuario mediante notificaciones. En el backend (modelos, operaciones y tareas) usan variables para configuraciones, verifican privilegios, envían notificaciones al usuario, disparan y manejan eventos.