Status of GNUe Reports
19th November 2001
GNUe Reports has seen a lot of activity in the last few months. We are nearing our initial release. In light of the 0.1.0 release of Forms, Designer, and Common, I thought a status report would be in order.
Overview of Reports:
Reports is composed of three "modules":
* The Reports Engine:
This module (and it is literally a Python module :) is responsible for parsing an XML-based report definition, connecting to the datasources via GNUe-Common, and converting the results to a developer-specified XML format (as defined in the Report Definition.) This module is the backbone of GNUe-Reports (and hopefully GNUe Integrator, once development on it starts). The Reports Engine is basically a database-to-XML translation engine with a lot of nifty features to make the translations as easy, and versatile, as possible.
* The Reports Server:
This module (yet to be completed -- see the notes below) maintains a cache of Reports Engines and exposes the Reports Engine's methods to the public via GNUe-Common's RPC abstraction (see description below).
* The Reports Client:
This module (also yet to be completed) calls the Reports Server via one of GNUe-Common's RPC methods. A client can be run via the command line, or other tools, such as GNUe Forms, can act as a Reports client.
Status
What reports can do now:
* Reports fully utilizes the GNUe-Common package, which means it supports all major relational databases.
* Reports does not use any platform-specific code, so it should run on any system that GNUe-Common and Python runs on. (Note: [1] it has only been tested on Linux to date; [2] even though GNUe-Common runs on most platforms, the database driver you need may not!)
* Reports does not currently have a working server/daemon interface. However, a command-line tool, grrun, does create a temporary Reports Engine. This means that you can currently run reports from the command line using single instances of the engine.
* Reports supports runtime sort options. Basicially, this means a report designer can create a variety of methods in which a report can be sorted and give each method an id. When running the report, the user can pass this id to the report and this will determine how the report will be sorted.
* Reports supports runtime parameters that can be dynamically placed in the datasource's where clause at runtime.
* Reports supports banding, or grouping, of datasources. Basically, this means if you have a set of rows like such:
Joe Cool's Blues, Winton Marsalis, Track 1, Linus & Lucy
Joe Cool's Blues, Winton Marsalis, Track 2, Buggy Ride
Joe Cool's Blues, Winton Marsalis, Track 3, Peppermint Patty
Joe Cool's Blues, Winton Marsalis, Track 4, On Peanuts Playground
Voice of an Angel, Charlotte Church, Track 1, Pie Jesu
Voice of an Angel, Charlotte Church, Track 2, Panis Angelicus
Voice of an Angel, Charlotte Church, Track 3, In Trutina
Voice of an Angel, Charlotte Church, Track 4, Danny Boy
Reports can group them into a format such as this:
Joe Cool's Blues by Winton Marsalis
Track 1 Linus & Lucy
Track 2 Buggy Ride
Track 3 Peppermint Patty
Track 4 On Peanuts Playground
Voice of an Angel by Charlotte Church
Track 1 Pie Jesu
Track 2 Panis Angelicus
Track 3 In Trutina
Track 4 Danny Boy
and even run aggregate functions at various levels.
What Reports will do "Real Soon" (hopefully by the premiere release):
* Reports can output any form of XML. However, we are trying to formalize the GNUe reporting format so that all of our packaged apps will use a common XML format. This will allow us to write some nifty XML-to-whatever translators and convert our report output to text, PS, PDF, HTML, spreadsheet formats, etc, etc, etc.
* We are working on an RPC abstraction layer in GNUe-Common. This interface will allow us to export our methods in a variety of ways (via CORBA, XML-RPC, SOAP, etc.)
As soon as this is functional, Reports will become a Server-based application and grrun will become a command-line client to this server.
* Basic summary functions (field aggregate functions such as Sum, Count, Average, etc.) Work has started on this, but is not fully debugged.
Short-term Goals for Reports (hopefully within 6 months):
* Add trigger/event support to do complex summaries, etc.
Long Term Goals for Reports:
* The Reports engine will hopefully be a base for the GNUe Integrator tool.
Final Notes
Please do not ask for timelines on when various reporting features will be completed. This is a volunteer project and, as such, a timeline is nothing more than guesswork. However, several GNUe core developers need a reports application as soon as possible, so this project is actively being worked on.
-- Jason
Return to GNUe News Archive
|