Mar 11, 2024, 6:37:53 PM seb leridon

Progress bar management

Introduction

This service allows you to manage achievement percentage, number of successful actions, number of failures, and a final report.

Usage

Use the ProgressManagerService instance to:

  • register the process and get a feed token,
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 be 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);
}
  • pass the feed token to the process and update the number of successful actions (using incrementSuccess() method), number of failures, and add reports.
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);
    }
    
    ...
}

Use @progress macro in the template, and pass the feed token as an argument. This macro will make the JS calls to update the status.

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

Don’t forget to empty the feeds in the service.

REST API

REST web service methods available:

  • /rest/progressmanager/api/v1/progressfeed/[token of the feed]: achievement percentage
  • /rest/progressmanager/api/v1/progressfeed/[token of the feed]/success: success count
  • /rest/progressmanager/api/v1/progressfeed/[token of the feed]/failure: failure count
  • /rest/progressmanager/api/v1/progressfeed/[token of the feed]/report: report