Datatable Primefaces
Boa tarde pessoal..
Estou usando o datatable do primefaces para montar de tela de monitoramento de um sistema. Tenho 20 linhas nesse datatable. Meu problem é o seguinte. Cada linha de informações é composta por 3 bases diferentes, ou seja, esse datatable é formado por 60 bases de dados distintas. Acontece que o dataTable só é renderizado em tela, após todas as consultas terem sido realizadas. Como é uma tela de monitoramento, essas informações (o datatable) devem ser atualizadas a cada 15 segundos.
Eu gostaria de alguma forma, de fazer o datatable ser exibido ou atualizado linha a linha, sem esperar que outras informações sejam atualizadas para exibir o que já foi atualizado.
[url]http://imageshack.us/a/img43/589/4imr.png
[/url]
Estou usando o datatable do primefaces para montar de tela de monitoramento de um sistema. Tenho 20 linhas nesse datatable. Meu problem é o seguinte. Cada linha de informações é composta por 3 bases diferentes, ou seja, esse datatable é formado por 60 bases de dados distintas. Acontece que o dataTable só é renderizado em tela, após todas as consultas terem sido realizadas. Como é uma tela de monitoramento, essas informações (o datatable) devem ser atualizadas a cada 15 segundos.
Eu gostaria de alguma forma, de fazer o datatable ser exibido ou atualizado linha a linha, sem esperar que outras informações sejam atualizadas para exibir o que já foi atualizado.
[url]http://imageshack.us/a/img43/589/4imr.png
[/url]
Teste
Curtidas 0
Respostas
Eduardo Pessoa
05/11/2013
Anderson, isso ajuda? sua pergunta é bem interessante, mas cheguei a pensar algo relacionado a session, não sei se tem haver.
[url]http://rfavero.blogspot.com.br/2013/10/atualizando-datatables-de-diferentes_3.html[/url]
[url]http://jamacedo.wordpress.com/category/java/java-server-faces/prime-faces/[/url]
[url]http://rfavero.blogspot.com.br/2013/10/atualizando-datatables-de-diferentes_3.html[/url]
[url]http://jamacedo.wordpress.com/category/java/java-server-faces/prime-faces/[/url]
GOSTEI 0
Teste
05/11/2013
Anderson, isso ajuda? sua pergunta é bem interessante, mas cheguei a pensar algo relacionado a session, não sei se tem haver.
[url]http://rfavero.blogspot.com.br/2013/10/atualizando-datatables-de-diferentes_3.html[/url]
[url]http://jamacedo.wordpress.com/category/java/java-server-faces/prime-faces/[/url]
[url]http://rfavero.blogspot.com.br/2013/10/atualizando-datatables-de-diferentes_3.html[/url]
[url]http://jamacedo.wordpress.com/category/java/java-server-faces/prime-faces/[/url]
Eduardo, obrigado pela resposta.
Eu já havia visto os dois links, e inclusive uso escopo de sessão, mas acontece que ai por exemplo, temos um valor sendo atualizado, o que funciona muito bem... No meu caso, eu tenho informações de 60 banco de dados, que são atualizadas por outro sistema, a cada 15 segundos e nesse caso, não sei por erro da minha codificação, mas o dataTable só é atualizado quando termina de atualizar todos...
Basicamente o que tenho é: Uma lista com a sigla dos sites... Por meio dessa lista, eu faço a conexão na bases.. Usando como exemplo a primeira linha, site BEM, eu conecto no banco "BEM1" e pego informação das 3ª primeiras colunas. Conecto no banco "BEM2" e pego informação da 4ª coluna e por fim, conecto no banco "BEM3" e pego informação das próximas 4 colunas. A última coluna e calculada com base nos valores das colunas anteriores.... Pois bem, feito isso, eu adiciono todos os valores de "BEM" para um objeto site e adiciono esse objeto em uma lista.... esse repito esse processo para todos os outros sites... Somente após adicionar todos os sites na lista, é que o componente (datatable) é renderizado na tela.... E a pior parte do meu cenário, DB1 e DB2, apesar de diferentes, estão fisicamente no mesmo lugar, mas DB3 está fisicamente em outro lugar. No exemplo utilizado, eu tenho DB1 e DB2 no estado de Belém e DB3 em Brasília, ou seja, para carregar todas as informações, realmente leva um bom tempo. Daí a necessidade de exibir os dados linha a linha...
De qualquer forma, agradeco novamente seu retorno Eduardo e se tiver alguma idéia, será muito bem vinda.
GOSTEI 0
Roselito Silva
05/11/2013
Anderson,
Você disse que olhou os links citados. E você chegou a usar o componente p:poll do Primefaces, como foi mostrado?
Você disse que olhou os links citados. E você chegou a usar o componente p:poll do Primefaces, como foi mostrado?
GOSTEI 0
Teste
05/11/2013
Anderson,
Você disse que olhou os links citados. E você chegou a usar o componente p:poll do Primefaces, como foi mostrado?
Você disse que olhou os links citados. E você chegou a usar o componente p:poll do Primefaces, como foi mostrado?
Sim Roselito... Utilizo o poll do primefaces para atualizar o dataTable...
GOSTEI 0
Roselito Silva
05/11/2013
Bem, eu tenho algumas sugestões. Meu ambiente é assim: a lista original, que é o value do dataTable fica em um managed bean com escopo de aplicação e tenho também um managed bean com escopo viewscoped que controla o p:poll.
Ultimamente, para diminuir a carga de consultas e alterações na lista e agilizar a atualização do dataTable, tenho uma lista paralela no escopo da aplicação onde guardo os itens que foram atualizados por último. Tenho também um hashmap desses itens, com a chave primária de cada um e o horário em que foi inserido.
O poll verifica a lista de atualizados e atualiza a lista original, em seguida atualiza o dataTable.
O poll também verifica se o item já está "vencido", ou seja, se passou o dobro do tempo dos polls (no meu caso era 30 segundos para cada poll, então em 1 minuto todos os polls de todos os clientes deveriam estar atualizados), o item é retirado da lista de atualizados e do mapa. Assim consegui trabalhar com quantidades menores de dados e agilizar as atualizações.
Não é a mesma coisa que você precisa, mas são algumas idéias que para mim tiveram bons resultados. Achei interessante o seu problema, e me ofereço para discuti-lo.
Ultimamente, para diminuir a carga de consultas e alterações na lista e agilizar a atualização do dataTable, tenho uma lista paralela no escopo da aplicação onde guardo os itens que foram atualizados por último. Tenho também um hashmap desses itens, com a chave primária de cada um e o horário em que foi inserido.
O poll verifica a lista de atualizados e atualiza a lista original, em seguida atualiza o dataTable.
O poll também verifica se o item já está "vencido", ou seja, se passou o dobro do tempo dos polls (no meu caso era 30 segundos para cada poll, então em 1 minuto todos os polls de todos os clientes deveriam estar atualizados), o item é retirado da lista de atualizados e do mapa. Assim consegui trabalhar com quantidades menores de dados e agilizar as atualizações.
Não é a mesma coisa que você precisa, mas são algumas idéias que para mim tiveram bons resultados. Achei interessante o seu problema, e me ofereço para discuti-lo.
GOSTEI 0
Eduardo Pessoa
05/11/2013
Blz Anderson. espero ter ajudado.
GOSTEI 0
Teste
05/11/2013
Estou saindo da empresa e não terei mais acesso ao ambiente para efetuar os devidos testes. Essa situação realmente me parece única e dificil de se resolver.
Eu estava pensando, apesar de não ser nem de perto a solução apropriada, criar cada linha do dataTable como um datagrid separado e usar um componente ajax para cada. Dessa maneira, cada "linha" seria atualizada assim que a pesquisa correspondente na base fosse efetuada, sem a necessidade de esperar os outros.
Eu estava pensando, apesar de não ser nem de perto a solução apropriada, criar cada linha do dataTable como um datagrid separado e usar um componente ajax para cada. Dessa maneira, cada "linha" seria atualizada assim que a pesquisa correspondente na base fosse efetuada, sem a necessidade de esperar os outros.
Bem, eu tenho algumas sugestões. Meu ambiente é assim: a lista original, que é o value do dataTable fica em um managed bean com escopo de aplicação e tenho também um managed bean com escopo viewscoped que controla o p:poll.
Ultimamente, para diminuir a carga de consultas e alterações na lista e agilizar a atualização do dataTable, tenho uma lista paralela no escopo da aplicação onde guardo os itens que foram atualizados por último. Tenho também um hashmap desses itens, com a chave primária de cada um e o horário em que foi inserido.
O poll verifica a lista de atualizados e atualiza a lista original, em seguida atualiza o dataTable.
O poll também verifica se o item já está "vencido", ou seja, se passou o dobro do tempo dos polls (no meu caso era 30 segundos para cada poll, então em 1 minuto todos os polls de todos os clientes deveriam estar atualizados), o item é retirado da lista de atualizados e do mapa. Assim consegui trabalhar com quantidades menores de dados e agilizar as atualizações.
Não é a mesma coisa que você precisa, mas são algumas idéias que para mim tiveram bons resultados. Achei interessante o seu problema, e me ofereço para discuti-lo.
Ultimamente, para diminuir a carga de consultas e alterações na lista e agilizar a atualização do dataTable, tenho uma lista paralela no escopo da aplicação onde guardo os itens que foram atualizados por último. Tenho também um hashmap desses itens, com a chave primária de cada um e o horário em que foi inserido.
O poll verifica a lista de atualizados e atualiza a lista original, em seguida atualiza o dataTable.
O poll também verifica se o item já está "vencido", ou seja, se passou o dobro do tempo dos polls (no meu caso era 30 segundos para cada poll, então em 1 minuto todos os polls de todos os clientes deveriam estar atualizados), o item é retirado da lista de atualizados e do mapa. Assim consegui trabalhar com quantidades menores de dados e agilizar as atualizações.
Não é a mesma coisa que você precisa, mas são algumas idéias que para mim tiveram bons resultados. Achei interessante o seu problema, e me ofereço para discuti-lo.
GOSTEI 0
Eduardo Pessoa
05/11/2013
vc fez isso, deu certo?
GOSTEI 0