Report Module

The report engine should be a SQL query which gets transformed into an XML structure which then has an XSLT transform applied to it to produce output, usually in HTML. This raises the barrier to entry slightly. Another option would be to have the data come out in JSON format, and then have a JSONT transform (goessner.net/articles/jsont/). The XML is probably preferred as it's more of an official standard even though it is ugly.

The report engine is used to generate reports of a financial or statistical basis. It will actually be the same as the documentation engine, but it will be called something slightly different to delineate the two. The reports should be able to be scheduled to run at any time in a flexible manner, and should probably run from a replicated slave database system (as opposed to another synchronised system).

The features for the report module should include:

  • There should be example versions of “standard documentation” such as sales report, profit and loss statements, user performance, etc.
  • Have a nice editor for creating ad-hoc documents. This will also have some sort of SQL validation to make sure the user is not doing anything malicious.

Usually the interaction with the database would be through stored procedures, however this module is one of the exceptions to this.

Most reports will be saved into a spreadsheet format.