11 mars 2024, 18:37:53 seb leridon

Barre de progression

Table des matières

Introduction

Ce service vous permet de gérer une barre de progression affichant pourcentage, nombre de succès ou échecs, ainsi qu’un rapport global de l’action en cours.

Usage

Utilisez la classe ProgressManagerService pour :

  • enregistrer le processus à suivre et récupérer un jeton (‘feedtoken’),
private final ProgressManagerService progressManagerService = ProgressManagerService.getInstance();

@View(value = VIEW_BATCH_ITEMS)
public String getManageBatchItems(final HttpServletRequest request) {
    List<Item> mylist = getAList(...);

    feedToken = progressManagerService.registerFeed(FEED_NAME, 0); // le total du flux peut être initialisé ici ou plus tard

    doMyProcess(mylist, feedToken); 

    Map<String, Object> model = getModel();
    model.put(MARK_FEED_TOKEN, _feedToken);
    return getPage(PROPERTY_PAGE_TITLE_..., TEMPLATE_..., model);
}
  • passer ce feedtoken en argument au processus à lancer, pour que le processus puisse mettre à jour le nombre de succès ou d’échecs (par exemple via la méthode incrementSuccess()), et ajouter des lignes de commentaires à afficher dans le rapport.
private final ProgressManagerService progressManagerService = ProgressManagerService.getInstance();

public int doMyProcess(List<Item> mylist, String feedToken) {
    progressManagerService.initFeed(feedToken, mylist.size());
    progressManagerService.addReport(feedToken, "start processing list...");
    
    for (Item item : mylist) {
        doSomething(item);
        progressManagerService.incrementSuccess(feedToken, 1);
    }
    
    ...
}

Utilisez la macro @progress dans le template, avec en argument le ‘feedtoken’. Cette macro fera les appels ajax nécessaires pour mettre à jour le statut de la barre de progression.

<@progress token='${feed_token}' showReport=false intervalTime=1000 />

Ne pas oublier de vider les contextes de flux dans le ProgressManagerService().

API Rest

Méthodes exposées par l’api Rest :

  • [/rest/progressmanager/api/v1/progressfeed/[feedtoken]] : pourcentage
  • [/rest/progressmanager/api/v1/progressfeed/[feedtoken]/success] : nb de succès
  • [/rest/progressmanager/api/v1/progressfeed/[feedtoken]/failure] : nb d’échecs
  • [/rest/progressmanager/api/v1/progressfeed/[feedtoken]/report] : rapport