public void refresh() { try { Date now = new Date(); HashMap<String, Double> readyTasks = new HashMap<String, Double>(); HashMap<String, Double> execTasks = new HashMap<String, Double>(); HashMap<String, Double> suspendTasks = new HashMap<String, Double>(); HashMap<String, Double> expireTasks = new HashMap<String, Double>(); HashSet<String> performersNames = new HashSet<String>(); Collection<LightActivityInstance> ais = ProcessbaseApplication.getCurrent().getBpmModule().getActivityInstances(); for (LightActivityInstance ai : ais) { ActivityDefinition ad = ProcessbaseApplication.getCurrent() .getBpmModule() .getProcessActivity(ai.getProcessDefinitionUUID(), ai.getActivityName()); if (!ad.getPerformers().isEmpty()) { performersNames.add(ad.getPerformers().toString()); } if (ai.isTask() && ai.getState().equals(ActivityState.READY)) { if (readyTasks.containsKey(ad.getPerformers().toString())) { Double c = readyTasks.get(ad.getPerformers().toString()); readyTasks.put(ad.getPerformers().toString(), c.doubleValue() + 1); } else { readyTasks.put(ad.getPerformers().toString(), 1.0); } } else if (ai.isTask() && ai.getState().equals(ActivityState.EXECUTING)) { if (execTasks.containsKey(ad.getPerformers().toString())) { Double c = execTasks.get(ad.getPerformers().toString()); execTasks.put(ad.getPerformers().toString(), c.doubleValue() + 1); } else { execTasks.put(ad.getPerformers().toString(), 1.0); } } else if (ai.isTask() && ai.getState().equals(ActivityState.SUSPENDED)) { if (suspendTasks.containsKey(ad.getPerformers().toString())) { Double c = suspendTasks.get(ad.getPerformers().toString()); suspendTasks.put(ad.getPerformers().toString(), c.doubleValue() + 1); } else { suspendTasks.put(ad.getPerformers().toString(), 1.0); } } if (ai.isTask() && (ai.getState().equals(ActivityState.EXECUTING) || ai.getState().equals(ActivityState.READY) || ai.getState().equals(ActivityState.SUSPENDED)) && ai.getExpectedEndDate() != null && ai.getExpectedEndDate().before(now)) { if (expireTasks.containsKey(ad.getPerformers().toString())) { Double c = expireTasks.get(ad.getPerformers().toString()); expireTasks.put(ad.getPerformers().toString(), c.doubleValue() + 1); } else { expireTasks.put(ad.getPerformers().toString(), 1.0); } } } ArrayList<XYSeries> xySeries = new ArrayList<XYSeries>(); XYSeries seriesDataREADY = new XYSeries("READY"); ArrayList<Double> r = new ArrayList<Double>(); XYSeries seriesDataEXECUTING = new XYSeries("EXECUTING"); ArrayList<Double> rEXECUTING = new ArrayList<Double>(); XYSeries seriesDataSUSPEND = new XYSeries("SUSPEND"); ArrayList<Double> rSUSPEND = new ArrayList<Double>(); XYSeries seriesDataEXPIRED = new XYSeries("EXPIRED"); ArrayList<Double> rEXPIRED = new ArrayList<Double>(); for (String perf : performersNames) { r.add(readyTasks.containsKey(perf) ? readyTasks.get(perf) : 0); rEXECUTING.add(execTasks.containsKey(perf) ? execTasks.get(perf) : 0); rSUSPEND.add(suspendTasks.containsKey(perf) ? suspendTasks.get(perf) : 0); rEXPIRED.add(expireTasks.containsKey(perf) ? expireTasks.get(perf) : 0); } seriesDataREADY.setSeriesPoints(getPoints(seriesDataREADY, r)); xySeries.add(seriesDataREADY); seriesDataEXECUTING.setSeriesPoints(getPoints(seriesDataEXECUTING, rEXECUTING)); xySeries.add(seriesDataEXECUTING); seriesDataSUSPEND.setSeriesPoints(getPoints(seriesDataSUSPEND, rSUSPEND)); xySeries.add(seriesDataSUSPEND); seriesDataEXPIRED.setSeriesPoints(getPoints(seriesDataEXPIRED, rEXPIRED)); xySeries.add(seriesDataEXPIRED); removeAllComponents(); InvientCharts ich = createchart(new ArrayList(performersNames), xySeries); ich.setWidth("100%"); addComponent(ich); } catch (Exception ex) { ex.printStackTrace(); } }