# 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.

<img src="https://docs.induxsoft.net/es/productos/v12/devops/img/diag-paquete.svg" class="img-fluid"/>

### 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) es una tabla en la base de datos, formada por columnas (también denominadas 'campos') y filas (llamadas también 'registros').

#### Tipo de elemento de datos

Un tipo de elemento de datos (data element type [DTE]) es un objeto o concepto del mundo real representado en el sistema, 
se requiere al menos una o más entidades (tablas) para almacenarlo en la base de datos.

### 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).
* 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.

<img src="https://docs.induxsoft.net/es/productos/v12/devops/img/event-notif.svg" class="img-fluid"/>

#### 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.



