Bonjour tout le monde,

Je voudrais afficher une barre de progression qui affiche le pourcentage et le nombre d'agents traités au cours de l'exécution d'une procédure PL/SQL. Pour ce faire, j'ai défini un nombre bien déterminé d'agents par lot: c-à-d, lorsque que la procédure traite un lot (100 agent par exemple), j'affiche la barre de progression.

J'ai cherché des bouts de code et je les ai testé sur mon application. le problème est que la barre ne s'affiche que lorsque j'interromps la procédure.

Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
public void start() {
        percent = 0;
        isRunning = true;
        final Renderable rennable=this;
 
        // Create the progress thread
        progressThread = new Thread(new Runnable() {
            public void run() {
                while (isRunning) {
                    // Sleep for the specified amount of time
                    try{
                        Thread.sleep(PAUSE_AMOUNT_S);
                    }catch (InterruptedException failedSleep) { }
 
                    // Increase the finished percent, and render the page
                    // The standard approach would be to use the RenderManager
                    // But since this is a simple tutorial, we'll instead go directly
                    //  to the PersistentFacesState
                    try {
            			int numLot=(Integer)serviceDAO.findField("GrhPeriode", "numLot", getClauseWherePeriode());
            			System.out.println("numLot progress "+numLot );
            			System.out.println("numLotDepart progress "+numLotDepart );
            			if (numLot>numLotDepart) {
            				setTotalEmplTrait(getTotalEmplTrait()+incRepriseCalcul);
            				numLotDepart=numLot;
            				percent += percentElem;
            			}
            			if (totalEmplTrait==nbrEmpl) {
            				isRunning = false;
            			}
            			renderManager.requestRender(rennable); 
                    }catch (Exception failedProgress) {
                        failedProgress.printStackTrace();
                    }
                }
            }
        });
 
        progressThread.start();
    }
Faces-config:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
 <managed-bean-name>StyleBean</managed-bean-name>
  <managed-bean-class>com.d2i.control.progress.StyleBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>renderManager</property-name>
   <value>#{renderManager}</value>
   </managed-property>
   </managed-bean>
 
  <managed-bean>
   <managed-bean-name>renderManager</managed-bean-name>
   <managed-bean-class>com.icesoft.faces.async.render.RenderManager</managed-bean-class>
   <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
Merci d'avance