With the release of JFreeReport 0.9.0 we entered a new area of reporting.
JFreeReport 0.9 is document centric
In the classical domain of reporting engines, the report's structure is data oriented. In these classic engines, reports consist of bands or sections which are composed in a relatively fixed structure. In that world, a report is a template with several slots. The contents of these slots can be filled with various predefined element types, which then represent the generated content.
That schema is easy to implement, but it is not how non-developers (also known as End-Users) are used to think.
JFreeReport 0.9 drops the classical approach and uses a document centric report model. A report is now a DOM structure, or (simplifying a bit) a XML or XHTML document with some special markup attached to it. By stealing some ideas from JSP and other web-templating engines, JFreeReport now iterates over the content and performs operations on the datamodel whenever one of the special report-elements is encountered.
JFreeReport 0.9 is flexible
During the last years, JFreeReport was known to be incredible flexible. Custom functions were able to alter the style and (in a limited way) the structure of the report from inside the report processing.
JFreeReport 0.9 upholds and extends that tradition. With the introduction of style- and attribute-expressions, it is now possible to selectively change any of the properties of an element without being forced to write custom implementations. The result of any expression or function can be used as style- or attribute value.
New DOM nodes can be dynamicly inserted into the report processing at any time. With that capability, group structures can be inserted at runtime. Now, it is save to say: You can do anything with the report definition any time.
JFreeReport 0.9 is an advanced content processor
JFreeReport is now just the data-processing layer on top of the layouter. LibLayout, our newly written layouting engine is reponsible for transforming the DOM structures into Graphics, PDF, HTML or other content formats.
LibLayout is a CSS3 oriented layout processor. CSS (Cascading StyleSheets) is a standard to describe layouting rules, which transform DOM nodes into real content for different medias. With LibLayout, it is now possible to express reusable rules on how content should be formatted and displayed.
That rules engine allowed us to drop all of the existing report element definitions. All of the previously hardcoded behaviour can now be expressed using style-rules. This greatly reduces the amount of hard-coded rules and allows users to customize the data presentation to fit their needs.
JFreeReport 0.9 fixes the limitations of the old engine
LibLayout is able to handle pagebreaks within any element. This way, elements are no longer limited to a single page - they can have any size they require.
SubReports are now an integral part of the engine as well as managed datasources. JFreeReport dropped the dependency on tablemodels in favour of an even more simplicistic interface. This version comes with both an TableModel-based datasource and an SQL-datasource implementation.
JFreeReport 0.9 is downloadable from our project-page on SourceForge:
The JFreeReport-Demo contains some (simple) examples on what is possible with the new engine. The output alone, however, does not show the full power of the new approach - make sure you have a look at the report definition files that are buried in the sources to see the 'document centricity' in an example.
For everyone who's not scared of sourcecode, the main JFreeReport package contains all the sources for the core engine. The layouting magic is done in LibLayout.
Within the next few days, we will open up a Wiki on pentaho.org containing some documentation, the to-do list and the feature-wishlist. The wishlist will be a discussion and idea-collecting area. Once an idea is stable enough (either we all agree that we want that feature or there are enough voices demanding it), it will make its way into the ToDo-list (and thus it becomes a part of our roadmap for the next year).
Log in to post a comment.