Gostaria de ver opniões sobre uma aplicação que irei desenvolver e de momento estou pesquisando uma boa arquitetura para esta.
A aplicação será bem simples, fará agendamento de processos e de relatórios.
Muitos relátorios serão retirados de dentro de uma outra aplicação que temos devido a serem muito pesados.
Dependendo o relatório e os parametros passados, os relatórios deverão rodar rodar em batch para isso, pensei em utilizar o modulo do spring que trabalha com isso.
Para os agendamentos pensei em utilizar o quartz.
No caso teriamos uma interface web, que teria o spring como camada de negócio e também fazendo o gerenciamento transacional, invocando o quartz para definir os agendamentos e, quando necessário, utilizaria o modulo do spring batch.
Mas neste caso a aplicação web nada mais é que uma interface onde podera ser configurado os agendamentos dos serviços e relatórios que irão rodar.
O motivo de desenvolver este novo aplicativo é justamente retirar o sistema principal da empresa, os relatórios e ao mesmo tempo unir todos os processos, serviços, etc
que rodam “soltos”, ou seja, ao application server, em scripts, na cron ou mesmo jars.
Com isso teria uma interface web onde todos estes serviços poderiam ser agendados ou mesmo desegendados(através do quartz), para rodar.
Com esta interface também poderia ser visualizado os serviços que estão configurados para rodar e os que estão rodando.
Os relatórios iriam entrar juntos e com isso iriamos retirar parte da carga que consome os recursos hoje da aplicação principal da empresa.
Com isso os relatórios mais pesados poderiam rodar em batch ou serem agendados para rodarem a noite e no outro dia o usuário poderia ou receber eles via email ou fazer download pela interface web.
Gostaria de ver opniões sobre uma aplicação que irei desenvolver e de momento estou pesquisando uma boa arquitetura para esta.
A aplicação será bem simples, fará agendamento de processos e de relatórios.
Muitos relátorios serão retirados de dentro de uma outra aplicação que temos devido a serem muito pesados.
Dependendo o relatório e os parametros passados, os relatórios deverão rodar rodar em batch para isso, pensei em utilizar o modulo do spring que trabalha com isso.
Para os agendamentos pensei em utilizar o quartz.
[/quote]
Acho que é bem isso. Eu so separaria o uso do quartz através de alguma encapsulamento porque vc vai querer testar o batch sem ter que agendar o quartz.
1ª - relatórios mais leves serão enviados via email para o usuário que os desejar;
2ª - relatórios mais pesados que serão agendados rodarão a noite eu penso em disponibilizar em algum diretório especifico do usuário, so me resta pensar ainda
em como criar estes diretórios especificos do usuário
Outra ideia que tive relacionado a estes relatórios mais pesados, seria os mesmos serem todos disponibilizados no mesmo diretório(algum diretório no servidor), então no outro dia o usuário
apenas faria o download deste através de algum link que recebeste via e-mail.
Se alguem tiver alguma idéia ou sugestão e so me passar ai.
Aproveito o momento também para questionar se alguem tem algum documento exemplo que possa me passar onde posso formalizar
estas descrições técnicas do projeto.
Qualquer exemplo é bem vindo, visto que eu mesmo irei desenvolver algum caso não encontre exemplos.
pois é me surgiu a duvida do quartz e do batch serem redundantes, pois se eu
coloco o agendamento via quartz, ele não rodaria em segundo plano também?
[/quote]
O quartz é para agendar, o spring batch é para o controlo do batch em si.
È possivel iniciar o batch manualmente, o quartz é apenas uma outra forma de inicar.
Ambos correm em parelelo mas com objetivos diferentes. O quatrz corre para determinar quando ativar o batch,
o Batch corre para executar o trabalho em si.
1ª - relatórios mais leves serão enviados via email para o usuário que os desejar;
2ª - relatórios mais pesados que serão agendados rodarão a noite eu penso em disponibilizar em algum diretório especifico do usuário, so me resta pensar ainda
em como criar estes diretórios especificos do usuário
Outra ideia que tive relacionado a estes relatórios mais pesados, seria os mesmos serem todos disponibilizados no mesmo diretório(algum diretório no servidor), então no outro dia o usuário
apenas faria o download deste através de algum link que recebeste via e-mail.
Se alguem tiver alguma idéia ou sugestão e so me passar ai.
Aproveito o momento também para questionar se alguem tem algum documento exemplo que possa me passar onde posso formalizar
estas descrições técnicas do projeto.
Qualquer exemplo é bem vindo, visto que eu mesmo irei desenvolver algum caso não encontre exemplos.
[/quote]
Os relatórios mais pesados são apenas extrações da base ou existe manipulação de dados feita através de código?