JFreeReport 0.9 的特性预览

在Pentaho的官方论坛里,我看到了JFreeReport 0.9的相关信息。经过将近15个月的调研和计划,经过1年多的开发(前几天刚发布,下载),JFreeReport 0.9比原来的版本有了巨大的变化。

变化1:全新的架构。与以前版本完全不一样的架构。

变化2:面向文档(document)的处理方式,替换了原来的以数据为中心的报表方式。

变化3:遵循更严格的“内容分离”的设计原则。并分离出很多新的子项目。包括:


  • JCommon-Serializer

    http://www.jfree.org/jfreereport/jcommon-serializer/

    This libraries contains a generic serialization helper framework. It is always an ugly task to deal with unknown, possibly non-serializable objects. This library eases the pain.
  • LibLoader

    http://www.jfree.org/jfreereport/libloader/

    LibLoader is a generic content loading and caching framework. Resource-loading is also an ugly, error-prone and hardly performant task. By introducing a central loading and caching layer, this task can be easier, and faster as well.
  • LibFonts

    http://www.jfree.org/jfreereport/libfonts/

    The JFreeReport font reading library. It grants direct access to font data. This is mandatory for perfect layouting, as most of these fonts contain valuable layouting hints, which get not exposed by the AWT.
  • LibLayout

    http://www.jfree.org/jfreereport/liblayout/

    LibLayout is JFreeReport's Cascading-StyleSheets based layouting engine. It accepts a DOM stream and produces content based on the style data assigned with the DOM data.


一些新的好用的功能:

  • 子报表SubReports (maybe the most requested feature)
  • 多数据源Multiple-Datasources
  • Direct support for SQL-DataSources
  • Complex report layouts and rich text support (provided by LibLayout)
  • fully internationalizable reports
  • inline functions (expressions and functions are now directly bound to elements instead of being global. This resolves much of the compexitiy of previous report definitions.)
  • Unmatched flexibility and *total* control over the report process at runtime. Expressions are now able to insert even groups and subreports during the report processing.
  • Namespace support
  • Full support for Cascading StyleSheet (through LibLayout)
  • The 'flow' report xml-format is the new standard report definition format for JFreeReport. By following the new document oriented philosophy, it acts as a markup language to other XML based content description languages. A default base stylesheet for XHTML is included by default, enabling the system to accept and understand HTML layouts.


Before JFreeReport 0.9.0 can be considered finished, there are still some modules to be implemented:

  • Cross-Tab/Pivot-Table report component

    Modelling pivot-tables is an ugly task, which should be automated. The resulting report component automaticly generates the necessary processing steps to print such a table.
  • generic table report component

    Printing tables without having to explicitly declare each of its columns seems to be another highly requested feature. This report component would setup a generic table definition based on the current dataset.
  • precomputed expression values

    .. allow to use the result of a computation before its source rows have been printed. This is what the 'TotalGroupSumExpression' used to do. The resulting component will handle all necessary steps to compute the result. In an ideal world, it would do this in the most performant fashion avoiding multiple iterations.
  • All output targets

    All output targets, which rely on real layouting of content, are currently gone. The last processing step of LibLayout, which performs the computation of layouts is not yet implemented. Once that's done, we can deal with bringing back the pageable- and flow- (former table-) output targets.

    The class of streaming output targets, which does not rely on that layouting step at all, simply needs to be implemented. Streaming output targets are used to create document output, like HTML, RTF or OpenDocumentFormat texts.
  • Out-Of-Order section support

    Out-of-order sections (O3-sections) are sections, which are not part of the normal document flow. Examples for such O3-sections are page-headers and footers or repeating group-headers and footers. Although they are defined inside the document flow, they usually appear on separate page areas and do not appear as part of the normal content.

    O3-sections may not be supported by all output types.

    The actual specification for these sections depends on how flow and pageable output targets handle their pagebreaking. O3-sections make it easy to break functionality or performance up to the point where it gets unusable.

    The final aim is to support everything that is possible with JFreeReport 0.8.7.
  • Swing and SWT GUIs for the output targets

    The GUIs obviously depend on what features and configuration options are provided by the output targets itself. The GUI components include a Print Preview for pageable and flow outputs.
  • XML-Parsers: Compatibility layer for Simple and Ext reports

    Although the overall structure of JFreeReport changed drastically, parsers can be written to transform the old descriptions into the new internal structure.

    During the transition between JFreeReport 0.8.3 and 0.8.4 a similiar approach has been successfully implemented to translate the old report definitions to the new format.

    The resulting parsers must be configurable to accept user-defined function-translations - so that custom function implementations can be translated into the new report structure.
  • XML-Writer

    A writer implementation is needed to create 'flow-XML' report definitions from JFreeReport-Objects.
  • ... and later, after things settled down a bit, we will head on to get a decent Chart-integration into JFreeReport.

你可能感兴趣的:(sql,xml,swing,ext,performance)