04/04/2017
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.flower.docs.domain.search.SelectClause;
import com.flower.docs.operation.api.OperationContext;
import com.flower.docs.operation.api.OperationHandler;
import com.flower.docs.operation.api.SearchOperationContext;
@Component
public class OperationHandlerSample implements OperationHandler
{
private static final Logger LOGGER = LoggerFactory.getLogger(OperationHandlerSample.class);
public void process(OperationContext context)
{
LOGGER.info("Processing context: {}", context);
if (context instanceof SearchOperationContext)
{
SearchOperationContext searchContext = (SearchOperationContext) context;
SearchRequest searchRequest = searchContext.getRequest();
if (searchRequest.getSelectClause() == null)
{
searchRequest.setSelectClause(new SelectClause());
}
searchRequest.getSelectClause().getFields().add(FlowerFields.WORKFLOW_ID.value());
}
}
}
Le code ci-dessus permet d’ajouter à la requête de recherche le champ workflow dans la liste des champs à remonter.
Une fois cette classe compilée, elle doit être ajoutée dans le classpath Spring afin que celui-ci puisse découvrir l’OperationHandler
au lancement de FlowerDocs.