Utilizamos o padrão de Factory e Parameter Object para otimizar nossas telas de relatório. Veja em detalhes o que precisa ser feito para invocar um relatório.
Tem alguns vídeos que fiz explicando como criar o relatório do zero.
No vídeo abaixo mostro a parte mais técnica do parameter e relatório.