OperationHandler

Au coeur du Core !

Flower fournit nativement quelques OperationHandler comme le :

  • com.flower.docs.core.tsp.operation.LogOperationHandler : permet de logger le contexte pour lequel il est exécuté
  • com.flower.docs.core.tsp.operation.DroolsOperationHandler : permet d’appliquer des règles métiers (à travers une table de décision Drools)

Développement

En plus de ceux fournis nativement, il est possible de développer son propre OperationHandler.

package com.xxx.sample;

import org.springframework.stereotype.Component;
import com.flower.docs.operation.api.OperationContext;
import com.flower.docs.operation.api.OperationHandler;

@Component
public class OperationHandlerSample implements OperationHandler
{
    public void process(OperationContext context)
    {
    }
}

Pour que cet OperationHandler puisse être utilisé par Flower, il est nécessaire que :

  • la classe soit présente dans le classpath de la JVM
  • que le package du handler (ici com.xxx.sample) soit scanné par Spring


Une fois ces deux étapes réalisées, l’OperationHandler sera appelé conformément aux abonnements définis.

DroolsOperationHandler

Cet OperationHandler s’appuie sur le moteur de règle Drools et une table de décision (fichier MS Excel) afin de détermine les règles à appliquer.

Une table de décision est composée de deux types de colonnes :

  • les conditions : détermine les cas dans lesquel appliquer une règle
  • les actions : les actions à exécuter pour une règle donnée

Au sein d’une table de décision, il est possible d’utiliser les méthodes suivantes à partir de l’objet util :

Tag Description
getDocumentService() Récupère le service de gestion de document
getFolderService() Récupère le service de gestion de dossier
getTaskService() Récupère le service de gestion de tâche
getVirtualFolderService() Récupère le service de gestion de dossier virtuel
getService(Component component) Récupère le service de gestion de composant
getClassService(Component component) Récupère le service de gestion des classes de composant
getTagClassService() Récupère le service de gestion des classe de tags
getAclService() Récupère le service de gestion d’ACL
getFactDAO() Récupère la DAO de gestion de l’historique
create(Component component) Crée le composant fourni en entrée et retourne celui réellement créé
update(Component component) Modifie le composant fourni en entrée
changeClass(Component component, String classId) Modifie la classe du component fourni en entrée et propage uniquement les tags en commun entre la classe initiale et la nouvelle
getClassId(Component component) Récupère la valeur de la classe du composant sinon vide
setClassId(Component component, String classId) Définie la valeur de la classe du composant
getStatus(Component component) Récupère la valeur du statut du composant
setStatus(Component component, Status status) Définie la valeur du statut du composant
getTagValue(Component component, String tagName) Récupère la valeur d’un tag sinon vide
setTagValue(Component component, String tagName, String tagValue) Définie la valeur d’un tag en modifiant sa valeur s’il existe, sinon en ajoutant un tag
setTagReadOnly(Component component, String tagName, boolean readonly) Modifie un tag en le mettant en lecture seule ou lecture écriture
addTagValue(Component component, String tagName, String tagValue) Ajoute une valeur à un tag existant ou ajoute le tag
getAnswerId(Task task) Récupère la dernière réponse appliquée sur une tâche
log(String message) Affiche dans les logs un message préfixé par [Drools] en INFO