报表类路径

来源:互联网 发布:空间模型处理债券数据 编辑:程序博客网 时间:2024/05/20 18:15

四、报表生成的准备工作

BIRT支持HTML, Adobe PDF, Adobe PostScript (PS), Microsoft Excel (XLS), Microsoft PowerPoint (PPT)和 Microsoft Word (DOC) 格式的报表生成器。你也可以通过扩展支持自定义的格式。

有三个task类用来支持从源文件生成报表,就是:

■ IRunAndRenderTask. 通过运行报表设计文件直接生成目标格式的报表。调用方法ReportEngine.createRunAndRenderTask( )可以创建这个对象。

■ IRunTask. 通过报表设计文件生成报表文档,ReportEngine.createRunTask( )方法可以创建这个对象。

■ IRenderTask. 通过对报表文档中的内容进行格式化生成一个完整的报表或一个页面集。ReportEngine. createRenderTask( )方法返回该对象的一个实例。
每一个任务都可以使用多个报表文件,任务结束后都要调用close方法关闭。

为运行报表设计文件准备参数
IRunAndRenderTask 和 IRunTask对象允许设置报表参数。调用setParameterValues( )方法,通过传入一个参数的HashMap设置所有的参数,设置单个参数可以使用setParameterValue( )方法。

添加到报表引擎的类路径
一些报表设计需要扩展的java类,BIRT报表引擎通过使用环境变量信息定位类。通过动态设置应用程序上下文信息或引擎配置对象也可以配置java类的位置。使用EngineConstants中的常量来配置这些参数。

使用EngineTask对象和EngineConfig对象可以设置应用程序上下文,如下:

Java代码 复制代码
  1. configOrTask.getAppContext( ).put(    
  2.         EngineConstants.APPCONTEXT_CLASSLOADER_KEY,    
  3.         MyClass.class.getClassLoader( ));  
configOrTask.getAppContext( ).put(         EngineConstants.APPCONTEXT_CLASSLOADER_KEY,         MyClass.class.getClassLoader( ));



使用EngineConfig对象设置CLASSPATH,如下:

Java代码 复制代码
  1. config.setProperty( EngineConstants.WEBAPP_CLASSPATH_KEY,   
  2.     "c:/myjars/jar1.jar;c:/myclasses" );  
config.setProperty( EngineConstants.WEBAPP_CLASSPATH_KEY,    "c:/myjars/jar1.jar;c:/myclasses" );



使用Java System类设置CLASSPATH,如下:

Java代码 复制代码
  1. System.setProperty(EngineConstants.WEBAPP_CLASSPATH_KEY,   
  2.       "c:/myjars/jar1.jar;c:/myclasses" );  
 System.setProperty(EngineConstants.WEBAPP_CLASSPATH_KEY,        "c:/myjars/jar1.jar;c:/myclasses" );



BIRT按下面的顺序来查找扩展类:
■ 报表引擎plug-in的CLASSPATH
■ 上下文环境中定义的EngineConstants.APPCONTEXT_CLASSLOADER_KEY
■Java System 类或EngineConfig 中定义的EngineConstants.WEBAPP_CLASSPATH_KEY.
■Java System 类或EngineConfig 中定义的EngineConstants. PROJECT _CLASSPATH_KEY.
■Java System 类或EngineConfig 中定义的
EngineConstants. WORKSPACE _CLASSPATH_KEY.
■ 报表设计中引入的JAR文件

为报表设计提供外部对象
BIRT支持把以前实例化的对象拿过来重用。调用报表引擎前你要在应用程序中持有这个已经在内存中存在的对象。如果在脚本环境中使用,你传递对象给引擎后,脚本可以通过对象名在必要的是后获取对象。
可以通过EngineConfig或task得上下文环境为引擎提供对象。如下:

Java代码 复制代码
  1. MyObject mo = new MyObject( );   
  2. config = new EngineConfig( );   
  3. // Get the application context from the config or the task  
  4. HashMap hm = config.getAppContext( );   
  5. //HashMap hm = task.getAppContext( );  
  6. hm.put( "MyCreatedObject", mo );   
  7. config.setAppContext( hm );   
  8. // To refer to this object in a BIRT script  
  9. // or expression, use MyCreatedObject.myMethod()  
原创粉丝点击