The layout that the Report module uses is an adaptation of the way JasperReports works and the dependency injection pattern promoted by Spring Framework.

  1. A struts module receives the request from the client
  2. The request is then passed all the way to a Report DAO which will provide the report layout
  3. The report compile manager handles the dynamic content (like the number of columns) and compiles the report
  4. The report fill manager fills the compiled report with the grid data sent in the request
  5. The report export manager converts the generated report into the selected format
  6. The struts module sends the report back to the user adjusting the mime type