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 tagMontant
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’importcom.flower.docs.domain.task.Task
- dossier :
folder:Folder()
avec l’importcom.flower.docs.domain.folder.Folder
- dossier virtuel :
virtualFolder:VirtualFolder()
avec l’importcom.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 |