Al poblar una tabla desde un objeto List<List> me muestra todos los valores en la primera columna [4, 2006, 3] - bonita 7

Buenas tardes a toda la comunidad.
Soy nuevo en Bonita y desde hace un tiempo que tengo problemas para poblar una tabla en el UI Designer con los datos que desde un conector puse en una variable collection (Una Lista de Lista).
Traer los datos no fue complicado, pero el problema lo tuve al poblar la tabla, que si bien gracias a otros hilos del foro pude ponerle valores, lo que no pude hacer es que esos 3 campos que traigo desde la consulta, me los muestre en 3 columnas distintas. Lo que hace es traerme todos los campos con el formato json y los pone como si fuera un solo valor en la primera columna de esta manera: [ 4, 2003, 3 ] y lo que necesito es que en al columna 1 ponga 4, en la columna 2 : 2003 y en la columna 3 : 3.
trate de usar el campo “Claves de columna” pero no se como referencias los campos, ya que no tiene encabezados.
los valores los pongo en una variable llamada ‘miLista’ definida con un API : …/API/bpm/activityVariable/{{taskId}}/milista1 donde milista1 es la variable de proceso de tipo List o collection. trate de usar solo una List pero no funciono.
Los valores que me trae la variable en el formulario son:

{ “name”: “milista1”, “description”: null, “transientData”: false, “className”: “java.util.Collection”, “containerType”: “PROCESS_INSTANCE”, “tenantId”: 0, “tenantId_string”: “0”, “id”: 114, “id_string”: “114”, “containerId”: 53, “containerId_string”: “53”, “value”: [ [ 4, 2003, 2 ], [ 4, 2004, 2 ], [ 4, 2005, 2 ], [ 4, 2006, 2 ], [ 4, 2007, 2 ], [ 4, 2008, 3 ], [ 4, 2009, 3 ], [ 4, 2010, 3 ], [ 4, 2011, 3 ], [ 4, 2012, 3 ], [ 4, 2013, 4 ], [ 4, 2014, 4 ], [ 4, 2015, 4 ], [ 4, 2016, 4 ] ] }

Alguien tiene alguna pista de como hacer para que estos valores me aparezcan en las 3 columnas correspondientes?

muchas gracias

1 Like

Hola Robin.
¿Lograste crear la tabla con los valores de la base de datos por separado?
Tengo la misma duda.

Yo lo hice de esta manera:

  1. se crea una variable de tipo java.util.colletion con nombre, por ejemplo milista, en las variables de proceso.
    2.- en la seccion de Ejecucion - Conectores de entrada, creo la consulta a la base de datos, en mi caso de tipo database mysql (1.0.0).
    3.- designo el modo de salida como Modo scripting.
    4.- en la definicion de las operaciones de salida, agrego mi variable ‘milista’ y seteo que tome valor de un script.
    5.- el script debe tener:

import groovy.json.JsonBuilder;

List milista1 = new ArrayList();
//* mcampo1 y mcampo2 son los nombres que yo utilice para este ejemplo, puede ser cualquier nombre y
// cualquier cantidad de campos

def builder = new JsonBuilder();

while(resultset.next()){

// en va el numero de la columna o registro de nuestra consulta, que tiene el valor
// que queremos poner en este campo de milista, igual con el 2

def lin1 = builder {
	miCampo1 resultset.getObject(1).toString()
	miCampo2y3 resultset.getObject(2).toString() + ' ' + resultset.getObject(3).toString()
	miCampo4 resultset.getObject(4).toString()
            miCampon resultset.getObject(n).toString()
}
milista1.add(lin1);

}

return milista1;

6.- en el formulario se crea una variable con un nombre por ejemplo mitabla de tipo ‘External API’ y en el campo ‘API URL’ se le ingresa el valor: …/API/bpm/activityVariable/{{taskId}}/milista donde ‘milista’ es el nombre de la variable de proceso.

7.- Se agrega al formulario un elemento TABLE, con la siguiente configuracion:

Cabeceras: (acá van las descripciones de los campos que traemos de la consulta,es solo para visualizar no para referencia, por lo que pueden poner cualquiera):
campo1, campo2, campo3, campon

Contendio: (acá va el nombre de la variable de reporte que cree)
mitabla.value

Claves de columna (acá van los nombres que defini cuando defini mi variable en el script, estos nombres si son de referencia por los que tienen que ser los mismos a los del script)
miCampo1, miCampo2y3, miCampo4, miCampon

Con esto debería ser suficiente para que les tome los varoles de la consulta de base de datos.
Espero les sirva

Saludos
Robin

Buenas yo también soy nueva trabajando con Bonita BPM estoy realizando mi tesis de grado y me surgió el mismo problema. ¿has podido mostrar los datos de la variable List en la tabla?

Como lograste mostrar los datos en la primera columna. Intente con el API que especificaste y no me muestra nada en la tabla…

mismo problema

Para poder mostrar los datos que se obtuvo de la base de datos no puede utilizar una variable de tipo List ya que la estructura que se obtiene es una lista de lista y para mostrar los datos en una tabla es necesario una lista de objetos, para obtener esta lista de objeto utilizo una variable de tipo ArrayList.

yo defino una Lista de objetos arrayList y de igual forma no me funciona.

mi codigo:

final List<List<0bject >> resultTable = new ArrayList<List<0bject>>();

int maxColumn = resultset.getMetaData().getColumnCount()+1

while(resultset.next())
{
final List<0bject> row = new ArrayList<0bject>()
for(int colIndex = 1; colIndex < maxColumn ; colIndex++)
{
row.add(resultset.getObject(colIndex))
}
resultTable.add(Collections.unmodifiableList(row));
}

return resultTable

me quedo el comentarios arriba…

Hola,
A mi me funciono de la siguiente manera:

import groovy.json.JsonBuilder;

List milista1 = new ArrayList();
def builder = new JsonBuilder();

while(resultset.next()){
def lin1 = builder {

	campo1 resultset.getObject(1).toString();
	campo2 resultset.getObject(2).toString();
	campo3 resultset.getObject(3).toString();
	campo4 resultset.getObject(4).toString();
	campo5 resultset.getObject(5).toString();
	campo6 resultset.getObject(6).toString();
	campo7 resultset.getObject(7).toString();
	campo8 resultset.getObject(8).toString();
	campo9 resultset.getObject(9).toString();
	campo10 resultset.getObject(10).toString();
	campo11 resultset.getObject(11).toString();
}
milista1.add(lin1);

}
return milista1;

muchas gracias, tengo otro inconveniente, me funciona perfecto

con un solo campo pero cuando agrego los otoros dos me pone problemas
import groovy.json.JsonBuilder;

List milista1 = new ArrayList(); //* mcampo1 y mcampo2 son los nombres que yo utilice para este ejemplo, puede ser cualquier nombre y // cualquier cantidad de campos

def builder = new JsonBuilder();

while(resultset.next()){

def lin1 = builder {
campo1 resultset.getObject(1).toString() //funciona con este
campo2 resultset.getObject(2).toString() // cuando agrego estas lineas deja de funcionar el conector
campo3 resultset.getObject(3).toString()// cuando agrego estas lineas deja de funcionar el conector
}
milista1.add(lin1);
}

no se que error había cometido pero ya funciona tal como comentaste muchas gracias llevaba varios días enfrascado en este punto