Ce document présente toutes les nouvelles fonctionnalités introduites dans 4D 21 LTS, couvrant tout ce qui a été ajouté depuis 4D 20 R2 jusqu’à 4D 21. Chaque fonctionnalité comprend des liens directs vers son article de blog pour des exemples pratiques, ainsi que vers la documentation pour des détails techniques complets.
En outre, les sections portant la mention New se concentrent spécifiquement sur les nouveautés depuis 4D 20 R10.
Ce document est divisé en dix sections :
4D 21 : VOTRE MOTEUR D’IA
4D 21 transforme 4D en son propre moteur d’IA, offrant une boîte à outils d’IA complète conçue pour les applications commerciales du monde réel. Vous pouvez communiquer avec des modèles hébergés localement ou dans le cloud, générer et stocker des vecteurs, exécuter des recherches sémantiques nativement dans ORDA et connecter votre logique métier directement aux conversations pilotées par l’IA, le tout sans wrappers externes, processus de patchwork ou changements architecturaux majeurs.
L’IA devient une extension naturelle de votre code existant, que votre application soit toute nouvelle ou vieille de plusieurs dizaines d’années. Avec un support vectoriel natif, une communication de modèle rationalisée et des outils pour intégrer un comportement intelligent dans les flux de travail quotidiens, 4D 21 rend l’intégration de l’IA fluide, pratique et immédiatement utile.
Ajouter des capacités d’IA avec le composant intégré 4D AIKit
4D AIKit est un composant 4D intégré qui apporte des capacités compatibles avec OpenAI directement dans votre environnement 4D. Avec seulement quelques lignes de code, vous pouvez automatiser les processus, enrichir les expériences utilisateur et intégrer des fonctionnalités intelligentes dans la logique métier sans sortir de 4D.
AIKit comprend plus de 30 classes conçues pour prendre en charge :
-
La génération de texte et les interfaces basées sur le chat.
-
Le marquage d’images, la reconnaissance d’objets et l’analyse descriptive.
-
La transcription de la parole en texte
-
La génération visuelle à partir d’invites
-
La modération de contenu textuel.
AIKit permet également des flux de travail avancés qui mélangent à la fois des modèles basés sur le cloud et des modèles hébergés localement. Vous pouvez créer des outils d’automatisation des médias sociaux, des pipelines de contenu alimentés par l’IA ou des expériences d’apprentissage dynamique en combinant l’analyse de texte et d’image dans un seul flux.
PRISE EN CHARGE NATIVE DES VECTEURS POUR L’INTÉGRATION DE L’IA ET LA RECHERCHE SÉMANTIQUE
Les fonctionnalités intelligentes commencent par un élément fondamental : les vecteurs. Qu’il s’agisse de recherche sémantique, de systèmes de recommandation, de classification de documents ou de regroupement d’images, les vecteurs sont la structure qui représente le sens. Avec 4D 21, les vecteurs deviennent un élément natif et de première classe de la plateforme.
4D.Vector est une nouvelle classe intégrée, conçue spécifiquement pour stocker et exploiter les encastrements d’IA. Elle contient des données numériques de haute dimension dans un format efficace en termes de mémoire et prend en charge les principales opérations de similarité telles que la similarité en cosinus, le produit en points et la distance euclidienne directement au sein de 4D. Les requêtes sémantiques sont ainsi rapides, précises et totalement intégrées à votre modèle de données.
Vous pouvez stocker des vecteurs dans votre base de données, les utiliser dans des attributs de type classe et créer des fonctionnalités qui trient, comparent ou regroupent les données en fonction de leur signification plutôt que des correspondances exactes. C’est l’épine dorsale des flux de travail modernes alimentés par l’IA, qui est désormais native dans 4D.
En complément, 4D AIKit introduit la génération native de vecteurs via l’API d’intégration d’OpenAI. La nouvelle méthode OpenAIEmbeddingsAPI.create() transforme les chaînes ou les collections en instances 4D.Vector en un seul appel, sans manipulation de jeton, ni plomberie HTTP, ni analyse JSON. Une fois générés, les vecteurs sont intégrés de manière transparente dans les systèmes d’évaluation de la similarité, de filtrage sémantique, de classement ou dans les requêtes ORDA.
Ensemble, 4D.Vector + AIKit embeddings offrent un pipeline complet pour l’intelligence sémantique :
- Générer des embeddings
- Les stocker efficacement
- Les comparer et les évaluer nativement
- Exécuter des requêtes sémantiques directement dans 4D.
Il s’agit d’une architecture prête pour l’IA, intégrée au langage et à la couche de données.
REQUÊTES SÉMANTIQUES New
Vous pouvez désormais intégrer la recherche sémantique directement dans vos requêtes ORDA. Au lieu de dépendre de processus distincts, vous pouvez comparer le champ vectoriel d’un enregistrement à un vecteur de référence et renvoyer instantanément les résultats les plus pertinents, tout cela dans la même grammaire ORDA que vous utilisez déjà.
La requête accepte un simple objet paramètre avec un vector requis et des attributs facultatifs tels que la similarité metric (qui est par défaut un cosinus) et une similarité 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)
Lesconditions vectorielles s’intègrent parfaitement à la logique ORDA classique, de sorte que vous pouvez combiner la similarité sémantique et les filtres traditionnels dans une seule requête. En ajustant le seuil, les résultats peuvent passer de larges et bruyants à étroits et précis, vous donnant des résultats significatifs et adaptés au contexte sans ajouter de complexité. L’ensemble du processus reste dans le cadre de la grammaire ORDA que vous connaissez déjà, ce qui permet à vos requêtes d’être claires, expressives et faciles à maintenir.
Formats d’appel et de réponse pour les outils d’IA New
L’appel d’outils d’IA et les formats de réponse structurés étendent 4D AIKit avec la possibilité d’intégrer des fonctions spécifiques à l’entreprise directement dans les conversations pilotées par l’IA. L’appel d’outil vous permet d’exposer des fonctionnalités sélectionnées de votre application, telles que « lister les catégories de produits disponibles » ou « obtenir les produits les plus vendus« , en tant qu’outils pouvant être appelés. Lorsqu’un modèle d’IA détermine qu’un outil est nécessaire, 4D AIKit achemine automatiquement l’appel vers vos fonctions 4D enregistrées et intègre le résultat dans la réponse. Cela évite de devoir télécharger ou réentraîner de grands ensembles de données, tout en permettant à l’IA de répondre aux questions des utilisateurs avec des données en direct et spécifiques à l’application. En pratique, cela signifie que vous pouvez intégrer un assistant de chat dans votre application, et lorsqu’un utilisateur demande « Quels sont les 10 produits les plus vendus par catégorie ? », le modèle peut appeler vos fonctions, récupérer des données commerciales réelles et renvoyer la réponse en langage naturel.
En outre, 4D AIKit prend désormais en charge les formats de réponse structurés, ce qui rend l’intégration avec les processus en aval plus fiable. Outre le texte brut, les réponses peuvent être demandées en tant qu’objets JSON stricts ou forcées à se conformer à un schéma JSON que vous définissez. Ceci est particulièrement utile lorsque des données non structurées provenant d’utilisateurs doivent être transformées en données prévisibles, ou lorsque ducontenu généré par l’IA doit être intégré dans des flux de travail automatisés sans nettoyage manuel.
Ensemble, les requêtes sémantiques, les appels d’outils et les formats de réponse structurés font de l’IA dans 4D non pas une simple couche conversationnelle, mais un composant système entièrement intégré, capable de récupérer des données métier pertinentes, d’appliquer une logique en toute sécurité dans votre application et de fournir des sorties structurées qui s’intègrent parfaitement dans vos flux de travail. Et maintenant, avec AIKit en open-source, vous bénéficiez d’une visibilité totale et de la possibilité de le façonner, de l’étendre et de le faire évoluer en fonction de vos propres besoins commerciaux.
RÉSEAU
4D 21 redéfinit la couche réseau avec une base moderne, axée sur les performances et conçue pour répondre aux attentes actuelles en matière de connectivité. Qu’il s’agisse d’exécuter des charges de travail client/serveur à forte latence, de changer de réseau en cours de session, d’intégrer des périphériques via TCP ou UDP, ou d’optimiser des appels HTTP répétés, l’ensemble de la pile est conçu pour offrir des connexions plus rapides, une résilience plus forte et un contrôle plus étroit. QUIC devient le protocole de transport recommandé pour des sessions distantes plus fluides et à faible latence, TCP bénéficie d’API asynchrones avec TLS et d’une gestion fine des délais, UDP arrive avec une nouvelle API de socket pilotée par les événements, et les requêtes HTTP bénéficient d’une gestion des connexions persistantes par le biais d’agents dédiés. Ensemble, ces mises à jour apportent vitesse, stabilité et flexibilité à chaque couche de la communication réseau de votre application.
QUIC : UNE CONNECTIVITÉ CLIENT/SERVEUR PLUS RÉSILIENTE
QUIC est une couche réseau moderne conçue pour rendre les connexions client/serveur 4D plus résilientes et plus fiables, en particulier lorsque la qualité du réseau varie. Avec 4D 21, vous pouvez activer QUIC directement à partir des paramètres de structure, d’utilisateur ou de base de données, même dans les applications compilées, ce qui facilite les tests et le déploiement sans reconstruction.
Dans les charges de travail réelles, QUIC offre de meilleures performances que ServerNet et gère les connexions instables ou à forte latence de manière plus gracieuse. Cela signifie des interactions plus rapides pour les utilisateurs, un travail plus fluide sur les réseaux Wi-Fi ou mobiles, et une expérience plus résiliente dans l’ensemble.
ServerNet reste pris en charge, mais QUIC est désormais le choix recommandé pour les nouveaux déploiements visant à bénéficier des normes de transport Internet actuelles. Avant de migrer un environnement existant, vérifiez que votre infrastructure prend en charge UDP, car certains réseaux le restreignent.
Commutation de réseau transparente avec QUIC New
Avec QUIC, le passage d’une interface réseau à une autre n’interrompt plus votre connexion 4D Remote. Que vous passiez d’Ethernet à Wi-Fi, que vous changiez d’adaptateur ou que vous réveilliez un ordinateur portable sur un autre réseau, le client rétablit automatiquement sa session avec 4D Server et poursuit l’exécution sans perte de données. QUIC permet des reconnexions rapides et résilientes dans des conditions de réseau changeantes, ce qui rend l’expérience fluide même dans des environnements mobiles ou instables.
Votre flux de travail reste intact : le contexte d’exécution est préservé et les processus reprennent exactement là où ils se sont arrêtés. Côté serveur, l’adresse IP du client est mise à jour en temps réel dans la boîte de dialogue d’administration, les journaux de diagnostic et les attributs de session, ce qui permet aux administrateurs d’avoir une visibilité totale. Cela rend 4D Remote beaucoup plus robuste lorsque les conditions du réseau changent fréquemment.
RÉSEAU TCP SÉCURISÉ MODERNE (CLIENTS, SERVEURS & TLS)
4D 21 propose une pile réseau TCP complète et moderne qui remplace les anciennes commandes Internet de 4D par une approche plus rapide, plus propre et entièrement asynchrone.
La classe TCPConnection gère la communication côté client avec une API orientée objet et des rappels tels que onConnection, onData, onShutdown et onError. Vous pouvez envoyer des blobs ou du texte, réagir à des événements dès qu’ils se produisent et vous connecter à des périphériques externes, à des services ou à des protocoles personnalisés en toute simplicité.
La classe TCPListener ajoute la partie serveur. Elle vous permet d’écouter sur un port, d’accepter ou de rejeter les connexions entrantes et de confier chaque client accepté à une instance TCPConnection dédiée. Cela vous donne un modèle cohérent pour construire des services légers ou des passerelles directement dans 4D.
Pour tout sécuriser, les connexions TCP prennent désormais en charge le cryptage TLS/SSL natif. En activant l’ attribut TLS dans le nouveau paramètre options de 4D.TCPConnection.new(), vous établissez automatiquement des sessions cryptées, avec TLS 1.3 comme protocole par défaut. Les ports standard et sécurisés peuvent fonctionner en parallèle et la communication cryptée commence dès que la poignée de main est terminée.
Les connexions TCP exposent également une propriété.connectionTimeout , qui vous permet de contrôler directement le temps d’attente avant l’abandon d’une connexion bloquée ou qui ne répond pas. Cela vous permet d’ajuster les seuils de latence, d’échouer rapidement dans de mauvaises conditions de réseau et d’éviter les blocages de l’interface utilisateur ou les attentes interminables.
Ensemble, ces fonctionnalités fournissent une base moderne, flexible et sécurisée pour l’implémentation de protocoles TCP personnalisés et la construction de solutions réseau client et serveur entièrement dans 4D.
NOUVELLES COMMANDES UDP
La nouvelle classe 4D.UDPSocket offre aux développeurs un contrôle total sur la communication en temps réel, basée sur les événements, en utilisant le protocole UDP. Elle prend en charge les modes client et serveur et est optimisée pour la transmission rapide de données sans connexion dans des cas d’utilisation tels que la messagerie IoT, la surveillance en temps réel des appareils ou la signalisation interne.
Cette classe est entièrement pilotée par les événements et prend en charge des rappels tels que onData, onError et onTerminate. Les développeurs peuvent émettre et recevoir des paquets à l’aide de send(), analyser les métadonnées des paquets via 4D.UDPEvent, et enregistrer le trafic dans le fichier unifié 4DTCPUDPLog.txt.
Grâce à la prise en charge des threads préemptifs, la classe UDPSocket fonctionne efficacement dans les environnements à forte concentration de données et remplace l’ancien plugin Internet Commands par une alternative moderne orientée objet.
OPTIMISEZ VOS CONNEXIONS HTTP AVEC LES AGENTS HTTP
4D 21 introduit les agents HTTP, vous donnant plus de contrôle sur la façon dont votre application se connecte aux serveurs HTTP. Les agents gèrent la persistance et la réutilisation des connexions, évitant ainsi de devoir renégocier une nouvelle connexion, en particulier TLS/SSL, pour chaque requête.
Par défaut, toutes les commandes HTTPRequest utilisent désormais un agent intégré qui maintient les connexions en vie. Lorsque vous avez besoin de plus de contrôle, vous pouvez créer votre propre agent pour affiner les comportements tels que :
-
la gestion du maintien en vie
-
le nombre maximal de connexions simultanées
-
les délais de connexion
-
Configuration TLS/SSL au niveau de l’agent
L’utilisation d’un agent est simple : vous le créez une fois et vous le passez dans vos options de demande. Comme HTTPAgent est un objet partagé, vous pouvez également conserver un seul agent pour toutes les requêtes adressées au même serveur, ou même le réutiliser sur plusieurs serveurs, chacun conservant son propre pool de connexions.
Les agents HTTP rendent les appels répétés plus rapides, plus prévisibles et plus faciles à gérer, en particulier dans les applications qui interagissent fortement avec des API externes.
ORDA
4D 21 étend ORDA avec un contrôle plus approfondi du cycle de vie et un traitement des données plus raffiné, permettant aux développeurs de construire une logique d’entreprise plus propre et plus autonome. Grâce aux nouveaux événements du cycle de vie, à la prise en charge des constructeurs, au filtrage plus intelligent des entités et aux fonctions de nettoyage de la mémoire, la couche de données n’est plus seulement un système de stockage, mais un moteur réactif et piloté par des règles, intégré directement dans votre modèle.
MODÈLE COMPLET d’événements de cycle de vie des entités New
4D 21 introduit un modèle de cycle de vie complet et unifié pour les entités ORDA, vous donnant un contrôle total sur la façon dont les données se comportent de la création à la suppression. Au lieu de disperser les règles dans des formulaires, des API ou des déclencheurs, vous définissez maintenant toute votre logique d’entreprise directement dans vos classes de données : c’est plus propre, plus centralisé et plus facile à maintenir.
Ce cycle de vie commence dès la création d’une entité. Les constructeurs d’entités vous permettent d’attribuer des valeurs par défaut, d’initialiser la logique spécifique au contexte (comme l’utilisateur ou la session en cours) ou de pré-remplir les attributs automatiquement. Dès qu’une entité est modifiée en mémoire, l’événement onTouch réagit à ces changements en temps réel, ce qui facilite la normalisation des valeurs, l’application des règles ou la préparation des mises à jour dépendantes avant le début de toute opération d’enregistrement.
Lorsqu’une entité est sauvegardée, 4D 21 exécute désormais une séquence en trois phases : validateSave, saving, et afterSave. Cela vous permet de bloquer rapidement les opérations non valides, d’appliquer la logique métier pendant l’enregistrement et de déclencher des actions de suivi une fois l’opération terminée. Le même pipeline en trois phases existe pour les suppressions avec vvalidateDrop, dropping, et afterDrop, ce qui vous permet d’empêcher les suppressions non autorisées, de nettoyer les données connexes et d’exécuter la logique post-suppression de manière cohérente.
Tous les événements sont disponibles au niveau de l’entité et de l’attribut. Les événements de validation peuvent bloquer les opérations lorsque les règles ne sont pas respectées, tandis que les post-événements s’exécutent toujours, même si l’opération échoue, ce qui garantit un comportement fiable et prévisible dans l’ensemble du modèle.
En consolidant cette logique au sein de vos classes de données ORDA, le comportement des entités devient prévisible, autonome et cohérent dans l’ensemble de votre application. Les règles métier ne sont plus cachées dans des déclencheurs. Les systèmes externes peuvent s’intégrer proprement grâce à des crochets d’événements natifs. Dans les projets basés sur ORDA, les déclencheurs traditionnels ne sont plus nécessaires, les événements du cycle de vie offrent toute la puissance d’ORDA dans une architecture plus propre et plus facile à maintenir.
Restreindre les données sur les sélections d’entités
Contrôler qui voit quelles données est essentiel dans les applications métier. Désormais, vous pouvez définir ces règles une seule fois, proprement et directement dans votre modèle de données.
Alors que le système de permission existant dans 4D contrôle si les utilisateurs peuvent accéder à une classe de données entière, la nouvelle fonction restrict() introduite dans 4D 21 affine encore cet accès. Elle vous permet d’appliquer des filtres contextuels sur les sélections d’entités en fonction des valeurs de session, des rôles des utilisateurs ou de toute autre logique d’exécution.
Plutôt que d’appliquer des filtres manuellement dans votre code, vous les définissez une fois dans la classe de données à l’aide de la fonction restrict(). Par exemple, un vendeur peut être limité à la visualisation des clients qu’il gère, tandis que les administrateurs voient toujours l’ensemble des données, le tout étant déterminé automatiquement lors de chaque opération de lecture comme query() ou all().
Cette approche centralisée renforce non seulement la sécurité, mais permet également de conserver une logique propre et cohérente dans les contextes web et client-serveur.
DES SÉLECTIONS D’ENTITÉS PROPRES AVEC SUPPRESSION AUTOMATIQUE DES LACUNES
Lorsque les utilisateurs suppriment des entités d’une sélection, l’interface se retrouve souvent encombrée par des espaces vides. Cela rompt le flux, ajoute de la friction et rend votre interface utilisateur moins réactive.
Avec 4D 21, la nouvelle fonction clean() résout ce problème en une seule ligne. Après avoir effectué un dépôt, il vous suffit d’appeler .clean() sur la sélection d’entités pour supprimer automatiquement les espaces vides laissés par les entités supprimées. Cette fonction est transparente, efficace et permet de restaurer une vue polie et ininterrompue sans reconstruction manuelle.
Ce petit ajout se traduit par une grande amélioration de la qualité de l’interface et de l’expérience de l’utilisateur. Et cela ne se limite pas à l’interface utilisateur : l’API REST $entityset prend également en charge le paramètre clean, ce qui permet à vos réponses API de renvoyer des données propres et sans lacunes, même après des suppressions.
Que vous développiez une interface de bureau ou que vous travailliez avec des clients web, cette fonctionnalité permet à vos vues de données d’être ordonnées et à vos interactions avec l’utilisateur d’être fluides.
4D Qodly Pro
4D Qodly Pro vous permet d’étendre votre application métier avec des interfaces modernes basées sur le navigateur, sans écrire une seule ligne de HTML ou de JavaScript. Grâce à un éditeur visuel par glisser-déposer, vous pouvez créer des formulaires web réactifs et les connecter directement à votre logique métier 4D.
Les pages Qodly peuvent être intégrées directement dans les formulaires 4D classiques à l’aide d’une zone Web. Du point de vue de l’utilisateur, il s’agit d’une interface unique et unifiée. Il n’y a pas besoin de fenêtres séparées ou de licences supplémentaires. La page Qodly intégrée partage la même session et la même licence que le client 4D Remote, ce qui rend l’expérience à la fois transparente et sans coût supplémentaire.
Si vous voulez voir comment cela se passe rapidement dans la pratique, vous pouvez regarder la rediffusion du webinaire officiel de 4D Qodly Pro, qui explique comment ajouter des formulaires basés sur un navigateur à une application 4D réelle.
CONSTRUIRE DES INTERFACES WEB MODERNES SANS RÉÉCRIRE VOTRE APPLICATION
4D Qodly Pro vous permet de créer des interfaces modernes, basées sur un navigateur, directement au-dessus de votre application 4D existante, sans avoir à apprendre les frameworks web, à réécrire la logique ou à gérer des bases de code séparées. Vous concevez des pages visuellement, liez des données visuellement, sécurisez l’accès visuellement et exposez des API visuellement, tout en restant dans le flux de travail familier de 4D. Le résultat est un chemin plus rapide vers le web avec moins de code, moins de complexité et aucune déconnexion entre votre interface utilisateur et votre logique d’entreprise.
-
Étendez ou déplacez vos applications de bureau vers le web sans restructurer votre architecture : Les pages Qodly s’appuient sur votre modèle ORDA et vos classes de serveur existants. Votre logique, votre base de données et vos règles de sécurité restent exactement là où elles sont.
-
Construisez des interfaces réactives visuellement en utilisant des composants réutilisables : Vous faites glisser les composants sur le canevas, vous les configurez à l’aide des panneaux latéraux et vous les liez aux qodlysources sans code. Les composants élaborés et les modèles prêts à l’emploi vous permettent d’assembler rapidement des écrans avec un style cohérent.
-
Accélérez le développement en supprimant la complexité du frontend : La liaison des données, le formatage, les états conditionnels, les événements et la navigation sont tous visuels. Aucun HTML, CSS ou JavaScript n’est nécessaire, seulement la logique 4D et les panneaux de Qodly Studio.
-
Utilisez la licence 4D Client que vous possédez déjà : Lorsqu’une page Qodly est intégrée dans une zone Web d’un client 4D Remote, elle s’exécute sous la même session et la même licence. Les utilisateurs voient une interface unifiée et le déploiement reste simple et rentable.
-
Garder les équipes productives avec une expérience familière de glisser-déposer : Qodly Studio s’inspire de l’éditeur de formulaires 4D, ce qui permet aux nouveaux développeurs de rejoindre facilement le projet et aux équipes 4D expérimentées de travailler plus rapidement.
-
La conception, la logique et les données se trouvent toutes dans le même environnement : Qodly Studio gère la mise en page, les pages Qodly définissent la structure, et vos règles de gestion se trouvent dans vos classes. Rien n’est dispersé dans des fichiers externes ou des cadres déconnectés.
-
Construisez visuellement un comportement dynamique : Les états conditionnels et non conditionnels permettent aux pages de s’adapter aux rôles des utilisateurs, aux changements de données ou aux interactions de l’interface utilisateur, le tout configuré à l’aide de panneaux guidés. Vous voyez exactement quand et pourquoi les éléments apparaissent, changent ou réagissent.
-
Définissez visuellement les rôles, les privilèges et les règles d’accès : Une interface dédiée vous permet de créer des hiérarchies de rôles, d’attribuer des privilèges et d’examiner les autorisations finales d’un seul coup d’œil. Elle précise qui peut lire, mettre à jour, supprimer ou exécuter chaque partie de votre application.
-
Exposez la logique du serveur sous la forme de gestionnaires HTTP simples et visuels : Vous choisissez une classe, une méthode, un modèle d’URL et Qodly se charge du routage. C’est un moyen facile de publier des API ou d’intégrer des systèmes externes sans couches ou cadres supplémentaires.
-
Déboguez les pages directement sur votre serveur 4D : Vous prévoyez instantanément les modifications de l’interface utilisateur, vous inspectez les qodlysources et vous utilisez le débogueur 4D à l’intérieur de Qodly Pro – exactement à l’endroit où la logique s’exécute.
Composants personnalisés : Étendez Qodly avec vos propres éléments de construction
4D Qodly Pro prend également en charge les composants personnalisés, vous donnant un moyen d’étendre l’interface utilisateur lorsque vous avez besoin de quelque chose qui va au-delà de la boîte à outils intégrée.
-
Ajoutez de nouvelles capacités avec vos propres composants React : Des widgets complexes, des visualisations spécialisées ou des interactions uniques peuvent être construits en tant que composants React et téléchargés directement dans Qodly Studio.
-
Réutilisez-les dans vos projets ou partagez-les au sein de la communauté : Les composants personnalisés se comportent comme des composants natifs une fois installés, ils glissent et déposent, lient des données, appliquent des styles et déclenchent des événements exactement de la même manière.
-
Assurer l’efficacité du développement : Au lieu de recréer une interface utilisateur spécialisée à chaque fois, vous installez un composant une fois et l’utilisez partout.
-
Se fondre harmonieusement dans le reste de l’interface utilisateur : Vous contrôlez l’apparence, le comportement et l’intégration, tandis que Qodly s’assure que les composants s’exécutent efficacement dans son runtime.
Et grâce à une communauté active qui partage continuellement des composants personnalisés, vous pouvez enrichir votre boîte à outils sans avoir à tout construire vous-même.
Installation automatique de Qodly Studio New
Lancer Qodly Studio pour la première fois depuis le mode 4D Design déclenche un assistant de configuration automatique. Tous les paramètres requis : Activation du serveur REST, sessions évolutives, ports du serveur web, sont détectés et présentés avec une invite à les activer.
S’ils sont acceptés, les services redémarrent si nécessaire et Qodly Studio s’ouvre dans le navigateur. En cas de refus, aucune modification n’est apportée. Le flux de travail est fluide, rapide et sans intervention de la part des nouveaux utilisateurs.
Sessions partagées et interactions entre les applications client/serveur et 4D Qodly Pro New
Lorsqu’une page Qodly est affichée dans une zone Web d’ un client 4D Remote, elle s’exécute dans la même session et avec la même licence. Cela signifie qu’aucune licence supplémentaire n’ est consommée et que le même contexte de session circule de manière transparente entre le formulaire de bureau et la page 4D Qodly Pro.
L’authentification et les privilèges sont préservés automatiquement, et les données de session peuvent être transmises pour initialiser la page web avec le contexte du bureau, par exemple en affichant les détails de l’entité actuellement sélectionnée.
Outre le partage de session, les actions de 4D Qodly Pro permettent une interaction directe et bidirectionnelle entre les formulaires 4D et les pages de 4D Qodly Pro. À partir d’une page Qodly, les développeurs peuvent appeler des fonctions 4D par l’intermédiaire de l’objet $4d, préalablement initialisé avec la commande WA SET CONTEXT. Inversement, un formulaire 4D peut mettre à jour les sources Qodly directement, ce qui garantit la synchronisation de l’état et de la logique dans les deux environnements.
Ensemble, ces améliorations permettent de combiner facilement des formulaires 4D classiques avec des pages Qodly modernes dans une seule application, unifiant les sessions, les interactions et le contexte tout en évitant les connexions redondantes, les licences supplémentaires ou le travail d’intégration complexe.
Internationalisation intégrée (i18n) New
4D Qodly Pro inclut l’internationalisation intégrée (i18n), afin que vos applications puissent s’adapter de manière transparente à de multiples langues et paramètres régionaux.
Les langues prises en charge sont définies en tant que locales dans la nouvelle section Localisation, où les clés et les valeurs de traduction peuvent être gérées et liées aux composants. Le choix de la langue est géré par la source Qodly intégrée à UserLanguage, qui applique la sélection de l’utilisateur en temps réel.
Lesretours automatiques couvrent les données de session, les valeurs par défaut du navigateur ou une locale principale, tandis que la prise en charge native de droite à gauche (RTL) rend des langues comme l’arabe naturelles. Le passage d’une langue à l’autre met instantanément à jour le contenu, créant ainsi une expérience personnalisée et fluide.
Cela vous permet de vous développer sur de nouveaux marchés, de réduire les frictions liées à l’intégration et de renforcer la confiance des utilisateurs sans avoir à repenser votre interface utilisateur ou à ajouter de la complexité. Qu’il s’agisse d’un lancement local ou mondial, votre produit est prêt à parler la langue de vos utilisateurs.
Rapport d’événements de la page Qodly New
Le rapport d’événements fournit une vue claire et unifiée de tous les événements de votre page, qu’ils proviennent d’actions standard, d’actions de navigation, de fonctions de classe ou d’actions de dialogue. Il indique les événements déclarés, l’endroit où ils sont mis en œuvre et l’ordre exact dans lequel ils s’exécutent.
En rendant le flux d’événements transparent, il accélère le débogage, découvre instantanément les chevauchements ou les gestionnaires manquants et facilite l’optimisation. Les équipes peuvent collaborer plus facilement et vous gagnez en confiance en sachant exactement comment votre page se comporte.
C’est un moyen simple d’apporter clarté, précision et efficacité à la gestion des événements, qu’il s’agisse d’une petite application ou d’une solution à grande échelle.
COMMANDES DE ZOOM SUR LE CANEVAS New
L’éditeur de pages 4D Qodly Pro inclut des contrôles de zoom sur le canevas pour faciliter le travail avec des mises en page complexes. Les développeurs peuvent maintenant zoomer, dézoomer ou réinitialiser la vue directement depuis la barre d’outils, avec un support pour les raccourcis clavier et la navigation avec la molette de la souris.
Le niveau de zoom actuel est affiché dans l’interface, ce qui permet aux développeurs de contrôler précisément la manière dont ils visualisent et organisent les composants sur le canevas.
Ces améliorations permettent d’améliorer la navigation, la précision de la conception et la convivialité générale, en alignant l’éditeur de pages sur les normes des outils de conception visuelle modernes.
BASE DE DONNÉES
4D 21 renforce les fondations de votre modèle de données avec des fonctionnalités qui apportent plus de structure, plus de fiabilité et de meilleures performances à l’échelle. Vous pouvez désormais affecter des classes directement aux champs d’objets pour garantir la validation de la forme et des modèles typés plus sûrs. Les sélections d’enregistrements restent cohérentes même lorsque les données changent en arrière-plan, ce qui garantit des résultats stables pour les opérations de longue durée. Grâce à la nouvelle prise en charge de l’UUID v7, vos identifiants sont ordonnés dans le temps et faciles à indexer, ce qui facilite le tri des grands ensembles de données et accélère les requêtes sur les systèmes distribués.
CHAMPS D’OBJET DE TYPE CLASSE DANS L’ÉDITEUR DE STRUCTURE
Dans l’éditeur de structure, les champs d’objets peuvent désormais être affectés à une classe spécifique. Ilne s’agit pas de simples métadonnées, mais d’un contrat que 4D applique à plusieurs niveaux.
Assignez une classe d’utilisateurs à un champ d’objet et vous obtiendrez :
-
autocomplétion au niveau de la propriété
-
Vérification de la syntaxe à la compilation
-
Validation de la forme de l’objet au moment de l’exécution
Si l’objet ne correspond pas à la classe déclarée, 4D lève une erreur. La structure devient schéma, vos données restent propres, et lorsqu’elle est combinée avec 4D.Vector, la définition d’un attribut vectoriel typé dans votre classe signifie que chaque entité porte sa propre empreinte sémantique, prête pour l’évaluation de la similarité, le tri piloté par l’IA ou les recommandations intelligentes.
MAINTENIR LA COHÉRENCE DES SÉLECTIONS D’ENREGISTREMENTS
4D 21 renforce la fiabilité des données en s’assurant que les sélections d’enregistrements restent stables même lorsque des enregistrements sont supprimés et que de nouveaux sont créés en arrière-plan.
Dans les versions précédentes, la suppression d’un enregistrement pouvait libérer un emplacement interne susceptible d’être réutilisé ultérieurement par un nouvel enregistrement, de sorte qu’une sélection existante incluait inopinément des données qui ne correspondaient pas aux critères initiaux.
Désormais, une fois qu’une sélection est créée, elle reste cohérente pendant toute sa durée de vie. Les enregistrements supprimés disparaissent tout simplement de la sélection et les enregistrements nouvellement créés ne s’y glissent jamais. Cela s’applique aussi bien aux sélections QUERY classiques qu’aux sélections d’entités ORDA.
Avec cette mise à jour, les boucles, les fusions de courrier, les tâches d’arrière-plan et les sélections de longue durée se comportent exactement comme prévu, sans surprise, sans vérification supplémentaire, juste des résultats fiables.
PRISE EN CHARGE DES UUIDS V7
La génération d’UUID est devenue plus intelligente. Generate UUID prend désormais en charge les identifiants de la version 7. Cela signifie que vos UUID ne sont pas seulement universellement uniques, mais qu’ils peuvent être triés chronologiquement, qu’ils sont adaptés aux bases de données et qu’ils sont conçus pour les systèmes distribués modernes.
En interne, les UUID v7 intègrent des données d’horodatage, ce qui les rend idéaux pour un stockage ordonné et plus faciles à indexer. Il s’agit d’un petit changement qui a un impact considérable sur l’échelle et les performances des requêtes.
Composant 4D
4D 21 apporte deux avancées majeures au développement de composants : un gestionnaire de dépendances entièrement moderne et une édition transparente des composants au sein du projet. Vous pouvez charger « uniquement ce dont vous avez besoin » grâce à la gestion optionnelle des composants, extraire des composants directement de GitHub, aligner automatiquement tous les composants sur votre version de 4D, et compter sur 4D pour résoudre les dépendances récursives et prévenir les conflits. En même temps, vous pouvez voir, éditer et déboguer le code des composants directement dans votre projet hôte, ce qui rend le développement basé sur les composants plus rapide, plus propre et beaucoup plus facile à maintenir. Ensemble, ces changements créent un flux de travail rationalisé et prévisible pour la création, le partage et la mise à l’échelle des composants au sein des équipes et des projets.
INTÉGRATION TRANSPARENTE DES COMPOSANTS DANS LE PROJET New
Ledéveloppement de composants dans 4D a fait un grand pas en avant. Les méthodes et les classes d’un composant, qu’elles soient partagées ou non, peuvent désormais être visualisées et modifiées directement dans le projet hôte, sans qu’il soit nécessaire d’ouvrir le composant séparément ou de se déconcentrer pendant le développement. Toutes les méthodes peuvent désormais être modifiées sur place, et des composants entiers peuvent être créés à partir de l’interface utilisateur hôte, initialisés avec l’espace de noms, les fichiers et la structure, puis modifiés immédiatement en mode interprété.
Au-delà du code, la visibilité s’est élargie pour inclure des formulaires en lecture seule, des dossiers, des constantes, des commandes, des plug-ins et même une corbeille spécifique au composant. Les constantes conservent un lien avec leurs composants sources, ce qui garantit la cohérence de l’application, tandis que les nouveaux flux de création relient automatiquement les dépendances et mettent en place une structure pour les modes gérés et hérités.
Dans l’ensemble, cela rend l’itération des composants plus rapide, la modularisation plus fluide, et les projets plus propres et plus transparents. Il s’agit d’une étape importante qui rapproche les composants du flux de travail du projet hôte, et d’autres améliorations sont encore prévues sur la feuille de route.
GESTION OPTIONNELLE DES COMPOSANTS New
4D 21 n’inclut plus les composants 4D standard. Au lieu de cela, vous déclarez vos besoins dans la boîte de dialogue Add Dependency, et 4D les récupère et les installe automatiquement à la demande. De là, vous pouvez accéder directement au catalogue complet des composants 4D, y compris 4D AI Kit, 4D NetKit, 4D View Pro, SVG, et plus encore, tous publiés en tant qu’open source sur GitHub. Cela vous donne la flexibilité d’installer uniquement ce dont vous avez besoin tout en facilitant l’exploration des composants internes, en contribuant aux améliorations et en alignant vos projets sur l’évolution des besoins.
-
Dépendances ciblées : Seuls les composants nécessaires sont installés.
-
Alignement des versions : Les dépendances suivent par défaut la version actuelle de 4D, ce qui garantit la compatibilité sans nécessiter de vérifications manuelles.
Lors de la mise à niveau vers 4D 21, les projets existants peuvent télécharger automatiquement les composants requis, tandis que les bases de données binaires continuent d’y accéder via le programme d’installation ou le portail de téléchargement.
Automatiser la compatibilité des dépendances avec Follow 4D Version
La règle Follow 4D version simplifie la gestion des dépendances en synchronisant automatiquement vos dépendances avec votre environnement 4D. Cela réduit les problèmes de compatibilité et vous fait gagner du temps.
- Compatibilité automatique: Les dépendances s’alignent sur votre version 4D, sans qu’aucun suivi manuel ne soit nécessaire.
- Mises à jour et rétrogradations sans effort: Les dépendances sont mises à jour automatiquement lors de la mise à niveau ou de la rétrogradation de 4D.
- Résolution fiable des dépendances: Le système résout les dépendances en se basant sur les conventions de dénomination des balises structurées pour les versions LTS et R.
INTÉGRATION DE COMPOSANTS GITHUB-NATIVE ET CONTRÔLE DES DÉPENDANCES
L’intégration des composants dans 4D 21 est conçue pour la façon dont le développement se déroule actuellement. Les équipes partagent du code. Les bibliothèques internes évoluent. Les composants publics s’améliorent. Et tout passe par GitHub. Le nouveau système de dépendances connecte votre projet directement à ces dépôts afin que les composants s’installent, se mettent à jour et restent alignés avec leur source sans aucune manipulation manuelle.
Une fois qu’un composant est référencé, 4D l’extrait directement de GitHub et applique des règles de version sémantiques afin que vous puissiez décider exactement du degré de rigueur ou de liberté avec lequel vous souhaitez suivre les mises à jour. Vous pouvez geler une version lorsque la stabilité est importante, rester dans une fourchette de sécurité lorsque vous souhaitez des mises à jour contrôlées, ou suivre la dernière version lorsque vous procédez à des itérations rapides. Lorsqu’une nouvelle version est disponible sur GitHub, 4D la met immédiatement en évidence afin que vous puissiez mettre à jour un seul composant ou l’ensemble en une seule étape.
Les dépôts privés s’intègrent parfaitement. Vous ajoutez un jeton une fois, et 4D s’occupe du reste, en récupérant les composants internes aussi facilement que les composants publics.
Cela crée un flux propre et prévisible. Chaque composant est traçable. Chaque mise à jour est intentionnelle. Chaque dépendance reste connectée à la base de code qui la définit. L’adoption devient plus facile, la maintenance devient plus légère et le partage du code entre les équipes devient une partie naturelle de votre flux de travail.
RÉSOLUTION ET GESTION RÉCURSIVE DES DÉPENDANCES
Le gestionnaire de composants comprend désormais l’arbre complet. Une fois qu’un composant se trouve dans votre projet, 4D analyse toutes les dépendances sur lesquelles il repose, charge automatiquement celles qui sont nécessaires et vérifie les conflits avant qu’ils n’apparaissent.
Le chargement récursif garantit que les sous-dépendances ne manquent jamais. Les plages de versions sont résolues intelligemment afin que plusieurs composants puissent dépendre de la même bibliothèque sans interrompre la construction. Et si un cycle apparaît, 4D le bloque à la racine pour que votre projet reste stable.
Vous bénéficiez d’une visibilité claire sur la structure : les dépendances déclarées, les dépendances indirectes, et exactement quel composant a besoin de quoi. Chaque ajout, mise à jour ou suppression est propagé dans l’arbre afin que votre projet reste cohérent sans nettoyage manuel.
Ajouter et supprimer des composants locaux
La gestion des composants locaux dans 4D 21 est désormais beaucoup plus fluide et prévisible. L’interface des dépendances du projet vous permet d’ajouter, de supprimer et d’organiser les composants en un seul endroit, sans avoir à toucher au système de fichiers ou à chercher dans les paramètres du projet.
Tout est piloté par deux fichiers : dependencies.json, qui centralise toutes les dépendances du projet à des fins de cohérence, et environment4d.json, qui gère les chemins d’accès aux composants personnalisables. Lorsque vous ajoutez un composant local, 4D écrit automatiquement la bonne entrée. Si le composant se trouve ailleurs, les deux fichiers sont mis à jour pour que le projet s’ouvre proprement sur n’importe quelle machine, sous macOS ou Windows. La suppression d’un composant suit le même flux, avec des invites de confirmation pour éviter les ruptures accidentelles et un nettoyage automatique pour que votre configuration reste stable.
Un redémarrage est nécessaire pour que tout changement prenne effet, et 4D vous guide à l’aide de notifications claires. L’ensemble du processus réduit les frictions, le temps de configuration et vous donne un accès plus rapide et plus fiable aux composants dont vous dépendez.
UTILISER DES CLASSES DANS DES COMPOSANTS AVEC DES ESPACES DE NOMS DÉCLARÉS
4D 21 simplifie considérablement l’interaction entre les composants. Lorsqu’un composant déclare un espace de noms (namespace), toutes ses classes deviennent automatiquement disponibles pour tous les autres composants du même projet hôte.
Il suffit d’inclure les composants dont vous avez besoin et vous pouvez utiliser directement leurs classes à l’adresse cs.<namespace> dans votre code.
Cette approche rend le développement basé sur les composants plus modulaire, plus prévisible et plus facile à maintenir.
STRUCTURE DES COMPOSANTS MISE À JOUR POUR LA NOTARISATION DE SILICON MACOS
4D 21 présente une structure de composants redessinée qui s’aligne sur les exigences de notarisation d’Apple pour les Macs basés sur Silicon. Les composants suivent désormais la même disposition qu’une application 4D complète, ce qui rend la notarisation plus fiable et élimine les problèmes structurels auxquels les développeurs étaient confrontés avec les anciens formats.
Les métadonnées sont désormais générées automatiquement au moment de la construction. Les champs tels que CFBundleDisplayName, CFBundleShortVersionString, CFBundleVersion et les informations de copyright sont remplis directement à partir de vos paramètres de construction. Lorsque vous utilisez Build4D, ces valeurs proviennent de votre buildApp.4DSettings, de sorte que les composants sont emballés correctement sans configuration supplémentaire.
Notez que la structure mise à jour n’est pas compatible avec les anciennes versions de 4D comme 4D 20 R7 ou 20 LTS. Les composants construits avec 4D 20 R8 ont introduit cette nouvelle structure et peuvent encore charger des composants plus anciens, mais les versions plus anciennes ne peuvent pas charger les composants construits à l’aide de la structure mise à jour.
4D NetKit & Mailing
4D NetKit est passé d’un ensemble d’utilitaires Microsoft 365 et Google à un cadre d’authentification et de communication plus approfondi. Il permet à votre application de bénéficier d’une authentification unique via Microsoft 365 et étend cette capacité avec le support complet d’OpenID Connect, ouvrant ainsi la porte à un large éventail de fournisseurs d’identité : Google, Okta, les systèmes IAM d’entreprise, tout ce qui parle le standard.
Le résultat est un environnement où les flux de connexion, la gestion des jetons, les opérations de messagerie et les intégrations de calendrier ne sont plus perçus comme des systèmes externes ajoutés de l’extérieur. Ils font désormais partie des fondations de votre application : sécurisés, modernes et prévisibles.
GESTION COMPLÈTE DES MESSAGES ET DES ÉTIQUETTES GMAIL
L’intégration de Gmail dans 4D 21 passe d’un simple point d’entrée « envoyer un message » à une boîte aux lettres complète et programmable. Une fois votre application authentifiée par OAuth 2.0, Gmail se comporte comme une autre couche de votre logique, et non comme un service distant avec lequel vous devez vous battre.
Tout commence par l’envoi. Vous créez des e-mails structurés et les envoyez via l’API Gmail, en contournant la fragilité des relais SMTP et des protocoles existants. C’est propre, prévisible et sécurisé.
À partir de là, la boîte de réception s’ouvre. Vous pouvez la lire, la façonner, la réorganiser et la nettoyer, avec la même précision que celle que vous appliquez à vos propres structures de données.
Vous pouvez désormais
-
récupérer la liste complète des libellés de Gmail, y compris les libellés système et personnalisés
-
Récupérer les identifiants des messages pour n’importe quel libellé (boîte de réception, corbeille, non lus, dossiers).
-
Charger le contenu complet des messages à la demande
-
Supprimer ou mettre à la corbeille des messages en un seul appel
-
Récupérer plusieurs courriels à la fois, jusqu’à 100 par requête
-
Attribuer ou supprimer des libellés, y compris des combinaisons telles que Travail + IMPORTANT
-
Créer, mettre à jour et supprimer des libellés de manière programmée
-
Extraire les métadonnées des libellés, telles que le nombre de messages non lus et le nombre total de messages.
Il ne s’agit pas d’un « accès à l’e-mail », mais d’une automatisation de l’e-mail.
CRÉER ET GÉRER DES BROUILLONS GMAIL
4D 21 vous permet de créer des brouillons Gmail directement dans la boîte aux lettres, en les plaçant sous l’étiquette de votre choix sans rien envoyer. C’est un moyen simple de conserver des modèles réutilisables exactement là où ils doivent être, dans Gmail, prêts à être récupérés, modifiés et envoyés lorsque le moment l’exige.
Grâce à l’API Gmail, vous pouvez ajouter un message en tant que brouillon (avec le libellé DRAFT par défaut ou votre propre libellé personnalisé), le rouvrir ultérieurement, le modifier et l’envoyer via le flux Gmail standard. Lorsqu’un brouillon n’est plus nécessaire, vous pouvez le supprimer proprement.
METTRE À JOUR LES PROPRIÉTÉS DE LA MESSAGERIE MICROSOFT 365
4D 21 vous donne un contrôle direct sur les messages Microsoft 365, en vous permettant de mettre à jour les propriétés des emails reçus ou en cours de rédaction à travers Office365.mail.update(). La demande de modification de l’indicateur isRead a ouvert la porte, mais la fonctionnalité va plus loin.
Grâce à Microsoft Graph, vous pouvez ajuster des attributs tels que le statut de lecture, les catégories ou l’importance. Et lorsque vous travaillez avec des brouillons, vous pouvez même mettre à jour des éléments plus profonds tels que l’objet ou le corps du message. Il s’agit d’un moyen simple de synchroniser l’état des boîtes aux lettres avec vos flux de travail, sans manipulation manuelle ni outil externe.
Vous décidez de la manière dont votre application réagit : marquer un message comme traité, l’étiqueter pour examen, le reclasser en fonction des règles de l’entreprise ou préparer un brouillon de message pour le compléter ultérieurement. Tout est géré par une seule API, un seul flux d’authentification et un seul modèle cohérent.
UN DÉCOMPTE PLUS RAPIDE DES MESSAGES NON LUS DANS PLUSIEURS BOÎTES AUX LETTRES
Avec 4D 21, la vérification du nombre d’emails non lus est beaucoup plus efficace. La fonction IMAPTransporter.getBoxList() peut désormais renvoyer les propriétés de la boîte aux lettres et le nombre de messages non lus en une seule requête, ce qui améliore considérablement les temps de réponse.
Si vous souhaitez obtenir une vue d’ensemble de toutes les boîtes aux lettres, y compris le nombre d’e-mails non lus, le nombre total et le nombre d’e-mails récents, vous pouvez activer l’option « withBoxInfo » et tout récupérer en une seule fois :