Nouvelle version de Simplicité

Un changement de digit implique de grandes nouveautés, nous allons nous atteler à détailler les plus importantes au sein de ce billet de blog. Asseyez-vous confortablement la ligne Simplicité fait un stop à la station « Bonne Nouvelle ».

De la V4 à la V5 il n’y a plus de patchs

La première nouveauté de cette V5 concerne le versioning. Exit les patchlevels, dorénavant les versions sont appelées plus communément 5.X.Y . Cette façon de nommer doit nous permettre d’améliorer la lisibilité des nouvelles versions que nous livrons :

• Le numéro (ici 5) est le numéro de la version majeure
• Le x correspond au numéro de version mineure (c’est l’équivalent des niveaux de patchlevel des anciennes versions)
• Le y correspond au numéro de révision, il n’existait pas dans les versions précédentes (le Git commit ID était utilisé pour suivre les révisions, ce qui n’était pas très intuitif), il sera augmenté à chaque fois qu’une révision.

À noter, nous profiterons de ce changement de versionning pour être plus dynamique sur la sortie des versions ainsi V 5.0 étant officielle, la V 5.1 sortira donc 1 à 2 mois seulement après, la version V 5.2 suivra la même temporalité. Il y aura des beta et de releases plus régulièrement ceci permettant de limiter les risques liés aux upgrades.

Breaking change, mind the gap between the train and the plateform

Côté serveur (back) :

Changement très important en termes de plateforme technique : avec la version 5 il n’y a plus de support pour le JDK 1.8, pour faire tourner Simplicité il vous faut dorénavant être à minima sur une version 11. Mais comme toujours, il vaut mieux utiliser un JDK à jour, 15 au moment d’écrire ces lignes.
À noter également la fin des composants legacy (version 3.2 de Simplicité) et la dépréciation de « GrantHooks » au profit d’un nouveau script partagé « PlatformHooks ».

Les breaking change côtés serveur

Côté client (front) :

Fidèles à notre leitmotiv de mise à jour des composants que nous utilisons pour la UI (User Interface). Bootstrap 4, Fullcalendar 4 et Jquery 3.5.1 deviennent la norme.

S’il est toujours possible d’utiliser les anciennes versions de ces composants tiers (sauf pour jQuery) nous conseillons vivement de migrer vos développements sur ces nouvelles versions. Les anciennes versions de ces composants ne seront plus supportées dans la prochaine release majeure.

Il faut considérer ça comme une aide la transition, mais qui ne dispense pas de faire cette transition 🙂 .

Les breaking changes côté client

UI & UX : Une interface enrichie, des fonctionnalités centrées sur l’utilisateur et le designer.

UI & UX les nouveautés

Pixel is dead, vive le rem

Le diable se cache dans les détails, il faut aller voir du côté du CSS pour trouver le premier « gros » changement avec le passage à bootstrap 4, exit les « px » welcome les « rem » (1rem=16px). Cette unité de mesure offre une bien meilleure réactivité de l’affichage en fonction de la taille de l’écran. Ce qui nous a permis d’inclure une fonctionnalité d’accessibilité très pratique, un slider à la main de l’utilisateur permettant de zoomer à volonté.

Slide to zoom

Au titre des nouveautés apportées par Bootstrap 4 l’utilisation du « flex » en lieu et place des traditionnels « float » ceci nous a permis de développer un mode compact ou aéré. Très pratique pour les écrans contenant d’imposants formulaires puisque les libellés des champs passent à gauche et les marges se réduisent pour gagner un maximum de place.

Mode compact ou aéré

Concurrence d’accès : gestion plus fine des droits d’accès au formulaire

Un nouveau mode appelé « verrouillage » permet de bloquer l’ouverture d’un formulaire en mise à jour. En d’autres termes la première personne qui ouvre un formulaire pose automatiquement un verrou sur le formulaire. Les autres utilisateurs qui ouvrent ce même formulaire seront en lecture seule et verront la personne qui détient le verrou grâce à un petit cadenas au niveau de l’avatar en haut du formulaire.

