11 mars 2024 18:37:53 seb leridon avatar

wiki : Documentation Technique > Barre de progression

Barre de progression

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 ); // the feed total can initialized here or later

 	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'echecs (par exemple via la méthode incrementSuccess()), et ajoute 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