Dinaup Flex
El motor de estructura de Dinaup: siete tipos de objeto que definen qué datos guarda la empresa, cómo se consultan y qué código se ejecuta.
Dinaup Flex es el motor de estructura de Dinaup. Define las tablas de la empresa, sus columnas, las consultas guardadas, los documentos que se imprimen y el código que se ejecuta al cambiar un registro. Los módulos Ready To Go llegan como estructura Flex, y lo que la empresa añade se guarda con el mismo motor.
Las pantallas donde se edita cada pieza están en FlexHub.
Antes de empezar
- Para editar la estructura hace falta ser Administrador de la empresa: es el único filtro de FlexHub. Ver FlexHub y Usuarios.
- Para leer o escribir la estructura desde código hace falta el paquete NuGet
Dinaupy una clave API. Ver Cliente Dinaup y Claves API.
Los siete tipos de objeto
La Flex API direcciona siete tipos. Cada uno tiene su constante FlexObjectTypes en el SDK.
| Tipo | Constante del SDK | Qué es | Concepto | Pantalla |
|---|---|---|---|---|
| Sección | FlexObjectTypes.Sections | Una tabla de datos de la empresa. | Secciones | Secciones |
| Campo | FlexObjectTypes.Fields | Una columna de una sección. | Campos y Roles de campo | Diseñando la ficha |
| Informe | FlexObjectTypes.Reports | Una consulta guardada sobre una sección. | Informes | Informes |
| Columna de informe | FlexObjectTypes.ReportColumns | Un dato que un informe saca por pantalla. Depende del informe, no de la sección. | Informes | Informes |
| Documento dinámico | FlexObjectTypes.PrintDocuments | Una plantilla HTML que se imprime con los datos de un registro. | Documentos dinámicos | Documentos |
| Script | FlexObjectTypes.Scripts | Código DinaScript que se ejecuta con un evento de la ficha. | Scripts y DinaScript | Scripts |
| Algoritmo | FlexObjectTypes.Algorithms | Una fórmula que calcula un valor sobre una sección. | Algoritmos | Algoritmos |
Todos los tipos comparten la misma ficha en la API (FlexObjectDTO): identificador, sección, etiqueta, palabra clave (Keyword), si está eliminado u obsoleto, la versión de fila para concurrencia y las columnas crudas en Values. Un informe, un documento o un algoritmo llevan además categoría y subcategoría, que es como se archivan dentro de su tipo.
De dónde viene cada objeto
Cada objeto tiene un origen, y el origen determina quién lo puede cambiar:
| Origen | Qué es | Quién lo edita |
|---|---|---|
| Propio | Lo ha creado esta empresa. Ninguna actualización lo sobrescribe. | La empresa, desde FlexHub o con el SDK. |
| Módulo de fuera | Llega instalado con un módulo que la empresa no desarrolla. | Solo el autor del módulo. En FlexHub se abre con un candado y el motivo del servidor (EditBlockReason). |
| Módulo propio | En una licencia de desarrollo, lo que forma parte del módulo que esa licencia publica. | La empresa, y se publica con el módulo. Ver Módulos y Módulos Flex. |
Las secciones del núcleo que trae toda instalación están en Secciones del núcleo.
Modelar una sección propia
Flex se construye encima de Ready To Go: las secciones comunes ya existen y la empresa añade las de su sector.
Crea la sección
En FlexHub → Secciones, pulsa Nuevo, escribe el Título y pulsa Aceptar. En FlexHub → Inicio el botón se llama Nueva sección. El servidor crea la tabla y consolida el esquema, y la ventana de la sección nueva abre en General. Ver Crear una sección.
Añade los campos
Elige el formato de cada campo (texto, entero, decimal, fecha, relación) y, si hace falta, un rol que le ponga la máscara. Los campos se crean y se colocan en Diseñando la ficha. Qué formatos y qué roles hay: Campos.
Relaciona y consulta
Un campo de formato Relación apunta a otra sección. Un informe consulta la sección y sus relaciones; un script se ejecuta cuando cambia la ficha; un documento dinámico la imprime.
Crear un objeto consolida el esquema del inquilino: tarda unos 11 segundos y bloquea la estructura mientras dura. Una edición solo lo exige en las columnas que marca FlexEditableDTO.NeedsConsolidation. Ver FlexConsolidateDTO en el SDK y Consolidar ahora en FlexHub.
Desde dónde se trabaja con la estructura
| Vía | Qué hace | Dónde |
|---|---|---|
| FlexHub | Editar secciones, campos, informes, documentos, scripts y algoritmos desde Play. | FlexHub |
| SDK .NET | Los métodos Flex_GetObjectAsync, Flex_ListObjectsAsync, Flex_GetEditablesAsync, Flex_GetEnumAsync, Flex_CreateObjectAsync, Flex_UpdateObjectAsync, Flex_DeleteObjectAsync, Flex_UndeleteObjectAsync, Flex_ApplyLayoutAsync, Flex_SetQuestionsAsync, Flex_ValidateCodeAsync y Flex_ConsolidateAsync del cliente. | Cliente Dinaup |
| API REST | Ejecutar un informe (POST /api/reports) o un documento dinámico (POST /api/dynamicdocuments). No edita estructura. | Referencia de la API REST |
| Esquema | Leer secciones y campos tal como los publica el servidor. | Esquema |
| Paneles | Usar la estructura: los listados y fichas de Play. | Paneles |
Las opciones las publica el servidor. Los desplegables de FlexHub, los valores de un enum y las columnas que se pueden escribir salen de Flex_GetEditablesAsync y Flex_GetEnumAsync en tiempo de ejecución, no de una lista escrita en el cliente. Si una opción no aparece, el servidor de la empresa no la publica.
Siguiente: Secciones.