Pour mémoire les autres « timestamp » sont :

  • Aucun : il n’y a pas de timestamp en base.
  • Optimiste : c’est le mode historique, en concurrence d’accès c’est le premier qui passe qui « gagne », les autres doivent se synchroniser plus tard.
  • Non bloquant : tout le monde peut mettre à jour et « écrase » les mises jours des autres.
  • (le nouveau) Verrouillage
Concurrences d'accès, une gestion plus fine des droits

Uploader des documents ne se fait plus au singulier

C’était un besoin récurrent des utilisateurs de Simplicité, permettre l’upload de plusieurs documents sur un seul champ (de type document). Aujourd’hui rien de plus simple, en paramétrant un rendering de type « multi-doc » sur le champ document l’utilisateur peut uploader N documents en choisissant via le sélecteur du navigateur ou directement en drag’n’drop.
Petite cerise sur l’upload, il est également possible de choisir la preview qui sera faite : en liste ou en vignette.
À savoir qu’il est également possible de limiter types de fichiers (MIME-types ou extensions : pdf, image…) ainsi que de préciser des tailles minimales ou maximales.

Nouveaux uploads des documents

Amélioration des recherches prédéfinies

Il était possible de créer des recherches prédéfinies et de les enregistrer pour que l’utilisateur final puisse les lancer. Dans la V5 « Bonne Nouvelle » nous avons fait une séparation entre la lecture et l’écriture. On peut ainsi créer des recherches qui sont publiques modifiables ou non.
Par défaut, le droit d’écriture et de lecture sont activés, mais il est désormais possible de ne rendre ces recherches disponibles qu’en lecture seule.

Fonction impersonate et changement d’utilisateur facilité

De nouveaux modes pour aider les designers à développer plus rapidement (et facilement).

Le « God mode »

C’est un « super utilisateur » qui permet de se reconnecter, sans password, à n’importe quel compte existant. Ce mode est très utile pour le développement, cela permet de changer de profil sans forcément avoir tous les mots de passes de tous les users. Il est possible de changer d’utilisateur en mettant seulement le login de ce dernier.
En production, cela peut servir pour les fonctions de supports pour prendre la main à distance et reproduire un problème.

Évidemment à réserver à des utilisateurs nommés, ce flag ne sera pas mis au niveau global sur la plateforme.

Nouvelle fonction permettant de se mettre à la place d’un utilisateur

Le « Change user mode »

Ce nouveau mode offre la possibilité de se connecter avec tous les comptes avec lesquels je me suis connecté sur le poste de travail (en local storage). C’est un usage normal que l’on peut faire en production si nous avons plusieurs casquettes au lieu de se déconnecter et de ressaisir le mot de passe.

Pillbox des liens N-N, et listes avec compteurs (group by)

La représentation d’un objet vers un autre évolue, la relation n’est plus forcément une liste, mais ici des vignettes sous forme de pillbox que l’on peut ajouter ou supprimer. L’action effectuée fera une mise à jour en base.
Ainsi il est désormais possible d’éditer et faire des recherches de cette relation N-N directement depuis la liste. Ce sera ici une recherche « fulltext » sur la clef fonctionnelle. Par exemple, ma clef fonctionnelle est une liste de pays, il me suffira de taper %Fra% pour trouver la France.

Pillbox des liens N-N

Autre évolution sur les listes, la possibilité de grouper les éléments d’une liste avec un compteur. L’usage ici sera typiquement de grouper des familles de produits (dans notre démonstration il s’agit de tablettes, ordinateurs, smartphones…).

Groupement des les items par catégories

Une gestion des erreurs simplifiée

Il arrive que les formulaires soient disposés sous forme d’onglets. De fait lorsqu’une erreur apparaissait sur un autre onglet du formulaire il était difficile de s’y retrouver.
Dorénavant un simple clique sur l’erreur remontée (sur le haut de page) permet d’y accéder grâce au focus qui sera fait. Simple comme Simplicité.

Gestion des erreurs simplifiée

Chargement des pages plus fluide et nouveaux inputs ranges

Les spinners classiques laissent place à des chargements plus fluides de types skeleton (sur les listes, formulaires et treeview).

Chargement « skeleton » des interfaces


Également au titre des nouveautés sur les inputs ranges :

  • Des sliders.
  • Des étoiles pour afficher des « rates ».
  • Des compteurs au sein des menus (pour les diagrammes d’états).

Étoiles
Slider

De nouveaux rendus : évolution du notepad et de nouveaux champs

Nouveau rendering plus riche du notepad, tout est stocké dans un blob en base (au format JSON), mais sans habilitation particulière.

Il est ainsi possible d’avoir :

  • Des check-lists.
  • Une fonction sociale intégrée au champ notepad.
  • Utilisation du markdown pour le contenu riche.

Le cas d’usage est typiquement pour faire du suivi opérationnel de dossier, de l’avancement de tâche ou du pilotage de dossiers.

Nouveau rendu du Notepad

Concernant les autres nouveautés :

  • Les « text-area » se redimensionnent dorénavant automatiquement en fonction du texte qui y est inséré. C’est un paramétrage à inscrire (h=0). Simplicité traduira ce paramètre comme un autosize du champ. Le composant s’agrandie ou se réduit en fonction du contenu.
  • Les champs de textes longs peuvent maintenant avoir un rendu de type « grille ». Ce rendu est stocké comme un tableau JSON en base. Lorsque l’on passe en édition, chaque cellule est éditable.
  • « Synthèse » et « reconnaissance vocale », sur les textes simples il est possible de paramétrer la synthèse vocale qui permettra la lecture du contenu du champ par le navigateur (compatible avec certains navigateurs). Ainsi que la reconnaissance vocale pour peupler ledit champ. Il est bien entendu possible d’éditer manuellement le texte a posteriori.
Autosize des champs, Grille et Synthèse vocale

Des raccourcis en page d’accueil pour accéder plus facilement aux éléments de l’application

Historiquement les raccourcis allaient se loger dans le menu en haut à droite du header de l’application. Ce mode reste disponible, mais il est maintenant possible d’afficher en plus ces raccourcis en page d’accueil (comme une vue) de l’application.

Ces raccourcis supportent également les infobulles.

De nouveau raccourci en page d'acceuil
Possibilité d’afficher des raccourcis sur les vues (typiquement en page d’accueil)

Exports bufferisés, une importante évolution UX à la frontière avec le back-office

En V5, à l’upload ou au download de plusieurs fichiers tout peut être bufferisé et par définition asynchrone. Ce n’est pas le navigateur qui fait un download mais Simplicité qui gère en back-office.

Lorsque les utilisateurs font des traitements avec de gros fichiers, il n’y a plus d’éléments bloquants. Les instances d’exports sont isolées dans des espaces particuliers pour éviter tout conflit avec ce qu’il se passe à l’écran.

Composants : De nouvelles API

Composants

Slack, Trello et Docusign rentrent dans la danse des API

La nouvelle V5 de Simplicité intègre des API (class helper) qui permettent d’interagir avec Trello et Slack. À titre d’exemple ces API sont utilisés dans notre démo pour les alertes (sur transitions d’états). Les alertes anciennement envoyées via les emails par exemple peuvent l’être via Trello ou Slack. Ce sont des usages à adapter en fonction des problématiques de chaque application bien entendu.

Docusign est désormais un objet natif avec toutes les librairies à jour. Le processus de signature de document est porté nativement. Cela permet de mettre une enveloppe qui contient N-documents avec des paraphes et des espaces de signatures ainsi que des listes de destinataires qui peuvent être des utilisateurs connus de la plateforme ou des utilisateurs externes. Par la suite tout est envoyé chez Docusign, les webhooks implémentés permettent à Simplicité de savoir qui a signé, tout est stocké dans l’application.

Refonte du composant Timesheet

Ce composant existé dans les précédentes versions de la plateforme, il est de retour dans la V5. Ainsi entre deux ressources, par exemple, une personne et un projet, il est possible d’affecter des tâches avec des données au sein de cette relation N-N. Cela permet typiquement d’imputer des temps en fonction de tâches décrites.

