Árvore de páginas

El visualizador de gráficos tiene como principal objetivo permitir que otras aplicaciones puedan mostrar gráficos personalizados dentro de Fluig. Para ello, basta sólo con registrar el servicio de gráfico en Fluig y proporcionar dos métodos rest. Uno que informará los parámetros de configuración del gráfico y otro que pondrá a disposición los datos.

El Visualizador de Gráficos permite exhibir en formato tabla, gráfico de columna y gráfico de torta.


1. Registrar el servicio de datos en Fluig.

Para registrar el servicio de datos del gráfico basta con enviar un mensaje asincrónico a Fluig.

El desarrollador deberá utilizar el evento "REGISTER_CHART_SERVICE". Será necesario pasar un objeto de tipo ChartServiceVO con los datos del servicio de datos en cuestión.

El objeto ChartServiceVO, disponible en el paquete com.totvs.technology.wcm.common.chart, está compuesto por los siguientes elementos:
String id: código del servicio de gráfico
String description: descripción del servicio de gráfico
String ParametersRest: URL del servicio rest que devolverá los parámetros
String dataRest: URL del servicio rest que devolverá los datos del gráfico

Ejemplo:

ChartServiceVO ecm1 = new ChartServiceVO("ECM1", "ECM - Volumes: Espacio utilizado (por volumen en %) ");
ecm1.setDataRest(“http://localhost:8080/portal/ecm/api/rest/ecm/volume/chartDataByVolume");
ecm1.setParametersRest(“http://localhost:8080/portal/ecm/api/rest/ecm/volume/chartParametersByVolume");
IntegrationUtil.sendAsyncMessage(WCMAsyncEvents.REGISTER_CHART_SERVICE.getEvent(), ecm1);

Este registro se debe ejecutar cada vez que se deploya la aplicación, es decir, cada vez que sube el fluig. Para ello, sugerimos crear un servlet en su aplicación con la opción loadOnStartup = 1, que se encargará de cumplir esta tarea.

2. Servicios de Parámetros 

Este servicio rest deberá devolver una lista de ChartParameterVO, que contendrá los parámetros que su servicio de datos necesitará para proporcionar los datos del gráfico. En base a este servicio el Fluig construirá la pantalla de configuración.

El ChartParameterVO (pacote com.totvs.technology.wcm.common.chart) esta compueto por los siguientes elementos:
int código id: código numérico secuencial que se utilizará para la búsqueda de los datos posteriormente.
String title: nombre del campo como aparecerá en la pantalla
String type: tipo de campo (ChartParameterVO.TYPE_STRING, ChartParameterVO.TYPE_NUMBER, ChartParameterVO.TYPE_DATA ou ChartParameterVO.TYPE_BOOLEAN)
String AllowedList: si el campo es tipo string, pueden desplegarse una lista con opciones para que el usuario seleccione. Estas opciones están separadas por “;”
boolean multipleSelection - > true/false, en caso de que permita o no la selección múltiple si el AllowedList está en uso.
String value - > Valor inicial si existe

Exemplo:
List<ChartParameterVO> params = new ArrayList<>();
ChartParameterVO param1 = new ChartParameterVO();
param1.setCode(1);
param1.setTitle("Código del Ítem");
param1.setType(ChartParameterVO.TYPE_STRING);
param1.setAllowedList(“Item 1;Item 2;Item 3”);
param1.setMultipleSelection(ChartParameterVO.SELECTION_UNIQUE);
params.add(param1);

ChartParameterVO param2 = new ChartParameterVO();
param2.setCode(2);
param2.setTitle("Exhibir solamente ítems activos");
param2.setType(ChartParameterVO.TYPE_BOOLEAN);
params.add(param2);
return params;


3. Servicio de Datos

El servicio REST deberá devolver una
ChartVO, con los datos para exhibir el gráfico.
O ChartVO (paquete com.totvs.technology.wcm.common.chart) está compuesto por los siguientes elementos:
String title: título que se exhibirá en el gráfico
String description: descripción del gráfico
String type: tipo do gráfico (ChartTypes.column.getName(), ChartTypes.pie.getName(), ChartTypes.table.getName()
Map<String, Object>[] source: datos del gráfico
ChartCategoryVO category: categorías
ChartSerieGroupVO[] seriesGroups: grupos de series

Ejemplo para un Gráfico de torta:

ChartVO result = new ChartVO("Espacio utilizado", "Volumen" + codVolFisic,ChartTypes.pie.getName());
Map<String, Object>[] source = new Map[2];
Map<String, Object> data0 = new HashMap<String, Object>();
data0.put("label","Utilizado");
data0.put("size",80);
source[0] = data0;

Map<String, Object> data1 = new HashMap<String, Object>();
data1.put("label","Livre");
data1.put("size",20);
source[1] = data1;
result.setSource(source);

ChartSerieGroupVO[] seriesGroups = new ChartSerieGroupVO[1];
ChartSerieGroupVO serieGroup = new ChartSerieGroupVO(ChartTypes.pie.getName(),"label");
ChartSerieVO[] series = new ChartSerieVO[1];
ChartSerieVO serie = new ChartSerieVO("size","label");
series[0] = serie;
serieGroup.setSeries(series);
seriesGroups[0] = serieGroup;

result.setSeriesGroups(seriesGroups);
return result;

Ejemplo para un Gráfico de columnas:
ChartVO result = new ChartVO("Espacio utilizado","Todos los volúmenes",ChartTypes.column.getName());

Map<String, Object>[] source = new Map[2]; 

Map<String, Object> data0 = new HashMap<String, Object>();
data0.put("label",”Item 1”);
data0.put("total",100);
data0.put("used",40);
data0.put("free",60);
source[0] = data0;

Map<String, Object> data0 = new HashMap<String, Object>();
data0.put("label",”Ítem 2”););
data0.put("total",120);
data0.put("used",60);
data0.put("free",60);
source[1] = data0;

result.setSource(source);

ChartCategoryVO category = new ChartCategoryVO("label");
result.setCategory(category);

ChartSerieGroupVO[] seriesGroups = new ChartSerieGroupVO[1];
ChartSerieGroupVO serieGroup = new ChartSerieGroupVO(ChartTypes.column.getName(),"Espaço(Mb)");

ChartAxiVO axis = new ChartAxiVO(20,true,"Espaço(Mb)");
serieGroup.setValueAxis(axis);

ChartSerieVO[] series = new ChartSerieVO[3];

ChartSerieVO total = new ChartSerieVO("total","Espaço Total");
series[0] = total;

ChartSerieVO used = new ChartSerieVO("used","Espacio Utilizado");
series[1] = used;

ChartSerieVO free = new ChartSerieVO("free","Espacio Libre");
series[i] = free;

serieGroup.setSeries(series);
seriesGroups[0] = serieGroup;

result.setSeriesGroups(seriesGroups);

return this.buildResponse(result);

Ejemplo para un Gráfico de tablas:

ChartVO result = new ChartVO("Espacio utilizado","Todos los volúmenes",ChartTypes.table.getName());

Map<String, Object>[] source = new Map[2];

Map<String, Object> data0 = new HashMap<String, Object>();
data0.put("label",”Item 1”);
data0.put("total",100);
data0.put("used",40);
data0.put("free",60);
source[0] = data0;

Map<String, Object> data0 = new HashMap<String, Object>();
data0.put("label",”Ítem 2”););
data0.put("total",120);
data0.put("used",60);
data0.put("free",60);
source[1] = data0;

result.setSource(source);

ChartSerieGroupVO[] seriesGroups = new ChartSerieGroupVO[1];

ChartSerieGroupVO serieGroup = new ChartSerieGroupVO(ChartTypes.table.getName(),"Espacio(Mb)");      

ChartAxiVO axis = new ChartAxiVO(20,true,"Espaço(Mb)");

serieGroup.setValueAxis(ejes);

ChartSerieVO[] series = new ChartSerieVO[4];

ChartSerieVO label = new ChartSerieVO("label","Item");
series[0] = label;

ChartSerieVO total = new ChartSerieVO("total","Espaço Total");
series[1] = total;

ChartSerieVO used = new ChartSerieVO("used","Espacio Utilizado");
series[2] = used;

ChartSerieVO free = new ChartSerieVO("free","Espacio Libre");
series[3] = free;

serieGroup.setSeries(series);
seriesGroups[0] = serieGroup;

result.setSeriesGroups(seriesGroups);

return this.buildResponse(result);

  • Sem rótulos