The layout that the Report module uses is an adaptation of the way JasperReports works and the dependency injection pattern promoted by Spring Framework.
- A struts module receives the request from the client
- The request is then passed all the way to a Report DAO which will provide the report layout
- The report compile manager handles the dynamic content (like the number of columns) and compiles the report
- The report fill manager fills the compiled report with the grid data sent in the request
- The report export manager converts the generated report into the selected format
- The struts module sends the report back to the user adjusting the mime type