Nouvelle release, nouvelle newsletter pour les développeurs Simplicité !
Pour votre information, la plateforme Simplicité version 4.0 P24 Release Candidate a été mise à disposition sur la branche Git pré-version du template et comme image beta Docker.
Si aucune question et/ou blocage n’est soulevé d’ici fin novembre 2019, cette version sera considérée comme la version P24 release.
Merci par avance pour votre aide dans le processus final de validation de cette version.
Si vous le souhaitez, vous pouvez vous astreindre de lire cet email et cliquer directement sur le bouton ci-dessous pour (re)voir le webinaire qui présente toutes les nouveautés.
Bonne lecture !
Points d’attention de cette nouvelle version ?
(Open)JDK
À partir de ce niveau de patch (24), la plate-forme est compilée avec l’OpenJDK 12 actuel forcé en mode de compatibilité JDK 1.8. Ceci est nécessaire car certaines dépendances ne sont plus compilées avec un JDK 1.8 (par exemple Docx4J).
Cela signifie que le (Open)JDK recommandé pour exécuter la plate-forme est maintenant un (Open)JDK 12 ou plus récent.
Cependant, étant compilé en mode de compatibilité JDK 1.8, la plate-forme prête à l’emploi fonctionnera toujours sur un JDK 1.8 (Open).
Mais si, dans votre code custom, vous utilisez l’une des bibliothèques tierces optionnelles qui nécessite un JDK (ouvert) plus récent, l’utilisation d’un JDK (ouvert) 1.8 ne sera plus adaptée.
Une variante “légère” de la plate-forme est également fournie, à l’exclusion de certaines bibliothèques tierces :
– Docx4J – Tika – JClouds – Bibliothèques de l’API Google
Cette variante “light” est entièrement compatible JDK 8.
Note : Toutes nos images Docker sont maintenant livrées avec un OpenJDK 12
jQuery
La version de jQuery® est maintenant une version 3.4.1 (c’était une version 2.2.4 jusqu’en P23).
Selon la façon dont vous avez écrit votre code custom côté client, il se peut que des changements soient nécessaires en raison de certains suppressions d’obsolescence dans jQuery 3, consultez le Guide de mise à niveau de jQuery 3 pour plus de détails.
Compatibility breaking changes
Les changements suivants nécessitent votre attention et peuvent nécessiter un remaniement de votre custom code.
Suppression des anciennes pages JSPs. Assurez-vous de refactoriser toutes les URL codées en dur impliquant ces anciennes pages JSP dans votre code et/ou votre configuration. (notez que vous devriez de toute façon éviter les URLs codées en dur).
Refonte des clauses de rejets. Pour des raisons de qualité de code, les clauses d’exception trop génériques de certaines API publiques de Simplicité ont été remplacées par des clauses de lancement utilisant des sous-classes d’exception (par exemple, PlatformException ou IOException). Dans certains cas particuliers, le compilateur Java peut se plaindre de l’incohérence des clauses de lancement de vos méthodes dérogatoires.
Interface utilisateur quoi de neuf ?
Possibilité d’utiliser une version light (sans les clients Docx4j, Tika, Google APIs, JCoulds, ….)
Mise à jour des librairies tiers (y compris sur les composants majeurs : Rhino, HSQLDB, Apache POI, Docx4J, ….)
Ajout de la visibilité du fournisseur d’authentification sur la page de choix du fournisseur (en utilisant “visible”: <true|false> dans les entrées AUTH_PROVIDERS)
Amélioration du référentiel Maven pour ajouter la dépendance Javadoc de Simplicité aux modules Java validés
Héritage de listes liées
Nouvel historique des sessions dans le menu operation
persister par utilisateur les dates/durée des sessions et les droits de l’utilisateur
pour remplacer les logs précédents SESSION et l’objet AppLoggerLogon
la dernière date de session est maintenant stockée dans m_user (pour rechercher un utilisateur inactif depuis longtemps)
voir paramètre système LOG_SESSION
La propriété History a été modifiée pour tracer les mises à jour :
dans la table miroir de l’objet
à travers les posts sociaux de l’objet
dans le nouveau stockage redolog (m_redolog et/ou log4j)
Nouveau stockage RedoLog :
tracer les actions des objets dans les sessions
limité aux objets ayant la propriété historique
voir paramètre système LOG_ACTIVITY
Ajout des propriétés de l’unité sur l’axe du tableau croisé :
Facteur d’échelle : pour multiplier/diviser les valeurs des axes (ex : convertir les secondes en heures, ko en Mo…)
Fonction de l’unité : arrondir, graduer, diviser, diviser, sqrt, log10… pour changer l’échelle principale de l’axe.
L’étiquette de l’unité doit être affichée sur le graphique lorsque l’échelle a changé.
Permet de rechercher un document par nom de fichier et d’afficher le nom du document dans la liste.
Ajout de nombreuses icônes d’objets système
Ajout de noms d’attributs de remplissage automatique dans l’éditeur de modèles
Ajout de [OBJECTICON :] expression pour les champs d’icônes des zones de champs
Ajout de l’action Reorder fields pour déclencher le réordonnancement automatique des champs.
Ajout de l’indexation des champs hérités appartenant à l’objet indexable
getParentObjectRefField est maintenant évalué dans CONTEXT_REFSELECT, CONTEXT_DATAMAP et CONTEXT_ASSOCIATE
Ajout de l’héritage des datamaps
Préférences de l’utilisateur :
Ajout du format de date pour remplacer le format par défaut déterminé par la langue de l’utilisateur.
Ajout du fuseau horaire pour traduire toutes les dates sur l’interface utilisateur
Ajouté le format de date DD.MM.YYYY pour nos amis suisses
Prise en charge de la syntaxe URI pour l’accès aux scopes. Ex : /ui/scope/MyHome est le même que /ui?scope=MyHome
Génère un skeleton à la création de la ressource SCRIPT de l’objet de gestion
Zone avec spécification de tri :
Aucun : pas d’accès de commande sur l’interface utilisateur (nouveau !)
Code : tri basé sur la valeur de la BD (par défaut)
Valeur : trier par étiquette des codes enum (dans la langue de l’utilisateur)
Ordre : trier par ordre de codes d’énumération
Ajout de la prise en charge de Gradle® avec les modules Apache Maven® pour Java (jusqu’à présent, seul Apache Maven® était supporté).
Ajout de sous-domaines avec ordre dans le menu.
Nouvelle monnaie : Rendu en francs suisses CHF et exportation vers Excel.
La touche de fonction Composite de l’objet interne avec champ « nullable » est maintenant supportée.
Les textes courts ont été augmentés pour supporter 4000 caractères (auparavant 255 en raison des limitations de l’ancien moteur MySQL).
Autorisations Google Drive avec notifications configurables par e-mail
L’action du module d’exportation des données exporte maintenant un data set.
Les exportations de modules incluent maintenant des ensembles de données.
Exportations et importations de formats standard JSON et YAML (ainsi que le format XML standard).
L’action avec l’URL comme javascript permet d’accéder aux app, obj et grant en portée. Exemple :
UserFilters permet un filtrage global par utilisateur pour travailler avec des données limitées sur l’interface utilisateur :
Filtres disponibles :
valeur fixe dans la recherche et la création de champs
référence d’objet fixe dans la recherche et la création
dates de travail : filtrage par période pour les objets ayant une plage de dates (une date de fin liée à une zone de date de début)
Les filtres actifs/visibles dépendent de la portée actuelle de l’utilisateur.
Les filtres peuvent être mis à jour ou non : forcés par l’administrateur ou le public aux utilisateurs
Des filtres peuvent être nécessaires
UserFilters est un objet métier à compléter par le concepteur :
pour ajouter des champs et des références d’objets avec des règles de champs d’objets (modifiables, visibles…)
personnaliser le modèle d’interface utilisateur
ajouter des actions spécifiques pour appliquer des filtres prédéfinis (par ex. “semaine suivante”)
accordé aux groupes comme d’habitude
Accessors getGrant().getUserFilters()
Nouveau regroupement de dates sur le tableau croisé :
Valeurs de groupe par plage de dates : année, semestre, 4 mois, trimestre, mois, semaine, jour, jour, heure
Ne s’applique qu’aux champs de date et d’heure
Nouvelles métriques de sessions :
Durée de travail par utilisateur et par scope
Durée du travail par date et par scope
La liste d’objets peut afficher les noms des documents au lieu de simples icônes doc (voir le nouveau champ de rendu sur le document).
initRefSelect est maintenant appelé sur le rendu du pillbox
Nouveau dialogue modal en cas de perte du service (i.e. pas d’internet, serveur en panne…) au lieu de l’ancienne alerte HTTP 0 :
Les préférences de menu de l’utilisateur ont été implémentées sur l’interface utilisateur sensible (voir le panneau Interface du formulaire Utilisateur) :
Menu visible (usr_menu) : false pour supprimer le menu de gauche
Menu réduit par défaut (usr_menu_deflelapsed) : true pour minimiser le menu à gauch
Domaine ouvert par défaut (usr_menu_defdomain_id) : pour définir le menu accordéon ouvert par défaut au démarrage
Le menu masqué par défaut (usr_menu_defhidden) est obsolète et supprimé de l’interface utilisateur.
Nouvelles fonctionnalités de Docked TreeView :
Actions : fermer, recharger, réduire et développer l’arborescence
Afficher/masquer les niveaux de liste avec les compteurs
Rendu d’objets avec de nouveaux crochets getStyleTree et getImageTree
et le hook getUserKeyLabel peut retourner du contenu HTML riche
Historique persistant pour accéder aux arbres précédemment ouverts, stockés dans le paramètre utilisateur TREEVIEW_PREFS
Les liens virtuels sont pris en charge dans les arbres :
utilisé comme objet réflexif affiché dans une table
utilisé dans une hiérarchie d’arborescence
Action avec champ de confirmation : la valeur par défaut est maintenant supportée
Optimisation du cache du navigateur :
environ 100ko transférés lors du chargement de l’interface utilisateur (à l’exclusion de la page d’accueil, principalement pour obtenir les droits et préférences de l’utilisateur)
par rapport à la 1.6Mo précédente qui sera mise en cache une fois (après chaque révision de plate-forme ou de module ou valeur CACHE_MAXAGE)
CACHE_MAXAGE a été modifié à 15 jours par défaut pour les ressources statiques
Direct access to list a été refactorisé en Search mode pour définir le positionnement par défaut de la recherche :
Masqué : le formulaire de recherche est masqué par défaut (utilisez le bouton de recherche)
Colonne : les filtres sont affichés sur chaque colonne interrogeable.
Docked : le formulaire de recherche est ancré sur le côté gauche de la liste.
Dialogue : la recherche s’ouvre dans une fenêtre popup à droite de l’écran.
Refonte de la page d’inscription
Refonte de la page de gestion du référentiel Git des modules
Ajout d’un rendu de la date et de l’heure pour travailler avec une date simplifiée sur l’interface utilisateur (ex : mois ou année) ou une heure (ex : sans secondes)
USE_DOC_PREVIEW=no est maintenant disponible pour masquer l’aperçu du document (téléchargement direct sur la liste)
Ajouter le badge de compteur lorsqu’une liste enfant est déplacée dans un onglet de formulaire
Nouvelles fonctions pour personnaliser le rendu des filtres utilisateur :
$ui.view.prefs.userFiltersTitle : pour remplacer la barre d’en-tête complète
$ui.view.prefs.userFiltersBadge : pour remplacer chaque rendu de badge
Nouvelle fonction $ui.detachURL(ctn,url,options)
pour ouvrir une nouvelle fenêtre avec le moteur d’interface utilisateur
avec ou sans pièces principales (menu, en-tête…)
pour détacher l’URL (objet externe…) de la page principale
utile sur un bureau multi-écrans
Nouvelles fonctions de menu miniaturisées :
bouton basculer dans les icônes d’en-tête et d’objet
préserver les sous-menus ouverts et le défilement vertical
l’ancien bouton basculant (en bas) a été supprimé pour prendre en charge le redimensionnement en survol
Confirmer le dialogue sur Action
hook initAction pour préparer les champs d’action avant le rendering
width du dialogue en fonction de la taille du gabarit de la div supérieure
Dialogue de recherche :
Grouper les champs par zones
Nouvelle aide à la recherche sur les champs texte/numérique :
des règles simples : starts with, contains, lower or equals than…
joindre des règles avec and or
Rechercher des références d’objets :
par valeurs : permet de rechercher sur tous les champs référencés (user-key, wildcard, partial key…)
par Id (nouveau) : recherche une seule référence avec l’icône cible (join by row_id)
Nouveau modèle global de rendu de liste :
Pour afficher le nombre de notices et le numéro de page actuel dans le titre et le pied de page
Pour permettre un nouveau placement des boutons de pied de page par défaut, la barre de navigation….
Voir le modèle de liste Simplicite.UI.Globals.list.template
Editeur de modèle d’objet hérité :
Préserver les zones parentales (bordure beige) : aucune modification n’est autorisée dans les modèles hérités.
Les champs hérités (bordure en pointillés) peuvent être déplacés dans des zones enfant.
L’éditeur de modèle permet de cacher des zones (ajoute la classe hidden à div)
Nouveau rendu GRID pour les champs de texte long : affiche un tableau json 2D dans une table éditable.
Couleurs et icônes sur la liste des valeurs :
pour remplacer le style de champ de chaque code d’énumération
utilisation d’étiquettes et/ou d’icônes colorées, de listes, de formulaires, de plateaux
sont rendus avec le control select2 (voir https://select2.org)
Prochainement : tableau croisé, boutons de transition….
• Prévisualisez la hiérarchie de l’arborescence sur le formulaire principal :
Notification avec objet cible caché (Desktop/Androïd/iOS)
Envoi à travers les données personnalisées du message FCM (ex : Vous devez signer une nouvelle commande !)
Ouvrir l’objet désiré sur ok/tap (ex : le bon de commande)
$ui.onMessageReceived(msg) peut être remplacé pour des comportements spécifiques
Le formulaire d’envoi a été libéré pour sélectionner tout objet accessible par le Social user