转载自:http://highforest.blog.51cto.com/125539/42134
一、 理解BIRT的架构
BIRT包括许多以各种不同的方式相互关联的组件。本章介绍BIRT架构、BIRT组件、BIRT依赖的Eclipse组件的概述以及将它们联系在一起的关系。
1. 理解BIRT的集成
BIRT是一个Eclipse项目,意味着它与Eclipse架构和平台紧密地集成在一起。和所有其他的Eclipse项目一样,BIRT被实现成许多Eclipse插件的一个集合。BIRT插件为所有的BIRT组件提供功能,包括BIRT应用程序、支撑应用的引擎和支持应用程序设计的接口。BIRT插件还提供与几个Eclipse框架和平台通信的接口机制。
BIRT和Eclipse组件之间的关系最好看作是一个堆栈,堆栈中的每一层依赖、使用并与下一层进行集成。图6-1展示了关联的层次的堆栈。
图6-2展示了各种不同的BIRT组件及它们之间的相互关系。在这个图中,一个固定的框是一个标准的BIRT组件。虚线框中的组件是一个Java开发人员可以提供的定制的组件。一些定制的组件是BIRT扩展的一部分,其他定制的组件是使用BIRT API 的应用程序。点线框中的组件是包含使用的组件的标准的BIRT组件。例如,由于BIRT Report Designer使用设计引擎,所以设计引擎以点线框的形式出现在BIRT Report Designer的框中。
2. 关于BIRT应用程序
有三个BIRT应用程序:BIRT Report-Designer、BIRT RCP Report Designer和BIRT Report Viewer。BIRT Report Designer 和 BIRT RCP Report Designer相似。前者作为一个Eclipse插件运行,可以用来在Eclipse工作台上创建报表。后者有一个基于Eclipse RCP的简化的报表设计界面。
a) 关于BIRT Report Designer 和 BIRT RCP Report Designer
BIRT Report Designer是一个图形的报表设计工具。它使用报表设计引擎生成一个基于ROM的报表设计文件。ROM支持BIRT报表项和定制报表项的标准集合。BIRT RCP Report Designer有一个基于Eclipse RCP的简单的报表设计界面。两者之间的主要功能区别是:
n
BIRT RCP Report Designer每次只能打开一个设计
n
BIRT RCP Report Designer没有集成的调试器
n
BIRT RCP Report Designer 不支持Java时间处理器
除了这些区别外,两个报表设计器的功能是一致的,本章后面提到的所有BIRT Report Designer 的介绍同样适用于BIRT RCP Report Designer。
BIRT Report Designer还支持通过将一个报表设计存储为一个报表模版来重用一个报表设计。也可以将单个的报表组件村到一个可供其他报表设计使用的组件库中。
b) 关于BIRT Report Viewer
BIRT report viewer是一个准备和发布一个BIRT报表的Servlet Web应用程序。 BIRT Report Viewer 使用生成引擎和报表设计来创建一个报表文档,然后使用报表文档和展示引擎来生成预期的报表。报表预览器是BIRT Report Designer的一部分,它使用报表查看器来展示一个报表。在将BIRT Report Viewer部署到一个应用服务器后,Web应用程序也可以使用BIRT Report Viewer。可以将BIRT Report Viewer 部署到自己选择的J2EE容器,如Apache Tomcat、IBM WebSphere或BEA WebLogic。
3. 关于BIRT引擎
BIRT包含几个引擎。一个引擎是一个提供一个特定领域的功能的一套Java API。例如,数据引擎包含管理数据的API,图表引擎包含生成一个图表的API。
a) 关于报表设计引擎
报表设计引擎包含验证一个报表设计文件的有效性和生成一个报表设计文件的API。报表设计引擎被BIRT Report Designer和任何定制的生成一个BIRT报表设计的Java应用程序所使用。生成引擎在创建一个报表文档时也使用报表设计引擎。报表设计引擎包含使用ROM技术规范来验证设计文件的元素和结构的有效性的API。
b) 关于报表引擎
报表引擎包含两部分:生成引擎和展示引擎。BIRT Report Viewer和定制的Java应用程序使用报表引擎来处理一个报表设计并按照设计中指定的格式生成报表。
c) 关于生成引擎
生成引擎包含读取和解释一个报表设计的API。生成引擎使用数据引擎来读取和转换来自由报表设计标识的数据源。生成引擎的输出是一个报表文档,这是一个报表产品中的一个中间文档。
d) 关于展示引擎
展示引擎处理有生成引擎创建的报表文档并按设计中指定的格式产生报表。和生成引擎一样,展示引擎也使用数据引擎。但是,在展示阶段,数据引擎从报表文件而不是数据源中获取数据。
展示引擎它需要的任何一个报表发射器按照设计中指定的格式生成一个报表。BIRT有两个标准的发射器,HTML和PDF。BIRT也支持不是HTML和PDF格式的定制的发射器。
图表报表项和定制的报表项扩展展示引擎来提供这些报表项的展示功能。
e) 关于图表引擎
图标引擎包含生成图表及将图表与来自数据源的数据关联起来的API。图表引擎的使用不仅限于BIRT应用程序。任何Java程序都可以使用图表引擎来创建和现实一个图表。BIRT Report Viewer 解释报表设计中的图标设计信息并使用图表引擎来生成图表。
f) 关于数据引擎
数据引擎包含获取和转换数据的API。当被生成引擎使用时,数据引擎直接从数据源中获取数据。当被展示引擎使用时,数据引擎从报表文档中获取数据。
1) 关于数据引擎组件
数据引擎包含两个主要组件:数据访问组件和数据转换组件。数据访问组件与ODA框架通信来获取数据。数据引擎的数据转换组件执行像排序、分组、累计和过滤来自数据访问组件的数据的操作。
2) 关于ODA框架
ODA框架管理ODA和本地驱动、装载驱动、打开连接并管理数据请求。ODA框架使用Eclipse Data Tools Platform项目来管理连接。
ODA框架包含扩展点,籍此可以添加一个定制的ODA驱动。数据引擎扩展用于数据源的连接方法和驱动。如果有一个BIRT不支持的数据源就需要一个定制的ODA驱动。创建一个定制的ODA驱动时可能不仅需要扩展数据引擎而且还需要扩展BIRT Report Designer。如果数据源需要一个GUI组件来制定数据集,那么还需要一个BIRT Report Designer扩展。
4. 关于报表项的类型
一个报表项是一个可视化的报表组件,如一个标签或者一个列表或者一个图表。在BIRT中有三类报表项目:标准报表项、定制报表项和图表报表项。
a) 关于标准报表项
一个报表项是一个报表的可视化的组件。一个报表项可以像一个标签一样简单也可以像一个3D图表一样复杂。每个报表项在BIRT Report Designer的调色板中有一个图标。
b) 关于定制报表项
自己可以创建新的报表项也可以扩展一个现存的报表项。扩展报表项的一个简单的例子是给一个报表项添加一个属性,例如颜色。一个新报表项扩展的例子是一个旋转的文本报表项。
创建一个报表项和扩展一个报表项都涉及到通过Eclipse插件扩展BIRT。一些定制项需要对一个组件进行扩展,而其他定制项需要对多个组件进行扩展。报表项不同,下面组件中的一个或者多个可能需要进行扩展以便支持新的报表项:
n
BIRT Report Designer
n
报表设计引擎
n
报表引擎
c) 关于图表报表项
一个图表报表项是一个标准的BIRT组件,但是它被事先成一个BIRT扩展。创建一个图表报表项的用户界面是一个图表构造器,引导报表开发人员完成设计图表和将图表与合适的数据库列关联起来的全过程。
5. 关于ROM
ROM是作为BIRT基础的模型。ROM是报表设计的结构、语法和语义的技术规范。ROM技术规范在BIRT的Web站点上以一系列文档的形式给出:
ROM的正则表达式是通过一个XML方案和一个语义定义文件来给出的。
6. 关于BIRT文件的类型
BIRT Report Designer使用了4类文件:报表设计文件、报表文档文件、报表库文件和报表模板文件。下面对每类文件给出一个简单的介绍:
a) 关于报表设计文件
报表设计文件是一个包含BIRT报表的报表设计和完整的说明的XML文件。报表设计描述一个报表的每个方面,包括它的结构、格式、数据源、数据集和JavaScript时间处理器代码。BIRT Report Designer创建报表设计文件并且BIRT报表引擎处理它。一个报表设计文件的文件扩展名是.rptdesign。
b) 关于报表文档文件
报表文档文件是一个封装了报表设计、集成了数据并包含像数据行分页信息和目录信息表的二进制文件。报表文档文件的扩展名是.rptdocument。
c) 关于报表库文件
报表库文件是一个包含可重用的和可共享的BIRT报表组件的XML文件。报表开发人员使用BIRT Report Designer中的报表轮廓管理器来管理对库的访问和添加。
BIRT报表库可以包含像下面的一些报表项:
n
嵌入的图像
n
风格
n
可视的报表项
n
代码
n
数据源
n
数据集
报表库文件的扩展名是.rptlibrary。
d) 关于报表模板文件
报表模板文件是一个包含可重用的设计的XML文件。报表开发人员可以使用模板作为开发一个新的报表的基础。报表开发人员使用报表模板来在一系列报表设计之间维护一个一致的风格并用它使报表设计过程流水化作业。报表模板可以指定一个报表的多个不同的元素,包括:
n
一个或者多个数据源
n
一个或者多个数据集
n
报表设计的部分或者全部布局,包括网格、表格、列表和其他报表项
n
分组、过滤和数据绑定定义
n
Cheat sheets
n
风格
n
库组件
n
主页
模版是报表设计的一个灵活的工具。例如,一个模版可以指定一个报表设计的几乎每个方面,而另外一个可以指定一个表格格式。一个报表模板报表模板在开发人员用它来创建报表设计后可以个性化。报表模板对于在多个报表设计之间维护一个一致的风格即使报表开发过程流水化作业很有用。
报表模板的文件扩展名是.rpttemplate。
7. 关于定制Java应用程序
Java开发人员可以使用BIRT API来创建一个定制的报表设计器或者一个定制的报表查看器。
a) 关于定制的报表设计器
一个定制的报表设计器是一个由Java开发人员创建的用来基于特定的需求生成一个格式良好的报表设计文件Java应用程序。定制的报表设计器不需要包含用户界面。定制的报表设计起的一个典型的例子是一个动态确定一个报表的目录、结构或者数据元的Java应用程序。定制的报表设计器使用和BIRT Report Designer相同的设计引擎API。
b) 关于定制的Java报表生成器
除了通常是集成到一个Web应用或者一个独立的Java应用程序外,定制的Java报表生成器质性和BIRT报表生成器相同的功能。和BIRT 报表浏览器Web应用一样,定制的Java报表生成器使用报表引擎的API来读取报表设计文件并生成一个报表。一个定制的业务逻辑来管理安全事宜、控制目录和确定输出的格式。
8. 关于对BIRT的扩展
BIRT通过它的公用的API和BIRT扩展架构允许Java开发人员扩展BIRT的功能。下面是可能进行的扩展的一个列表:
n
定制的报表项
定制的报表项是一个报表项的扩展。这个报表项可以是一个扩展、一个现存的BIRT报表项或者一个新的报表项。
n
定制的ODA数据源驱动
定制的ODA数据源驱动是一个连接到BIRT不直接支持的数据源类型的的定制的ODA扩展。
n
定制的报表发射器
定制的报表发射器以HTML或者PDF格式以外的格式生成一个报表。