Este documento destaca todas las nuevas funcionalidades introducidas en 4D 21 LTS, cubriendo todo lo añadido desde 4D 20 R2 hasta 4D 21. Cada funcionalidad incluye enlaces directos a su entrada de blog para ejemplos prácticos y a la documentación para detalles técnicos completos.
Además, las secciones con la etiqueta New se centran específicamente en las novedades desde 4D 20 R10.
Este documento está dividido en diez secciones:
4D 21: SU MOTOR DE INTELIGENCIA ARTIFICIAL
4D 21 convierte a 4D en su propio motor de IA, ofreciendo un conjunto de herramientas de IA con todas las funciones, construido para aplicaciones comerciales del mundo real. Puede comunicarse con modelos alojados en la nube o localmente, generar y almacenar vectores, ejecutar búsquedas semánticas de forma nativa en ORDA, y conectar su lógica de negocio directamente a las conversaciones impulsadas por la IA, todo ello sin envolturas externas, procesos de parches o cambios arquitectónicos importantes.
La IA se convierte en una extensión natural de su código existente, tanto si su aplicación es nueva como si tiene décadas de antigüedad. Con soporte vectorial nativo, comunicación de modelos simplificada y herramientas para integrar comportamientos inteligentes en los flujos de trabajo diarios, 4D 21 hace que la integración de la IA sea sencilla, práctica y útil de inmediato.
Añada capacidades de IA con el componente inTEGRado 4D AIKit
4D AIKit es un componente 4D integrado que aporta capacidades compatibles con OpenAI directamente a su entorno 4D. Con sólo unas pocas líneas de código, puede automatizar procesos, enriquecer experiencias de usuario e integrar funciones inteligentes en la lógica de negocio sin salir de 4D.
AIKit incluye más de 30 clases diseñadas para soportar:
-
Generación de texto e interfaces basadas en chat
-
Etiquetado de imágenes, reconocimiento de objetos y análisis descriptivo
-
Transcripción de voz a texto
-
Generación visual a partir de prompts
-
Moderación de contenido textual
AIKit también permite flujos de trabajo avanzados que combinan modelos basados en la nube y alojados localmente. Puede crear herramientas de automatización de redes sociales, canalizaciones de contenidos con IA o experiencias de aprendizaje dinámico combinando el análisis de texto e imágenes en un único flujo.
SOPORTE VECTORIAL NATIVO PARA LA INTEGRACIÓN DE LA AI Y LA BÚSQUEDA SEMÁNTICA
Las funcionalidades inteligentes comienzan con un elemento fundamental: los vectores. Ya sea que esté construyendo búsqueda semántica, sistemas de recomendación, clasificación de documentos o agrupación de imágenes, los vectores son la estructura que representa el significado. Con 4D 21, los vectores se convierten en una parte nativa y de primera clase de la plataforma.
4D.Vector es una nueva clase integrada diseñada específicamente para almacenar y operar con integraciones de IA. Almacena datos numéricos de alta dimensión en un formato eficiente de memoria y soporta operaciones clave de similitud como similitud coseno, producto punto y distancia euclidiana directamente dentro de 4D. Esto hace que las consultas semánticas sean rápidas, precisas y totalmente integradas con su modelo de datos.
Puede almacenar vectores en su base de datos, utilizarlos en atributos de tipo clase y crear funcionalidades que ordenen, comparen o agrupen datos basándose en el significado y no en coincidencias exactas. Es la columna vertebral de los modernos flujos de trabajo basados en IA, ahora nativos en 4D.
Para complementar esto, 4D AIKit introduce la generación nativa de vectores a través de la API de integración de OpenAI. El nuevo método OpenAIEmbeddingsAPI.create() transforma cadenas o colecciones en instancias 4D.Vector en una sola llamada, sin manipulación de tokens, sin plomería HTTP, sin análisis JSON. Una vez generados, los vectores fluyen sin problemas en la puntuación de similitud, el filtrado semántico, los sistemas de clasificación o las consultas ORDA.
4D.Vector + AIKit embeddings ofrecen un pipeline completo para la inteligencia semántica:
- Generar incrustaciones
- Almacenarlas eficientemente
- Compararlas y puntuarlas de forma nativa
- Ejecute consultas semánticas directamente en 4D.
Es una arquitectura preparada para la IA, integrada al lenguaje y a la capa de datos.
CONSULTAS SEMÁNTICAS New
Ahora puede integrar la búsqueda semántica directamente en sus consultas ORDA. En lugar de depender de procesos separados, puede comparar el campo vectorial de un registro con un vector de referencia y devolver al instante los resultados más relevantes, todo dentro de la misma gramática ORDA que ya utiliza.
La consulta acepta un simple objeto parámetro con un vector requerido y atributos opcionales como la similitud metric (que por defecto es coseno) y una similitud threshold.
// Step 1: Define the kind of profile you want to match semantically
$searchText:="senior project manager with strong HR background, based in France"
// Step 2: Create an AI client (local baseURL optional)
$client:=cs.AIKit.OpenAI.new("YourApiKey")
$client.baseURL:="http://127.0.0.1:1234/v1"
// Step 3: Generate an embedding vector for the search text
$embedResult:=$client.embeddings.create($searchText; "text-embedding-mxbai-embed-large-v1")
$semanticVector:=$embedResult.vector
// Step 4: Build the semantic query object with similarity options
$semanticQuery:={vector: $semanticVector; metric: "cosine"; threshold: 0.4}
// Step 5: Run the query — combine semantic match with traditional filter
$results:=ds.Profiles.query("yearsOfExperience >= 5 & expertise >= :1"; $semanticQuery)
Las condiciones vectoriales se combinan a la perfección con la lógica ORDA clásica, por lo que puede combinar la similitud semántica con los filtros tradicionales en una sola consulta. Ajustando el umbral, los resultados pueden pasar de ser amplios y ruidosos a estrechos y precisos, ofreciéndole resultados significativos y conscientes del contexto sin añadir complejidad. Todo el proceso se mantiene dentro de la gramática ORDA que ya conoce, manteniendo sus consultas limpias, expresivas y fáciles de mantener.
formatoS de Llamada y DE respuesta a las herramientas DE Ia New
La llamada a herramientas de IA y los formatos de respuesta estructurados amplían 4D AIKit con la capacidad de integrar funciones específicas de negocio directamente en conversaciones impulsadas por IA. La llamada a herramientas le permite exponer funcionalidades seleccionadas de su aplicación, como «listar categorías de productos disponibles» u «obtener los productos más vendidos«, como herramientas a las que se puede llamar. Cuando un modelo de IA determina que se necesita una herramienta, 4D AIKit dirige automáticamente la llamada a sus funciones 4D registradas e integra el resultado en la respuesta. Esto evita la necesidad de cargar o volver a entrenar grandes conjuntos de datos, al tiempo que permite a la IA responder a las consultas de los usuarios con datos en vivo y específicos de la aplicación. En la práctica, esto significa que puede incrustar un asistente de chat en su aplicación, y cuando un usuario pregunta: «¿Cuáles son los 10 productos más vendidos por categoría?», el modelo puede llamar a sus funciones, recuperar datos reales del negocio y devolver la respuesta en lenguaje natural.
Además, 4D AIKit ahora soporta formatos de respuesta estructurados, lo que hace que la integración con los procesos posteriores sea más fiable. Además de texto plano, las respuestas pueden ser solicitadas como objetos JSON estrictos o forzadas a cumplir con un esquema JSON que usted defina. Esto resulta especialmente útil cuando es necesario transformar las entradas no estructuradas de los usuarios en datos predecibles, o cuando el contenido generado por IA debe fluir en flujos de trabajo automatizados sin limpieza manual.
En conjunto, las consultas semánticas, la llamada a herramientas y los formatos de respuesta estructurados hacen que la IA en 4D no sea sólo una capa conversacional, sino un componente del sistema totalmente integrado, capaz de recuperar datos empresariales relevantes, aplicar la lógica de forma segura dentro de su aplicación y ofrecer resultados estructurados que se adaptan perfectamente a sus flujos de trabajo. Y ahora, con AIKit de código abierto, obtendrá una visibilidad completa y la capacidad de darle forma, ampliarlo y hacerlo evolucionar en función de sus propias necesidades comerciales.
RED
4D 21 redefine la capa de red con una base moderna y orientada al rendimiento construida para las expectativas de conectividad de hoy en día. Tanto si ejecuta cargas de trabajo cliente/servidor de alta latencia, como si cambia de red a mitad de sesión, integra dispositivos sobre TCP o UDP u optimiza llamadas HTTP repetidas, toda la pila está diseñada para ofrecer conexiones más rápidas, una mayor resistencia y un control más estricto. QUIC se convierte en el protocolo de transporte recomendado para sesiones remotas más fluidas y de baja latencia, TCP obtiene API asíncronas con TLS y gestión precisa del tiempo de espera, UDP llega con una nueva API de socket basada en eventos y las solicitudes HTTP se benefician de la gestión de conexión persistente a través de agentes dedicados. Juntas, estas mejoras aportan velocidad, estabilidad y flexibilidad a todas las capas de comunicación de red de su aplicación.
QUIC: CONECTIVIDAD CLIENTE/SERVIDOR MÁS RESISTENTE
QUIC es una moderna capa de red diseñada para hacer que las conexiones Cliente/Servidor 4D sean más resistentes y confiables, especialmente cuando la calidad de la red varía. Con 4D 21, puede habilitar QUIC directamente desde los ajustes de estructura, usuario o base de datos, incluso en aplicaciones compiladas, lo que facilita las pruebas y el despliegue sin necesidad de reconstruir.
En cargas de trabajo reales, QUIC ofrece mejor rendimiento que ServerNet y maneja mejor las conexiones inestables o de alta latencia. Esto se traduce en interacciones más rápidas para los usuarios, un trabajo más fluido en redes Wi-Fi o móviles y una experiencia más resistente en general.
ServerNet sigue siendo compatible, pero QUIC es ahora la opción recomendada para los nuevos despliegues que pretendan beneficiarse de los estándares de transporte de Internet actuales. Antes de migrar un entorno existente, asegúrese de que su infraestructura soporta UDP, ya que algunas redes lo restringen.
Conmutación de red sin fisuras con QUIC New
Con QUIC, el cambio entre interfaces de red ya no interrumpe su conexión 4D Remote. Tanto si pasa de Ethernet a Wi-Fi, cambia de adaptador o activa un portátil en una red diferente, el cliente restablece automáticamente su sesión con 4D Server y continúa la ejecución sin pérdida de datos. QUIC permite reconexiones rápidas y resistentes en condiciones de red cambiantes, haciendo que la experiencia sea fluida incluso en entornos móviles o inestables.
Su flujo de trabajo permanece intacto: el contexto de ejecución se conserva y los procesos se reanudan exactamente donde quedaron. Del lado del servidor, la dirección IP del cliente se actualiza en tiempo real en el cuadro de diálogo de administración, los registros de diagnóstico y los atributos de sesión, lo que ofrece a los administradores una visibilidad completa. Esto hace que 4D Remote sea significativamente más robusto cuando las condiciones de la red cambian con frecuencia.
REDES TCP MODERNAS Y SEGURAS (CLIENTES, SERVIDORES Y TLS)
4D 21 ofrece una pila de red TCP completa y moderna que reemplaza los antiguos comandos de Internet de 4D con un enfoque más rápido, más limpio y totalmente asíncrono.
La clase TCPConnection maneja la comunicación del lado del cliente con una API orientada a objetos y retrollamadas como onConnection, onData, onShutdown y onError. Puede enviar blobs o texto, reaccionar a los eventos a medida que se producen, y conectarse a dispositivos externos, servicios o protocolos personalizados con facilidad.
La clase TCPListener añade la parte del servidor. Le permite escuchar en un puerto, aceptar o rechazar conexiones entrantes, y entregar cada cliente aceptado a una instancia dedicada de TCPConnection. Esto le da un modelo consistente para construir servicios ligeros o pasarelas de dispositivos directamente en 4D.
Para asegurar todo, las conexiones TCP ahora soportan encriptación nativa TLS/SSL. Activando el atributo TLS en el nuevo parámetro options de 4D.TCPConnection.new(), se establecen sesiones cifradas automáticamente, con TLS 1.3 como protocolo por defecto. Los puertos estándar y seguros pueden ejecutarse en paralelo, y la comunicación cifrada comienza en cuanto finaliza el apretón de manos.
Las conexiones TCP también disponen de una propiedad .connectionTimeout, que permite controlar directamente el tiempo de espera antes de abandonar una conexión bloqueada o que no responde. Esto permite ajustar los umbrales de latencia, fallar rápidamente en condiciones de red deficientes y evitar que la interfaz de usuario se bloquee o las esperas interminables.
En conjunto, estas funcionalidades ofrecen una base moderna, flexible y segura para implementar protocolos TCP personalizados y construir soluciones de red cliente y servidor completamente en 4D.
NUEVOS COMANDOS UDP
La nueva clase 4D.UDPSocket ofrece a los desarrolladores un control total sobre la comunicación en tiempo real basada en eventos utilizando el protocolo UDP. Admite los modos cliente y servidor y está optimizada para la transmisión rápida de datos sin conexión en casos de uso como la mensajería IoT, la supervisión de dispositivos en tiempo real o la señalización interna.
Esta clase está totalmente orientada a eventos y admite retrollamadas como onData, onError y onTerminate. Los desarrolladores pueden emitir y recibir paquetes utilizando send(), analizar los metadatos de los paquetes a través de 4D.UDPEvent, y registrar el tráfico en el archivo unificado 4DTCPUDPLog.txt.
La clase UDPSocket, compatible con subprocesos preferentes, se ejecuta de forma eficiente en entornos de alta concurrencia y sustituye al antiguo plugin Internet Commands por una alternativa moderna y orientada a objetos.
OPTIMICE SUS CONEXIONES HTTP CON LOS AGENTES HTTP
4D 21 introduce los agentes HTTP, dándole más control sobre cómo su aplicación se conecta a los servidores HTTP. Los agentes gestionan la persistencia y reutilización de las conexiones, evitando la sobrecarga de renegociar una nueva conexión, especialmente TLS/SSL, para cada petición.
Por defecto, todos los comandos de HTTPRequest utilizan ahora un agente integrado que mantiene vivas las conexiones. Cuando necesite más control, puede crear su propio agente para afinar comportamientos como:
-
la gestión keep-alive
-
el número máximo de conexiones simultáneas
-
los tiempos de espera de conexión
-
la configuración TLS/SSL a nivel del agente
Utilizar un agente es sencillo, lo crea una vez y lo pasa a través de sus opciones de demanda. Dado que HTTPAgent es un objeto compartido, también puede mantener un único agente para todas las peticiones al mismo servidor, o incluso reutilizarlo en varios servidores, manteniendo cada uno su propio pool de conexiones.
Los agentes HTTP hacen que las llamadas repetidas sean más rápidas, predecibles y fáciles de gestionar, especialmente en aplicaciones que interactúan mucho con API externas.
ORDA
4D 21 amplía ORDA con un control más profundo del ciclo de vida y un manejo de datos más refinado, permitiendo a los desarrolladores construir una lógica de negocio más limpia y autónoma. Con los nuevos eventos de ciclo de vida, soporte de constructores, filtrado de entidades más inteligente y funciones de limpieza de memoria, la capa de datos se convierte no sólo en un sistema de almacenamiento, sino en un motor de respuesta basado en reglas integrado directamente en su modelo.
MODELO COMPLETO DE EVENTOS DE CICLO DE VIDA DE LAs ENTIDADes New
4D 21 introduce un modelo de ciclo de vida completo y unificado para las entidades ORDA, dándole un control total sobre cómo se comportan los datos desde su creación hasta su eliminación. En lugar de dispersar las reglas a través de formularios, APIs o disparadores, ahora usted define toda su lógica de negocio directamente dentro de sus clases de datos: más limpio, centralizado y fácil de mantener.
Este ciclo de vida comienza en el momento en que se crea una entidad. Los constructores de entidades le permiten asignar valores por defecto, inicializar la lógica específica del contexto (como el usuario o la sesión actual) o llenar automáticamente los atributos. En cuanto se modifica una entidad en memoria, el evento onTouch reacciona a esos cambios en tiempo real, lo que facilita la normalización de valores, la aplicación de reglas o la preparación de actualizaciones dependientes antes de que comience cualquier operación de guardado.
Cuando se guarda una entidad, 4D 21 ejecuta ahora una secuencia de tres fases: validateSave, saving, y afterSave. Esto le permite bloquear las operaciones no válidas, aplicar la lógica de negocio mientras se está guardando y lanzar acciones de seguimiento una vez que la operación se ha completado. La misma secuencia de tres fases existe para las eliminaciones con validateDrop, dropping, y afterDrop, lo que le permite evitar eliminaciones no autorizadas, limpiar los datos relacionados y ejecutar la lógica posterior a la eliminación de forma coherente.
Todos los eventos están disponibles tanto a nivel de entidad como de atributo. Los eventos de validación pueden bloquear operaciones cuando no se cumplen las reglas, mientras que los post-eventos siempre se ejecutan, incluso si la operación falla, garantizando un comportamiento fiable y predecible en todo el modelo.
Al consolidar esta lógica dentro de sus clases de datos ORDA, el comportamiento de la entidad se vuelve predecible, autónomo y consistente en toda su aplicación. Las reglas de negocio ya no están ocultas en triggers. Los sistemas externos pueden integrarse limpiamente a través de ganchos de eventos nativos. Y en los proyectos basados en ORDA, los triggers tradicionales ya no son necesarios, los eventos del ciclo de vida ofrecen toda la potencia de ORDA en una arquitectura más limpia y fácil de mantener.
Restringir los datos en las selecciones de entidades
Controlar quién ve qué datos es fundamental en las aplicaciones empresariales, y ahora puede definir esas reglas una vez, de forma limpia y directamente en su modelo de datos.
Mientras que el sistema de permisos existente en 4D controla si los usuarios pueden acceder a toda una clase de datos, la nueva función restrict() introducida en 4D 21 refina aún más ese acceso. Le permite aplicar filtros contextuales en selecciones de entidades basadas en valores de sesión, roles de usuario o cualquier otra lógica de tiempo de ejecución.
En lugar de aplicar filtros manualmente a través de su código, usted los define una vez dentro de la clase de datos utilizando la función restrict(). Por ejemplo, un vendedor podría limitarse a ver sólo los clientes que gestiona, mientras que los administradores seguirían viendo el conjunto de datos completo, todo ello determinado automáticamente durante cada operación de lectura como query() o all().
Este enfoque centralizado no sólo refuerza la seguridad, sino que también mantiene la lógica limpia y coherente tanto en contextos web como cliente-servidor.
SELECCIONES DE ENTIDADES LIMPIA CON ELIMINACIÓN AUTOMÁTICA DE espacios
Cuando los usuarios eliminan entidades de una selección, la interfaz suele quedar abarrotada de marcadores de posición vacíos. Esto rompe el flujo, añade fricción y hace que su interfaz de usuario parezca menos sensible.
Con 4D 21, la nueva función clean() resuelve este problema en una sola línea. Después de realizar un drop, basta con llamar a .clean() sobre la selección de entidades para eliminar automáticamente los huecos dejados por las entidades eliminadas. Es fluido, eficiente y restaura una vista pulida e ininterrumpida sin necesidad de reconstrucción manual.
Este pequeño añadido se traduce en una gran mejora de la calidad de la interfaz y de la experiencia del usuario. Y no se limita a la interfaz de usuario: la API REST de $entityset también admite el parámetro clean, que permite que las respuestas de la API devuelvan datos limpios y sin espacios incluso después de una eliminación.
Tanto si desarrolla una interfaz de escritorio como si trabaja con clientes web, esta función mantiene sus vistas de datos ordenadas y las interacciones con el usuario fluidas.
4D Qodly Pro
4D Qodly Pro le permite ampliar su aplicación con modernas interfaces basadas en navegador, todo ello sin escribir una sola línea de HTML o JavaScript. Con un editor visual de arrastrar y soltar, puede construir formularios web reactivos y conectarlos directamente a su lógica de negocio 4D.
Las páginas Qodly pueden ser integradas directamente en formularios 4D clásicos usando un área Web. Desde el punto de vista del usuario, todo se siente como una interfaz única y unificada. No hay necesidad de ventanas separadas o licencias adicionales. La página Qodly integrada comparte la misma sesión y licencia que el cliente 4D Remote, manteniendo la experiencia transparente y sin costo adicional.
Si quiere ver lo rápido que esto funciona en la práctica, puede ver la repetición del webinario oficial de 4D Qodly Pro, un tutorial de cómo añadir formularios basados en navegador a una aplicación 4D real.
CONSTRUIR INTERFACES WEB MODERNAS SIN REESCRIBIR SU APLICACIÓN
4D Qodly Pro le permite crear interfaces modernas basadas en un navegador directamente sobre su aplicación 4D existente, sin necesidad de aprender frameworks web, reescribir la lógica o gestionar bases de código separadas. Usted diseña páginas visualmente, enlaza datos visualmente, asegura el acceso visualmente, y expone APIs visualmente, todo mientras permanece dentro de su flujo de trabajo 4D familiar. El resultado es un camino más rápido a la web con menos código, menos complejidad y sin desconexión entre su interfaz de usuario y su lógica de negocio.
-
Extienda o traslade sus aplicaciones de escritorio a la web sin reestructurar su arquitectura: las páginas Qodly se asienta sobre el modelo ORDA y las clases de servidor existentes. Su lógica, base de datos y reglas de seguridad permanecen exactamente donde están.
-
Construya interfaces reactivas visualmente utilizando los componentes reutilizables: arrastre los componentes al canvas, configúrelos a través de paneles laterales y enlácelos a qodlysources sin código. Los componentes elaborados y las plantillas listas le permiten montar pantallas rápidamente con un estilo coherente.
-
Acelere el desarrollo eliminando la complejidad del frontend: la vinculación de datos, el formato, los estados condicionales, los eventos y la navegación son visuales. No se requiere HTML, CSS o JavaScript, sólo la lógica 4D y los paneles de Qodly Studio.
-
Utilice la licencia 4D Client que ya tiene: cuando una Página Qodly está integrada en un área Web de un cliente 4D Remoto, se ejecuta bajo la misma sesión y licencia. Los usuarios ven una interfaz unificada, y el despliegue sigue siendo sencillo y rentable.
-
Mantenga a los equipos productivos con una experiencia familiar de arrastrar y soltar: Qodly Studio sigue el modelo del editor de formularios de 4D, lo que facilita a los nuevos desarrolladores unirse al proyecto y a los equipos experimentados de 4D trabajar más rápido.
-
El diseño, la lógica y los datos viven en el mismo entorno: Qodly Studio maneja el diseño, Qodly Pages define la estructura, y sus reglas de negocio se sientan en sus clases. Nada se dispersa a través de archivos externos o marcos desconectados.
-
Construya visualmente un comportamiento dinámico: los estados condicionales y no condicionales permiten que las páginas se adapten a los roles de los usuarios, a los cambios de datos o a las interacciones de la interfaz de usuario, todo ello configurado a través de paneles guiados. Podrá ver exactamente cuándo y por qué aparecen, cambian o reaccionan los elementos.
-
Defina funciones, privilegios y reglas de acceso de forma visual: una interfaz específica le permite crear jerarquías de roles, asignar privilegios y revisar los permisos finales de un vistazo. Precisa quién puede leer, actualizar, eliminar o ejecutar cada parte de su aplicación.
-
Exponga la lógica del servidor como gestores HTTP sencillos y visuales: usted escoge una clase, elige un método, define un modelo de URL, y Qodly se encarga del enrutamiento. Es una manera fácil de publicar APIs o integrar sistemas externos sin capas o frameworks adicionales.
-
Depure páginas directamente en su servidor 4D: puede previsualizar los cambios en la interfaz de usuario al instante, inspeccionar qodlysources y utilizar el depurador 4D dentro de Qodly Pro – ejecutando exactamente donde se ejecuta la lógica.
Componentes personalizados: Extienda Qodly con sus propios bloques de construcción
4D Qodly Pro también soporta componentes personalizados, dándole una manera de ampliar la interfaz de usuario cuando se necesita algo más allá del conjunto de herramientas integradas.
-
Añada nuevas capacidades con sus propios componentes React: los widgets complejos, las visualizaciones especializadas o las interacciones únicas se pueden construir como componentes React y cargar directamente en Qodly Studio.
-
Reutilizarlos a través de proyectos o compartirlos dentro de la comunidad: los componentes personalizados se comportan como componentes nativos una vez instalados, arrastrar y soltar, vincular datos, aplicar estilos y desencadenar eventos exactamente de la misma manera.
-
Desarrollo eficiente: en lugar de volver a crear una interfaz de usuario especializada cada vez, instale un componente una vez y utilícelo en todas partes.
-
Se integra perfectamente con el resto de la interfaz de usuario: usted controla la apariencia, el comportamiento y la integración, mientras que Qodly garantiza que los componentes se ejecuten de manera eficiente dentro de su tiempo de ejecución.
Y con una comunidad activa que comparte continuamente componentes personalizados, puede enriquecer su caja de herramientas sin tener que construirlo todo usted mismo.
Configuración automática de Qodly Studio New
Al iniciar Qodly Studio por primera vez desde el modo Diseño 4D, se activa un asistente de configuración automática. Todos los parámetros requeridos: activación del servidor REST, sesiones escalables, puertos del servidor web, se detectan y se presentan con un aviso para activarlos.
Si se acepta, los servicios se reinician según sea necesario y Qodly Studio se abre en el navegador. Si se rechaza, no se produce ningún cambio. El flujo de trabajo es fluido, rápido y sin intervención por parte de los nuevos usuarios.
Sesiones compartidas e interacciones entre aplicaciones cliente/servidor y 4D Qodly Pro New
Cuando una página Qodly se muestra en un área Web de un cliente 4D Remote, se ejecuta bajo la misma sesión y licencia. Esto significa que no se consume ninguna licencia extra, y que el mismo contexto de sesión fluye sin problemas entre el formulario de escritorio y la página 4D Qodly Pro.
La autenticación y los privilegios se conservan automáticamente, y los datos de sesión se pueden pasar para inicializar la página web con el contexto del escritorio, por ejemplo, mostrando detalles de la entidad actualmente seleccionada.
Además de compartir la sesión, las acciones de 4D Qodly Pro permiten una interacción bidireccional directa entre los formularios 4D y las páginas 4D Qodly Pro. Desde una página Qodly, los desarrolladores pueden llamar funciones 4D a través del objeto $4d, previamente inicializado con el comando WA SET CONTEXT. A la inversa, un formulario 4D puede actualizar las Fuentes Qodly directamente, asegurando un estado y lógica sincronizados en ambos entornos.
Juntas, estas mejoras facilitan la combinación de formularios 4D clásicos con páginas Qodly modernas en una única aplicación, unificando sesiones, interacciones y contexto a la vez que se evitan inicios de sesión redundantes, licencias adicionales o trabajo de integración complejo.
Internacionalización integrada (i18n) New
4D Qodly Pro incluye internacionalización integrada (i18n), para que sus aplicaciones puedan adaptarse sin problemas a múltiples idiomas y configuraciones regionales.
Los idiomas soportados se definen como locales en la nueva sección de Localización, donde las claves de traducción y los valores pueden ser gestionados y vinculados a los componentes. La elección del idioma se realiza a través de la fuente Qodly integrada a UserLanguage, que aplica la selección del usuario en tiempo real.
Los retrocesos automáticos cubren los datos de sesión, los valores predeterminados del navegador o una configuración regional primaria, mientras que la compatibilidad nativa de derecha a izquierda (RTL) hace que idiomas como el árabe resulten naturales. Al cambiar de idioma, el contenido se actualiza al instante, creando una experiencia fluida y personalizada.
Esto le permite expandirse a nuevos mercados, reducir la fricción de la integración y reforzar la confianza del usuario sin rediseñar su interfaz de usuario ni añadir complejidad. Ya se trate de un lanzamiento local o global, su producto estará listo para hablar el idioma de sus usuarios.
Informe de eventos de la Página Qodly New
El informe de eventos ofrece una visión clara y unificada de todos los eventos de su página, ya procedan de acciones estándar, acciones de navegación, funciones de clase o acciones de diálogo. Muestra qué eventos se declaran, dónde se implementan y el orden exacto en que se ejecutan.
Al hacer transparente el flujo de eventos, acelera la depuración, descubre al instante solapamientos o controladores que faltan y facilita la optimización. Los equipos pueden colaborar más fácilmente, y usted gana confianza sabiendo exactamente cómo se comporta su página.
Es una forma sencilla de aportar claridad, precisión y eficacia a la gestión de eventos, tanto si está creando una pequeña aplicación como una solución a gran escala.
CONTROLES DE ZOOM DEL CANVAS New
El editor de páginas 4D Qodly Pro incluye controles de zoom en el canvas para facilitar el trabajo con diseños complejos. Los desarrolladores ahora pueden acercar, alejar o restablecer la vista directamente desde la barra de herramientas, con soporte para atajos de teclado y navegación con la rueda del ratón.
El nivel de zoom actual se muestra en la interfaz, lo que ofrece a los desarrolladores un control preciso sobre la forma de ver y organizar los componentes en el lienzo.
Estas mejoras mejoran la navegación, la precisión del diseño y la usabilidad general, alineando el editor de páginas con los estándares de las modernas herramientas de diseño visual.
BASE DE DATOS
4D 21 refuerza las bases de su modelo de datos con funcionalidades que aportan más estructura, más fiabilidad y mejor rendimiento a escala. Ahora puede asignar clases directamente a los campos de objetos para garantizar la validación de la forma y de los modelos tipados más seguros. Las selecciones de registros se mantienen coherentes incluso cuando los datos cambian en segundo plano, lo que garantiza resultados estables en operaciones de larga duración. Y con la nueva compatibilidad con UUID v7, los identificadores se ordenan en el tiempo y se indexan fácilmente, lo que facilita la clasificación de grandes conjuntos de datos y agiliza las consultas en sistemas distribuidos.
CAMPOS DE OBJETO DE TIPO CLASE EN EL EDITOR DE ESTRUCTURAS
En el editor de estructuras, los campos de objetos pueden asignarse ahora a una clase específica. No se trata sólo de metadatos, sino de un contrato que 4D aplica a varios niveles.
Asigne una clase de usuarios a un campo de objeto y obtendrá:
-
Autocompletado a nivel de la propiedad
-
Verificación de sintaxis en tiempo de compilación
-
Validación de la forma del objeto en tiempo de ejecución
Si el objeto no coincide con la clase declarada, 4D emite un error. La estructura se convierte en esquema, sus datos permanecen limpios, y cuando se combina con 4D.Vector, la definición de un atributo vectorial tipado dentro de su clase significa que cada entidad lleva su propia huella semántica, lista para la evaluación de similitud, la clasificación impulsada por IA o las recomendaciones inteligentes.
ASEGURE LA COHERENCIA EN LA SELECCIÓN DE REGISTROS
4D 21 refuerza la fiabilidad de los datos garantizando que las selecciones de registros permanezcan estables incluso cuando se eliminan registros y se crean otros nuevos en segundo plano.
En versiones anteriores, la eliminación de un registro podía liberar un espacio interno que más tarde podría ser reutilizado por un registro recién creado, haciendo que una selección existente incluyera inesperadamente datos que no coincidían con los criterios originales.
Ahora, una vez que se crea una selección, ésta permanece consistente durante toda su vida útil. Los registros eliminados simplemente desaparecen de la selección, y los registros recién creados nunca se cuelan en ella. Esto se aplica tanto a las selecciones clásicas QUERY como a las selecciones de entidades ORDA.
Con esta actualización, los bucles, las fusiones de correo, las tareas en segundo plano y las selecciones de larga duración se comportan exactamente como se pretendía, sin sorpresas, sin verificaciones adicionales, sólo resultados fiables.
COMPATIBILIDAD CON UUIDS V7
La generación de UUID es ahora más inteligente. Generate UUID admite ahora identificadores de la versión 7. Esto significa que sus UUID no sólo son universalmente únicos, sino que también se pueden ordenar cronológicamente, son compatibles con bases de datos y están diseñados para sistemas distribuidos modernos.
Internamente, los UUID de la versión 7 integran datos de fecha y hora, lo que los hace ideales para el almacenamiento ordenado y más fáciles de indexar. Se trata de un pequeño cambio con un enorme impacto en la escala y el rendimiento de las consultas.
Componente 4D
4D 21 aporta dos grandes avances al desarrollo de componentes: un gestor de dependencias totalmente moderno y una edición de componentes en el proyecto sin fisuras. Puede cargar «sólo lo que necesita» con la gestión opcional de componentes, extraer componentes directamente de GitHub, mantener todo alineado automáticamente con su versión 4D, y confiar en 4D para resolver dependencias recursivas y evitar conflictos. Al mismo tiempo, puede ver, editar y depurar el código de los componentes directamente dentro de su proyecto anfitrión, haciendo que el desarrollo basado en componentes sea más rápido, más limpio y mucho más fácil de mantener. Juntos, estos cambios crean un flujo de trabajo optimizado y predecible para crear, compartir y escalar componentes entre equipos y proyectos.
PERFECTA INTEGRACIÓN DE COMPONENTES EN EL PROYECTO New
El desarrollo de componentes en 4D ha dado un gran paso adelante. Los métodos y clases de un componente, compartido o no, ahora pueden verse y editarse directamente en el proyecto anfitrión, sin tener que abrir el componente por separado o interrumpir el enfoque durante el desarrollo. Ahora todos los métodos pueden editarse en el acto, y pueden crearse componentes enteros desde la interfaz de usuario del host, inicializarlos con el espacio de nombres, los archivos y la estructura y, a continuación, editarlos inmediatamente en modo interpretado.
Más allá del código, la visibilidad se ha ampliado para incluir formularios de sólo lectura, carpetas, constantes, comandos, plug-ins e incluso una papelera específica para cada componente. Las constantes mantienen el vínculo con sus componentes de origen, lo que garantiza la coherencia en toda la aplicación, mientras que los nuevos flujos de creación conectan automáticamente las dependencias y establecen la estructura para los modos gestionado y heredado.
Todo ello agiliza la iteración de componentes, facilita la modularización y hace que los proyectos sean más limpios y transparentes. Se trata de un hito importante en el acercamiento de los componentes al flujo de trabajo del proyecto anfitrión.
GESTIÓN OPCIONAL DE los COMPONENTES New
4D 21 ya no incluye componentes 4D estándar. En su lugar, usted declara sus necesidades a través del diálogo Add Dependency, y 4D los obtiene e instala automáticamente bajo demanda. Desde ahí, puede acceder directamente al catálogo completo de componentes 4D, incluyendo 4D AI Kit, 4D NetKit, 4D View Pro, SVG, y más, todos publicados como código abierto en GitHub. Esto le da la flexibilidad de instalar sólo lo que necesita, mientras que también hace que sea más fácil explorar el interior de los componentes, contribuir con mejoras, y alinear sus proyectos con las necesidades cambiantes.
-
Dependencias específicas: sólo se instalan los componentes necesarios.
-
Alineación de versiones: las dependencias siguen su versión actual de 4D por defecto, asegurando la compatibilidad sin verificaciones manuales.
Al actualizar a 4D 21, los proyectos existentes pueden descargar automáticamente los componentes requeridos, mientras que las bases de datos binarias continúan accediendo a ellos a través del instalador o del portal de descargas.
AutomatiZAR la compatibilidad de dependencias con Follow 4D Version
La regla Follow 4D version simplifica la gestión de dependencias sincronizando automáticamente sus dependencias con su entorno 4D. Esto reduce los problemas de compatibilidad y le ahorra tiempo.
- Compatibilidad automática: las dependencias se alinean con su versión 4D, sin necesidad de seguimiento manual.
- Actualizaciones y retrogradaciones sin esfuerzo: las dependencias se actualizan automáticamente al actualizar o retrogradar 4D.
- Resolución fiable de dependencias: el sistema resuelve las dependencias basándose en convenciones estructuradas de nomenclatura de etiquetas para versiones LTS y R.
INTEGRACIÓN DE COMPONENTES GITHUB-NATIVE Y CONTROL DE DEPENDENCIAS
La integración de componentes en 4D 21 está diseñada para la forma en la que se desarrolla actualmente. Los equipos comparten código. Las bibliotecas internas evolucionan. Los componentes públicos mejoran. Y todo se mueve a través de GitHub. El nuevo sistema de dependencias conecta su proyecto directamente con esos repositorios para que los componentes se instalen, actualicen y se mantengan alineados con su fuente sin ninguna manipulación manual.
Una vez que se hace referencia a un componente, 4D lo extrae directamente de GitHub y aplica reglas semánticas de versión para que pueda decidir exactamente cómo de estricta o vagamente desea realizar un seguimiento de las actualizaciones. Puede congelar una versión cuando la estabilidad es importante, mantenerse dentro de un rango seguro cuando desea actualizaciones controladas, o seguir la última versión cuando está iterando rápidamente. Cuando una nueva versión está disponible en GitHub, 4D la destaca inmediatamente para que pueda actualizar un solo componente o todo el conjunto en un solo paso.
Los repositorios privados encajan perfectamente. Usted añade un token una vez, y 4D se encarga del resto, obteniendo los componentes internos tan fácilmente como los públicos.
Esto crea un flujo limpio y predecible. Cada componente es trazable. Cada actualización es intencional. Cada dependencia permanece conectada al código base que la define. La adopción se hace más fácil, el mantenimiento se aligera y compartir código entre equipos se convierte en una parte natural de su flujo de trabajo.
RESOLUCIÓN Y GESTIÓN RECURSIVA DE DEPENDENCIAS
El Gestor de componentes comprende ahora el árbol completo. Una vez que un componente está dentro de su proyecto, 4D analiza cada dependencia de la que depende, carga las necesarias automáticamente y comprueba los conflictos antes de que aparezcan.
La carga recursiva garantiza que nunca falten subdependencias. Los rangos de versiones se resuelven de forma inteligente para que múltiples componentes puedan depender de la misma librería sin romper la compilación. Y si aparece un ciclo, 4D lo bloquea de raíz para mantener estable su proyecto.
Usted obtiene una clara visibilidad de la estructura: dependencias declaradas, indirectas y exactamente qué componente requiere qué. Cada adición, actualización o eliminación se propaga a través del árbol para que su proyecto se mantenga coherente sin necesidad de limpieza manual.
Añadir y eliminar componentes locales
La gestión de componentes locales en 4D 21 es ahora mucho más fluida y predecible. La interfaz de las dependencias del proyecto le ofrece un único lugar para añadir, eliminar y organizar componentes sin tocar el sistema de archivos o buscar en la configuración del proyecto.
Todo está controlado por dos archivos: dependencies.json, que centraliza todas las dependencias del proyecto para mantener la coherencia, y environment4d.json, que gestiona las rutas personalizables de los componentes. Cuando añade un componente local, 4D escribe la entrada correcta automáticamente. Si el componente vive en otro lugar, ambos archivos se actualizan para que el proyecto se abra limpiamente en cualquier máquina, en macOS o Windows. La eliminación de un componente sigue el mismo flujo, con avisos de confirmación para evitar roturas accidentales y limpieza automática para mantener su configuración estable.
Es necesario reiniciar para que cualquier cambio surta efecto, y 4D lo guía con notificaciones claras. Todo el proceso reduce la fricción, el tiempo de configuración y le ofrece un acceso más rápido y fiable a los componentes de los que depende.
UTILIzar las CLASES ENTRE COMPONENTES CON ESPACIOS DE NOMBRES DECLARADOS
4D 21 simplifica la interacción entre componentes. Cuando un componente declara un espacio de nombres, todas sus clases quedan automáticamente disponibles para cualquier otro componente del mismo proyecto.
Esto elimina la necesidad de configuraciones especiales o soluciones, sólo tiene que incluir los componentes que necesita, y puede utilizar directamente sus clases a través de cs.<namespace> en su código.
Este enfoque hace que el desarrollo basado en componentes sea más modular, predecible y fácil de mantener.
ESTRUCTURA DE LOS COMPONENTES ACTUALIZADA PARA LA NOTARIZACIÓN DE SILICON MACOS
4D 21 introduce una estructura de componentes rediseñada que se alinea con los requisitos de notarización de Apple para Macs basados en Silicon. Los componentes ahora siguen el mismo diseño que una aplicación 4D completa, lo que hace que la notarización sea más confiable y elimina los problemas estructurales que los desarrolladores enfrentaban con formatos anteriores.
Los metadatos se generan ahora automáticamente en el momento de la compilación. Los campos como CFBundleDisplayName, CFBundleShortVersionString, CFBundleVersion y la información de copyright se llenan directamente desde la configuración de compilación. Cuando se utiliza Build4D, estos valores provienen de su buildApp.4DSettings, por lo que los componentes se empaquetan correctamente sin configuración adicional.
Tenga en cuenta que la estructura actualizada no es compatible con versiones anteriores de 4D como 4D 20 R7 o 20 LTS. Los componentes construidos con 4D 20 R8 introdujeron esta nueva estructura y aún pueden cargar componentes antiguos, pero las versiones anteriores no pueden cargar componentes construidos utilizando la estructura actualizada.
4D NetKit y Mailing
4D NetKit ha pasado de ser un conjunto de utilitarios Microsoft 365 y Google a un marco de autenticación y comunicación más profundo. Le permite a su aplicación beneficiarse de una autenticación única vía Microsoft 365, y extiende esa capacidad con el soporte completo OpenID Connect, abriendo la puerta a una amplia gama de proveedores de identidad: Google, Okta, los sistemas IAM empresariales, cualquier cosa que hable el estándar.
El resultado es un entorno en el que los flujos de inicio de sesión, la gestión de tokens, las operaciones de correo electrónico y las integraciones de calendario ya no parecen sistemas externos añadidos desde el exterior. Pasan a formar parte de los cimientos de su aplicación: seguros, modernos y predecibles.
GESTIÓN COMPLETA DE MENSAJES Y ETIQUETAS GMAIL
La integración de Gmail en 4D 21 pasa de ser un simple punto de entrada «enviar un correo» a un buzón completo y programable. Una vez que su aplicación se autentica a través de OAuth 2.0, Gmail se comporta como otra capa de su lógica, no como un servicio remoto con el que tiene que luchar.
Todo comienza con el envío. Cree correos electrónicos estructurados y los envía a través de la API de Gmail, evitando la fragilidad de los relés SMTP y los protocolos heredados. Es limpio, predecible y seguro.
A partir de ahí, se abre la bandeja de entrada. Puede leerla, darle forma, reorganizarla y limpiarla, todo con la misma precisión que aplica a sus propias estructuras de datos.
Ahora puede
-
Recuperar la lista completa de etiquetas de Gmail, incluidas las etiquetas del sistema y las personalizadas.
-
Obtener ID de mensajes para cualquier etiqueta (Bandeja de entrada, Papelera, No leídos, carpetas).
-
Cargar el contenido completo del correo electrónico bajo demanda
-
Eliminar o tirar a la papelera mensajes en una sola llamada
-
Recuperar varios correos electrónicos a la vez, hasta 100 por solicitud
-
Asignar o eliminar etiquetas, incluidas combinaciones como Trabajo + IMPORTANTE
-
Crear, actualizar y eliminar etiquetas por programación
-
Obtenga metadatos de las etiquetas, como el recuento de mensajes no leídos y el total de mensajes.
Lo que esto le ofrece no es «acceso al correo electrónico», sino una automatización del correo electrónico.
CREAR Y GESTIONAR BORRADORES GMAIL
4D 21 le permite crear borradores de Gmail directamente dentro del buzón, colocándolos bajo cualquier etiqueta que elija sin enviar nada. Es una forma sencilla de mantener plantillas reutilizables exactamente donde pertenecen, en Gmail, listas para ser recuperadas, editadas y enviadas cuando el momento lo requiera.
Gracias a la API de Gmail, puede adjuntar un mensaje como borrador (con la etiqueta predeterminada BORRADOR o su propia etiqueta personalizada), volver a abrirlo más tarde, modificarlo y enviarlo a través del flujo estándar de Gmail. Una vez que un borrador ya no es necesario, puede eliminarlo limpiamente.
ACTUALIZAR LAS PROPIEDADES DEL CORREO DE MICROSOFT 365
4D 21 le ofrece un control directo sobre los mensajes de Microsoft 365, permitiéndole actualizar las propiedades de los correos recibidos o redactados a través de Office365.mail.update(). La solicitud de modificación del indicador isRead es lo que abrió la puerta, pero la funcionalidad va más allá.
A través de Microsoft Graph, puede ajustar atributos como el estado de lectura, las categorías o la importancia. Y cuando trabaja con borradores, puede incluso actualizar elementos más profundos como el asunto o el cuerpo. Es una forma limpia de mantener el estado del buzón sincronizado con sus flujos de trabajo, sin manipulación manual ni herramientas externas.
Usted decide cómo reacciona su aplicación: marcando un mensaje como procesado, etiquetándolo para su revisión, reclasificándolo en función de reglas de negocio o preparando un borrador de mensaje para completarlo más tarde. Todo queda bajo una API, un flujo de autenticación, un modelo coherente.
CONTEO MÁS RÁPIDO DE CORREOS NO LEÍDOS EN MÚLTIPLES BUZONES
Con 4D 21, comprobar el recuento de correos no leídos es mucho más eficiente. La función IMAPTransporter.getBoxList() puede ahora devolver las propiedades de los buzones y los recuentos de no leídos en una sola petición, lo que mejora significativamente los tiempos de respuesta.
Si desea una visión general de todos los buzones, incluyendo los recuentos de correos no leídos, totales y recientes, puede activar la opción «withBoxInfo» y recuperar todo a la vez: