Ce billet fait partie d’une série d’articles en provenance du 🇨🇦 sur les bonnes pratiques Mendix et dédié uniquement aux francophones 😜. Vous trouverez en fin de page des liens vers les autres billets.


Vous avez certainement déjà créé des logiques dédiées à valider la cohérence de champs de saisie. Je vous invite à explorer les différentes méthodes qui peuvent être utilisées, de la plus basique à la plus recherchée. Bien entendu, une validation peut être appelée à de nombreux moments – par exemple, avant un événement de sauvegarde dans une base de données (before commit event handler) – mais mon propos va surtout se concentrer non pas sur le quand mais sur le comment, et plus particulièrement lorsque nous devons vérifier que notre utilisateur n’en a pas fait qu’à sa tête (cf. Le Père Noel est une ordure, où pour mémoire, Mme Zezette épouse X tente de remplir le champ sexe avec Rose…).

Validation à la pièce

La façon la plus simple et la plus rapide est effectivement d’utiliser l’option de validation offerte par le modeleur. Avec la version 9.19, vous pouvez spécifier le type de validation que vous souhaitez sur un champ :

  • Aucun (none) : c’est l’option par défaut, Comme son nom l’indique, aucune validation sur ce champ ne sera effectuée.
  • Requis (Required) : si le champ n’est pas renseigné, une erreur sera affichée sous le champ avec le libellé de votre choix. Ce libellé est défini par l’attribut Message qui vous est proposé de compléter.
  • Courriel (E-mail) : le contenu du champ devra correspondre à un format de courriel. Pour cela, une expression régulière est utilisée et que vous pouvez visualiser si vous éditez la condition. De nouveau, vous pouvez définir le message d’erreur qui sera affiché dans le cas où la validation échoue.
  • Personnalisé (Custom) : vous pouvez définir la règle de validation que vous souhaitez à partir des informations disponibles dans votre contexte d’utilisation. Nous retrouvons encore le message d’erreur disponible.
Choix du type de validation au niveau du champ de saisie.

Génération dynamique d’un microflux de validation

Vous pouvez effectivement demander au Modeleur de produire pour vous un microflux de validation. Pour cela, vous devez cliquer (clic-droit) sur un champ de votre formulaire puis choisir l’option [Générer un microflux de validation] (Generate validation microflow…) du menu contextuel.

Menu contextuel offrant le choix de générer le microflux de validation. Dépendant de la version de Modeleur que vous utilisez, cette option peut ne pas être disponible. Dans ce cas, vous devrez écrire ce microflux totalement par vous même.

L’interface d’aide pour l’écriture du microflux de validation vous permettra de lui donner un nom (la bonne pratique demande que ce microflux commence par le préfix VAL_, suivi de l’entité sur laquelle la validation va être opérée et enfin, on peut ajouter un complément verbal de type : EstValide. Ce qui donnerait dans mon exemple VAL_PropertyKey_IsValid ou VAL_ProprieteCle_EstValide).

Il n’y a rien de bien compliqué pour créer des contraintes. On peut définir autant de critères de validation que l’on souhaite sur les attributs de l’entité (ou objet) qu’on manipule. En final, il ne reste plus qu’à cliquer sur l’action [Générer microflux] (Generate microflow) et le tour est joué.

Nous obtenons ceci sans grand effort :

Comme nous pourrions le dire en bon québécois “ça fait la job“. Mais est-ce optimal ?

Pour aller plus loin

Je reprends le même microflux généré à l’étape précédente, et je vais y mettre un peu de couleurs (en suivant ma propre palette de couleurs – cf. article présentant l’utilisation de couleurs dans les microflux). Le jaune ici indique que nous avons à faire à une variable. Que constate-t-on ? Oui, vous avez raison. On ne fait que créer et manipuler des variables tout au long de la logique et de plus, on doit maintenir un état final : est-ce que la validation a échoué ou non.

Peut-on faire mieux ? La réponse est oui. Cependant, ceci va nous coûter un petit investissement, mais ô combien bénéfique au final. Vous n’êtes pas fainéant? Alors, suivez-moi…

Pour ce faire, il nous faut le module Validation Feedback Collector disponible dans le Marketplace de Mendix (chercher Validation dans la catégorie Modules). Ce dernier a été développé il y a bien des années par mon collègue, Rik BOS (j’ajoute une petite aide expliquant comment importer ce module en fin de billet ⬇️).

Dès lors, nous allons nous débarrasser de toutes les variables et simplifier grandement le microflux.

Dans cette version épurée, le test conduit, en cas d’échec, directement à l’affichage d’un message d’erreur sous le champ correspondant. A la fin du microflux, vous remarquerez l’utilisation d’une action java. Que fait-elle ? Tout simplement, elle retourne la liste de tous les messages d’erreurs (ou ValidationFeedback) qui existent pour l’objet Property validé. Il ne reste plus qu’à retourner le résultat de l’expression suivante : la liste des erreurs est-elle vide ? Si oui, ceci signifie qu’aucune erreur n’a été soulevée. Simple non ?

Plusieurs remarques encore concernant cette dernière version de microflux que je vous propose :

  1. Prenez l’habitude de toujours ajouter un intercepteur d’événement  (event handler) sur une action java et gérer l’erreur qui lui est liée. Dans ce même processus, une erreur doit toujours être journalisée avec son contexte (stack trace) et je préconise dans ce cas de retourner le statut faux, indiquant que l’action de validation a échoué.
  2. Si votre application est multi langues, vous devrez redéfinir chaque message d’erreur pour chacune d’elles.
  3. Toujours être à l’affût de pouvoir réutiliser des logiques de validation. Par exemple, si vous devez vérifier qu’une date est plus grande que l’autre, vous devez extraire cette validation en un sous microflux générique qui pourra être utilisé partout ailleurs dans votre application, voir être exporté pour former votre boîte à outils personnel.
  4. N’hésitez pas à être curieux et explorer les options offertes par le module ValidationFeedback. Vous pouvez décider, par exemple, de ne pas afficher les messages sous chaque champ de saisie fautif, mais concaténer toutes les erreurs pour au final n’afficher qu’un résumé des erreurs.

Maintenant, à vous de jouer !

💡Comment installer le module Validation Feedback Collector

Depuis votre Modeleur, ouvrir le MarketPlace de Mendix et rechercher validation, comme le montre la copie d’écran ci-dessous. Puis, cliquez sur Installer (Download).

Une fenêtre vous demandera si vous souhaitez remplacer ou ajouter le module. Si c’est la première fois que vous découvrez ce module, alors aucune hésitation : Ajouter en tant que nouveau module (Add as a new module). Puis, cliquez sur le bouton d’action Import.

Si le module est bien installé, cette fenêtre apparaîtra : Le module a été importé avec succès. Il est disponible dans l’Application Explorateur sous App. Publication > Marketplace modules.


Ce billet fait partie d’une série d’articles en provenance du 🇨🇦 sur les bonnes pratiques Mendix et dédié uniquement aux francophones 😜.
Nous mettrons à jour la liste des billets de la série au fur et à mesure de leur publication.

#

1 commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.