Le timesheet peut-être définit par jour / par semaine / par mois. Il est également possible de cliquer sur une tâche pour changer l’angle de vue par contraposée.

Timesheet, un nouveau rendu permettant de nouvelles vues
Nouveau rendu de timesheet

Le composant news fait sont (grand) retour !

Ce composant permet de prévenir les utilisateurs :

  • Sous forme d’un popup lors de la connexion de l’utilisateur
  • Via des articles dans une nouvelle vue ou par un raccourci
  • Avec un défilement horizontal dans le pied de page (rechargé toutes les 5 min).
Composant news fait son retour

Les tableaux croisés ou tables pivots deviennent éditables

À partir du moment où un tableau croisé à des lignes éditables il est possible d’en modifier les cellules en cliquant simplement dessus. Le cas ici sera typiquement pour des traductions. Il est ainsi possible nativement de cliquer dans une cellule à traduire pour directement éditer le texte et la valeur.

Le bouton de sauvegarde permet d’envoyer toutes les traductions « en masse ».

L’usage de cette fonctionnalité pour la matrice des traductions est un exemple qu’il est possible d’appliquer à d’autres cas bien entendu.

Tableaux croisés ou tables pivots deviennent éditables
Tableaux croisés permettent l’édition en masse des valeurs

Des évolutions attendues pour la version mobile

Toujours sur le principe de l’application hybride (Cordova) cette nouvelle application compatible V5 permet de faciliter grandement la gestion des Upgrades (toutes les ressources statiques sont téléchargées en local).
Elle se mettra à jours toute seule sans passer par le store. Toute application V5 de Simplicité peut se connecter avec les applications déployées dans l’Apple Store et le play Store.

Designer-Admin

Designer et Admin

Nouvelles possibilités avec les Classloader

Afin de limiter les problèmes d’incompatibilités de nos composants Simplicité. Il est dorénavant possible de charger les Classloaders de composants tiers dans un seul Classloader (stack de Classloader)… Pas de collision possible (par exemple avec le composant Docusign).

Le monitoring s’est doté d’un nouvel onglet « ClassLoaders » permettant de debuguer tous les Classloaders indépendamment les uns des autres.

Par ailleurs, il est à noter que le composant Monitoring n’est plus une Iframe, il est maintenant intégré nativement à Simplicité.

Un nouvel éditeur de code avec un accès facilité aux ressources

Pour les designers qui ne codent pas dans Éclipse, VScode ou tout autre IDE, l’éditeur de code s’est amélioré.

L’éditeur de code se dote d’une navigation facilitée pour accéder plus rapidement aux ressources des différents modules. La navigation en arbre permet aisément d’accéder aux différents objets.

Gestion des langues améliorée

À sa première connexion l’utilisateur choisi désormais ça langue de préférence parmi les langues connues par la plateforme.

Cette information est ensuite stockée au sein d’un champ (« langue préférée ») pour l’utilisateur. Il aura par la suite la possibilité de changer a volée et facilement cette langue au besoin.

Changement de la langue à la volée

Une nouvelle fenêtre « à propos »

  • Affichage du titre de la version et du scope
  • Liens vers les CGU et de la version installée de la plateforme
  • Nouvelle ressource « À PROPOS » (français et anglais)

C’est une ressource qu’il est possible de modifier si nécessaire pour ajuster ou masquer une des informations.

C’est une ressource qu’il est possible de modifier si nécessaire pour ajuster ou masquer une des informations.

Nouvelle fenêtre à propos customizable
Nouvelle fenêtre « à propos » customisable

Un affichage plus clair des dépendances de modules et « clear chache » plus explicite

Il y a dorénavant une vraie dichotomie entre les dépendances de modules et la hiérarchie. C’est dorénavant beaucoup plus clair pour les designer-administrateurs de s’y retrouver.

Et enfin une information plus clair au clear cache de session :

  • Les sessions UI
  • Les sessions API (typiquement les accès mobiles)

Voilà les plus grandes nouveautés de cette V5.0 – Bonne nouvelle, mais comme cette liste n’est pas exhaustive nous vous conseillons de lire la release note complète ici-même