在BIRT2.3版本之前,BIRT Viewer只支持默认的CSV格式的数据导出,用户很难自定义导出格式和一些导出的逻辑,很难扩展化。从BIRT2.3之后,总算加入了对数据导出功能的扩展。用户可以很方便的自定义导出格式,可以在代码中添加自已的处理逻辑。所有这些,都基于BIRT提供了一个新的Extension Point--"org.eclipse.birt.report.engine.dataExtraction"。
BIRT提供了一个默认的实现,导出为CSV格式。用户完全可以基于这个实现的代码,实现自已的导出格式,如导出为XML格式,甚至可以保存到数据库。
下面我将给出一个大致的实现步骤:
1) 在eclipse下,新建plugin project。
2) 修改plugin.xml,添加extenion point定义。举例如下:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension
point="org.eclipse.birt.report.engine.dataExtraction">
<dataExtraction
id = "org.eclipse.birt.report.engine.dataextraction.xml"
name = "XML"
format = "xml"
mimeType = "text/xml"
class = "org.eclipse.birt.report.engine.dataextraction.xml.DataExtractionImpl"/>
</extension>
</plugin>
注意,id, name, format,mimeType, class都是必须的。
3) 实现IDataExtractionExtension接口
该接口主要有三个方法:
public void initilize( IReportContext context, IDataExtractionOption option ) throws BirtException
public void output( IExtractionResults results ) throws BirtException
public void release( )
initialize方法会传入报表相关的IReportContext对象,如果需要获取报表相应的信息,可以通过该对象。
IDataExtractionOption对象是从BIRT viewer传入的一些参数。
如:
(Map) this.option.getOption( "birt.viewer.parameters" )--得到viewer相关的参数(包含用户在url上传入的自定义参数)
(Locale)this.option.getOption("birt.viewer.locale")--得到locale信息
(String[])this.option.getOption("birt.viewer.export.columns")--得到选中的columns。
具体的实现逻辑可以在output方法里实现,应该非常容易理解。
4) 最后一步当然是发布了,非常简单,打包成plugin,然后放到WEB-INF/platform/plugins下就可以了,注意BIRT已经有了一个org.eclipse.birt.report.engine.dataextraction.csv.jar的plugin,和它放一起就行了。
5) 打开页面,在export dialog里就会看到多了一个XML的导出选项了。
好了,就说这些了~~~~~大家可以自已去尝试一下。
BIRT提供了一个默认的实现,导出为CSV格式。用户完全可以基于这个实现的代码,实现自已的导出格式,如导出为XML格式,甚至可以保存到数据库。
下面我将给出一个大致的实现步骤:
1) 在eclipse下,新建plugin project。
2) 修改plugin.xml,添加extenion point定义。举例如下:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension
point="org.eclipse.birt.report.engine.dataExtraction">
<dataExtraction
id = "org.eclipse.birt.report.engine.dataextraction.xml"
name = "XML"
format = "xml"
mimeType = "text/xml"
class = "org.eclipse.birt.report.engine.dataextraction.xml.DataExtractionImpl"/>
</extension>
</plugin>
注意,id, name, format,mimeType, class都是必须的。
3) 实现IDataExtractionExtension接口
该接口主要有三个方法:
public void initilize( IReportContext context, IDataExtractionOption option ) throws BirtException
public void output( IExtractionResults results ) throws BirtException
public void release( )
initialize方法会传入报表相关的IReportContext对象,如果需要获取报表相应的信息,可以通过该对象。
IDataExtractionOption对象是从BIRT viewer传入的一些参数。
如:
(Map) this.option.getOption( "birt.viewer.parameters" )--得到viewer相关的参数(包含用户在url上传入的自定义参数)
(Locale)this.option.getOption("birt.viewer.locale")--得到locale信息
(String[])this.option.getOption("birt.viewer.export.columns")--得到选中的columns。
具体的实现逻辑可以在output方法里实现,应该非常容易理解。
4) 最后一步当然是发布了,非常简单,打包成plugin,然后放到WEB-INF/platform/plugins下就可以了,注意BIRT已经有了一个org.eclipse.birt.report.engine.dataextraction.csv.jar的plugin,和它放一起就行了。
5) 打开页面,在export dialog里就会看到多了一个XML的导出选项了。
好了,就说这些了~~~~~大家可以自已去尝试一下。