operation

Exécuter un Drools operation handler en test unitaire

Introduction Cet article explique comment exécuter un fichier Drools à partir d’une classe de tests, en mockant les classes de service. Sources Un projet exemple est disponible dans le projet flower-extras. Dans ce projet, on teste unitairement un handler basé sur la réponse à une tâche. Les tests unitaires sont situés dans la classe TaskAnswerTest. Import du fichier Drools Le code suivant permet de charger le fichier FileCheckAtCreationTest.xls et de le renvoyer lorsque FlowerDocs va chercher le fichier Drools.

Continuer à lire

Drools & Operation handler

La version 2.3.3 introduit un nouvel operation handler basé sur une table de décision Drools. Ces table de décision permettent par exemple de : modifier l’instance à sauvegarder ou à récupérer (nécessite un abonnement synchrone) de déclencher des actions spécifiques (par exemple, la création d’une tâche à l’insertion d’un document) Dans l’exemple ci-dessous, FlowerDocs crée automatiquement une tâche, à la création d’un document, en fonction de son tag VS_TypePli

Continuer à lire

Développer un OperationHook

Développer votre OperationHook afin de réagir à des opérations exécutées au sein de FlowerDocs. Introduction Cet articule décrit le développement d’un OperationHook. Il s’agit d’un OperationHandler, une classe Java permettant de réagir à l’exécution d’une opération au sein de FlowerDocs, pouvant être exécuté à travers une API REST : /{scope}/documents /{scope}/tasks /{scope}/folders /{scope}/virtual_folders Un OperationContext est fourni au hook pour fournir le contexte d’exécution de l’opération.

Continuer à lire

Développer un OperationHandler

Enrichissement d’une requête de recherche avant son exécution Dans cette partie, nous allons mettre en place un OperationHandler permettant d’afficher le nom du processus lors d’une recherche de tâche. Pour commencer, il faut créer la classe correspondant à l’OperationHandler implémentant l’interface OperationHandler de l’API FlowerDocs. La méthode process(OperationContext context) correspond au code exécuté avant ou après l’opération. package com.flower.docs.core.tsp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import com.flower.docs.domain.FlowerFields; import com.flower.docs.domain.search.SearchRequest; import com.

Continuer à lire

S'abonner à une opération

Prérequis Une classe de documents OperationHandlerRegistration existe dans FlowerDocs et référence les tags suivants : OperationHandler (chaîne de caractères) ExecutionPhase : BEFORE ou AFTER Action : CREATE, READ, UPDATE, SEARCH, ADD_CONTENT, DELETE_CONTENT, ANSWER ou ASSIGN ObjectType : DOCUMENT, TASK, FOLDER ou VIRTUAL_FOLDER Enabled (booléen) Asynchronous (booléen) RegistrationOrder (entier) StopOnException (booléen) Création de l’abonnement Dans FlowerDocs, les abonnements aux opérations sont stockés comme des documents. Pour nous abonner aux recherches de tâches, nous allons créer un document de classe OperationHandlerRegistration depuis l’interface graphique FlowerDocs.

Continuer à lire

Développer un microservice qui interagit avec FlowerDocs

Introduction Cet article vise à décrire la mise en place d’un microservice basique effectuant une recherche de document auprès de FlowerDocs. Thèmes abordés : développement d’un service REST avec Spring Boot et Maven utilisation de l’API Web Services de FlowerDocs Prérequis : Maven Utilisation d’un Artifactory Arondor (public ou interne) Création du projet Maven Cette partie fournit la configuration d’un projet Maven en incluant les dépendances nécessaires :

Continuer à lire

Nouvelle API : Opération API

Introduction Une API événementielle a pour but d’exécuter du code lorsqu’une opération a lieu dans un contexte précis. Il est possible d’effectuer des actions avant et après l’exécution de l’opération provenant de FlowerDocs. Les avantages de l’utilisation de cette nouvelle API sont : Stabilité : elle est pérenne, les développements spécifiques ne sont pas impactés à chaque sortie de version Générique et cohérente : elle s’applique sur tous les objets du domaine, sans dénaturer le produit Extensible : de nouvelles fonctionnalités peuvent être ajoutées sans impacter l’existant Scalable : il n’y a aucuns préjugés de l’architecture d’exécution (embarquant le spécifique sur une même instance, multi-agents) Un peu de vocabulaire Operation : Action sur un objet du domaine

Continuer à lire