Validation

Validation

La solution FlowerDocs embarque le moteur de règles JBoss Drools permettant d’ajouter une couche de validation métier lors de la création ou la mise à jour de composant. La définition de ces règles métiers s’appuie sur le format DRL (cf. The Rule Language).

Pour indiquer les règles métiers à appliquer, il faut définir la propriété validation.drl. Cette propriété doit être renseignée selon la syntaxe Spring.

Pour appliquer des règles présentes sur le système de fichier :

  • Sous Linux : file:///opt/FlowerDocs/drls/*.drl
  • Sous Windows : file:///C:/FlowerDocs/drls/*.drl

Exemple : règle de validation du montant d’un document

package com.flower.docs.core.tsp.validation.drools;

import com.flower.docs.domain.component.Component
import com.flower.docs.domain.document.Document
import com.flower.docs.core.tsp.validation.Errors

global org.slf4j.Logger logger;
global com.flower.docs.core.tsp.validation.RuleUtil util;

rule " Refus des montants supérieurs à 3000€"
   when
	document:Document(util.getTagValue(document,"Montant") > 3000)
	$errors:Errors()
   then
	logger.warn("Le document a un montant trop important");
	$errors.addError(document, "Montant", "Le montant "+util.getTagValue(document,"Montant")+" est trop important");
end

Légende :

  • Définition d’une variable globale permettant de logger des informations dans les logs applicatifs
  • Définition d’une variable globale exposant des méthodes utilitaires
  • Définition du nom de la règle métier
  • Condition sur le fait que l’objet soit un Document ayant un tag Montant dont la valeur est supérieure à 3000
  • Ajout d’une erreur dans le contexte de validation. Les messages ajoutés seront affichés dans une popup d’erreur présentée aux utilisateurs avec le code d’erreur F00039


Note : En fonction de la catégorie de composant, des conditions différentes doivent être utilisées :

  • tâche : task:Task() avec l’import com.flower.docs.domain.task.Task
  • dossier : folder:Folder() avec l’import com.flower.docs.domain.folder.Folder
  • dossier virtuel : virtualFolder:VirtualFolder() avec l’import com.flower.docs.domain.virtualfolder.VirtualFodler


Quelques méthodes sont mises à disposition pour faciliter l’utilisation des objets FlowerDocs au sein de règle Drools :

Méthode Description
String getClassId(Component component) Récupère l’identifiant de classe de composant
String getTagValue(Component component, String tagName) Récupère la valeur d’un tag
Status getStatus(Component component) Récupère le status d’un composant
String getAnswerId(Task task) Récupère l’identifiant de la réponse appliquée sur une tâche
void log(String message) Log une chaîne de caractères