`
duanfei
  • 浏览: 733609 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

BIRT参数设置详解

 
阅读更多
在使用birt报表的时候感觉页面的 BIRT Report Viewer头标题没有用,想去掉在网上一查原来有详细的参数设置,看来birt的功能还是很强大啊。现在转帖如下:
   BIRT作为一款功能强大的开源报表工具,其版本的升级更新速度也非常快,从1.0到2.0,一直到最新的2.2.1版本,无论从功能上还是性能上都得到了极大的提高和扩充。BIRT也提供了一个标准的J2EE实现组件,可以发布到支持J2EE应用的web server服务器上,可以对生成的报表进行预览等操作。在大家使用BIRT Viewer的时候,可能会对它日益纷繁的参数设置如云里雾里,在网上论坛里也有很多人碰到这样哪样的问题,同时官方的文档也不细致不全。所以我就对这些参数进行了一个简单系统的总结,希望能对大家的BIRT开发有所帮助。这些参数以2.2.1版本为准,请大家特别注意。

1. Servlet模式说明

  查看BIRT Viewer自带的web.xml文件,可以看到有以下几个pattern:

  frameset ---- 采用Ajax框架,可以显示工具条,导航条和TOC面板,实现复杂的操作,如分页处理,导出数据,导出报表,打印等等。该模式下会自动生成report document文件(预览report design文件)到特定的目录(用户可以用参数指定,也可以定义在web.xml里)。采用Ajax,速度较慢。

  run ---- 也采用Ajax框架,但不实现frameset的复杂功能,不会生成临时的report document文件(预览report design文件),也不支持分页,这个主要是应用在BIRT Designer里的preview tab里,可以支持cancel操作,其它不怎么常用。采用Ajax,速度较慢。

  preview --- 没有用到Ajax框架,直接调用底层Engine API对报表进行render,把生成的报表内容直接输出到浏览器。这种模式和run模式调用的是相同的Engine API,唯一区别在于run采用Ajax获取报表内容,而preview直接输出到浏览器。如果要支持分页,用户需要在URL上定义__page和 __pagerange参数,这两个参数也会在后面详细说明。需要特别说明的是,在这几种预览模式中,preview的速度是最快的。

  document --- 该模式主要是为了从report design文件生成report document文件。用户可以在URL上提定document文件生成存放的路径(存放在server端),如果未指定,会直接生成 rptdocument发送到客户端浏览器,用户可以下载到客户端。

  output --- 该模式类似于frameset,会自动生成report document文件(预览report design文件),区别在于output不采用Ajax,而是将生成的报表内容直接输出到浏览器。

  parameter --- 该模式主要用于生成一个参数对话框,一般用户不常用,用户可以直接通过提供的JSP Tag--parameterPage去实现参数对话框,不需要直接调用。

  download --- 用于导出报表数据为CSV格式,当你使用frameset工具条里的导出数据功能时,会用到这个模式。

2. web.xml里的参数设置
web.xml文件里有许多参数,用户应该根据自已的需求出发对这些参数有一个深入的了解。下面我会对这些参数一一做以说明。

[BIRT_VIEWER_LOCALE]
设置默认的Locale信息,暂时没有太大意义。因为Locale的信息,首先以URL上定义的__locale为准,如果没有定义,会找到当前浏览器的Locale信息,最后才会用到这里定义的信息。

[BIRT_VIEWER_WORKING_FOLDER]
设置BIRT Viewer的工作目录。用户可以把report design或是report document文件存放在这个目录下,这样就可以在URL上采用相对路径去预览这些报表文件了。默认是当前根目录。
当前支持三种形式:
相对路径 --- 这个相对当前的WEB应用的context root.
绝对路径
JAVA系统变量 --- 可以在启动服务器时,定义JVM的系统变量,如java –Dmyworkingfolder=D:/reports。这样就可以在web.xml中用${myworkingfolder}进行引用了。

[BIRT_VIEWER_DOCUMENT_FOLDER]
设置生成的document文件的存放路径。默认是documents目录。路径设置同上。

[WORKING_FOLDER_ACCESS_ONLY]
简单的报表访问限制控制实现,如果设为true,哪就只能预览存放在工作目录下的报表文件。默认值是false。

[BIRT_VIEWER_IMAGE_DIR]
设置生成的临时图片的存放路径。默认是report/images目录。路径设置同工作目录设置。

[BIRT_VIEWER_LOG_DIR]
设置生成的日志文件存放路径。默认是logs目录。路径设置同工作目录设置。

[BIRT_VIEWER_LOG_LEVEL]
设置日志的level,可选的值有:ALL|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|OFF。级别由高到低。

[BIRT_VIEWER_SCRIPTLIB_DIR]
设置用户script lib文件的存放目录( 在报表中用到的Java Event Handler Class )。默认值是scriptlib。路径设置同工作目录设置。

[BIRT_RESOURCE_PATH]
设置用户资源存放路径,这些资源包括library文件,image文件等。默认是当前根目录。路径设置同工作目录设置。

[BIRT_VIEWER_MAX_ROWS]
设置获取dataset的最大记录数。主要应用于设计报表的时候,预览报表如果记录数太多,会花费很多的时间,也可能会引起out of memory问题。默认是不限制。

[BIRT_VIEWER_MAX_CUBE_LEVELS]
设置CUBE查询的最大级数。和前面的参数作用类似。默认是不限制。

[BIRT_VIEWER_CUBE_MEMORY_SIZE]
设置在生成CUBE时,可以写在memory中的最大值,单位是MB。可以提高效率,写在内存会比直接写在硬盘快很多。但同时也要注意内存占用的问题。

[BIRT_OVERWRITE_DOCUMENT]
该参数主要用于frameset/output模式,它们会生成临时的document文件上。如果设为true,则每次刷新页面时,都会重新去生成document文件,如果为false,则不会重新生成,只会用原来的document文件去生成报表内容。

[BIRT_VIEWER_CONFIG_FILE]
定义properties文件的路径,不可以修改。

[BIRT_VIEWER_PRINT_SERVERSIDE]
在frameset工具条上,提供有后台服务器打印的功能,该参数可以设置是打开还是关闭后台打印的功能。默认是打开。可选值为: ON 和 OFF。

[HTML_ENABLE_AGENTSTYLE_ENGINE]
这个参数是会传递给Engine的,主要用于一些CSS的兼容性方面的问题。默认值是true。

3. viewer.properties参数设置
viewer.properties文件主要是定义一些扩展的参数。

# configurable variable for JSP base href. Please uncomment the below line. 
#base_url=http://127.0.0.1:8080 

该设置主要应用于代理服务器的情况下,在使用代理服务器后,从request里获取的URI并非真正的URI,需要在这里定义。

# [EXTENSION SETTING] 
viewer.extension.html=html 
viewer.extension.pdf=pdf 
viewer.extension.postscript=ps 
viewer.extension.doc=doc 
viewer.extension.xls=xls 
viewer.extension.ppt=ppt 

定义输出的报表文件的后缀名,和format相关联。

# [OUTPUT FORMAT LABEL NAME] 
viewer.label.html=HTML 
viewer.label.pdf=PDF 
viewer.label.postscript=PostScript 
viewer.label.doc=Word 
viewer.label.xls=Excel 
viewer.label.ppt=PowerPoint 

定义导出报表对话框里的报表格式列表,和format相关联,这样名字会更有意义。

# [CSV SEPARATOR] 
viewer.sep.0=, 
viewer.sep.1=; 
viewer.sep.2=: 
viewer.sep.3=| 
viewer.sep.4=\t 

支持多种CSV分隔符,用户也可以增加新的分隔符(只支持char,而不是string)。但同时需要修改JSP文件和Messages.properties文件。

# [LOGGERS] 
# "logger."+class=level 
# if no level is specified or the text "DEFAULT", 
# then the default level from the web.xml will be used 
logger.org.eclipse.datatools.connectivity.oda=DEFAULT 
logger.org.eclipse.datatools.enablement.oda=DEFAULT 

当前的日志都是通过Engine输出的,如果需要其它组件的日志输出,可以在这里定义。注意格式必须为logger.org……。而且该组件必须实现了java的logger。
可以单独为该组件设置日志级别,如果设为DEFAULT,就会使用web.xml里的设置。

4. URL参数
下面是一些主要用到的URL参数。

“__report”
定义要预览的rptdesign文件路径,支持相对路径和绝对路径,相对路径是相对于web.xml中定义的工作目录。

“__document”
定义要预览的rptdocument文件路径,同样支持相对和绝对路径。相对路径是相对于web.xml中定义的工作目录。在同时定义了__report 和__document参数时,以__document为优先,如未找到相应的document文件,才会从design文件生成document文件 (frameset/output)或是直接去render这个design文件(preview/run)。

“__title”
定义报表显示的标题。

“__showtitle”
是否显示frameset模式下上方的标题部分。true | false

“__toolbar”
是否显示frameset模式下的工具条。true | false

“__navigationbar”
是否显示frameset模式下的导航条。true | false

“__parameterpage”
是否强制弹出或不弹出报表参数对话框。true | false

“__format”
输出报表的格式,默认为html。现在支持:pdf | doc | xls | postscript | ppt

“__locale”
设置Locale信息,如 __locale=zh_CN, 注意必须是国家加语言。

“__svg”
设置chart输出是否以SVG格式输出。true | false
frameset和run模式下,会采用javascript判断客户端浏览器是否支持svg,但并非对所有浏览器有效。

“__bookmark”
设置页面要定位的书签名字。

“__istoc”
指定定位的书签是不是一个TOC名字。如为true,就会根据__bookmark参数值去获取一个真正的书签名,从而实现正常的跳转。这个主要用于定位到一个TOC上。

“__rtl”
指定HTML页面输出是否需要right to left。支持不同国家的阅读习惯,如阿拉伯国家是从右到左的。

“__page”
指定要输出的报表页数,这个依赖于报表的分页设计(page break)。

“__pagerange”
指定要输出的报表页数范围。如1,3,5-9。

“__resourceFolder”
定义资源目录路径。同web.xml中的BIRT_RESOURCE_PATH设置。

“__asattachment”
是否以附件方式下载报表,如生成PDF或是其它格式里。默认是inline。

“__masterpage”
是否要显示master page。true | false

“__designer”
该参数主要是应用在BIRT Designer环境下,如会读取cache的报表参数等等,一般不用。true | false

“__overwrite”
该参数同web.xml定义的参数,不过web.xml里是全局设置,在URL上通过参数可以定义本次操作的设置。

“__imageID”
内部参数,用于image的引用,一般不用。

“__maxrows”
设置Dataset查询的最大记录数,要注意这个设置是全局的,会影响后面所有的请求。主要用于BIRT Designer下,提高报表设计效率。同web.xml中的BIRT_VIEWER_MAX_ROWS设置。

“__maxlevels”
设置查询获取Cube的最大级数。同上面的__maxrows,也主要用于BIRT Designer设计环境。
同web.xml中的BIRT_VIEWER_MAX_CUBE_LEVELS设置。

“__cubememsize”
同web.xml中的BIRT_VIEWER_CUBE_MEMORY_SIZE参数设置。

“__instanceid”
如果查看BIRT输出的HTML代码,你就可以看到一些HTML Element会有一个iid的属性(如table),这个就是instanceid。这个是Engine动态生成的,不可提前预知。所以你需要从 HTML代码中得到这个值。该参数主要是为了获取reportlet(报表片断,如只输出报表中的一个Table或是一个Chart)。需要配合 __isreportlet参数。

“__isreportlet”
指定当前输出是不是一个reportlet。true | false
特别说明:为了输出一个reportlet,BIRT现在提供两种方式。
1. 为要输出的对象(表格或是Chart)定义一个bookmark,然后可以用下面的URL输出reportlet.
http://localhost:8080/birt/frameset?__report=test.rptdesign&__bookmark=bk&__isreportlet=true

2. 采用instanceid,但这个值事先是无法预知的,需要预览一次后从HTML代码中得到。然后用下面的URL输出reportlet.
http://localhost:8080/birt/output?__report=test.rptdesign&__instanceid=iid&__isreportlet=true
还有就是要注意,reportlet只支持document文档。如果是预览design文档去输出reportlet,就必须要使用frameset/output(自动生成document文档)。

“__clean”
BIRT里临时生成的一些文件都是和session相关的,比如临时document文件,还有image文件。这些文件也可以通过session进行管理,这个参数就是指定是否需要在session timeout的时候清除这些临时文件。默认值是true。
true | false

“__dpi”
可以设置输出Chart的dpi数值。

“__fittopage”
暂时这个参数只对PDF和postscript格式报表有效,指定是否调整至适合页面。

“__pagebreakonly”
暂时这个参数只对PDF和postscript格式报表有效,指定是否只采用BIRT报表内定的分页设置。这个参数一般需要和__fittopage联合使用。

“__agentstyle”
同web.xml中的HTML_ENABLE_AGENTSTYLE_ENGINE参数设置。

========================== 后台Server端打印相关参数 ==========================
“__action”
定义执行的指令名称。当前只支持print指令,用于后台服务器打印。

“__printer”
后台打印机名称。

“__printer_copies”
对应打印机的打印份数参数。

“__printer_collate”
对应打印机的双面打印参数。

“__printer_duplex”
对应打印机的duplex参数。

“__printer_mode”
对应打印机的模式参数。是单色还是彩色。

“__printer_pagesize”
对应打印机的纸型参数。比如A4。
===============================================================================

========================== JSP Tag相关参数  ===================================
“__id”
viewer的ID号,这个参数一般不常用,主要用于JSP Tag中,如在一个页面插入两个BIRT Viewer,而且预览同一个报表文件,这时候因为在一个session下面,所以需要用不同的ID去生成单独的document文件。不至于都生成同一个document文件上,从而引发冲突。

“__pattern”
在JSP Tag中用于指定要提交的Servlet Pattern名字,如frameset/output/run/preview等。主要用于采用parameter模式生成parameter dialog对话框时。

“__target”
可以指定提交到的窗口名称。如_blank,_self等。

“__nocache”
指定是否会用到cache的报表参数值,这些cache的值一般保存在rptconfig文件里。在设计报表并预览的时候,可以保存输入的报表参数值。这个在runtime的时候不常用。
===============================================================================

========================== 报表参数相关 ===================================
“__isnull”
指定当前的报表参数为null值,后面是报表的参数名。

“__islocale”
指定当前的报表参数值是和Locale/Format相关的,必须用特定的Locale/Format转化参数值(从String转化为Object)。格式为__islocale=paramName。

“__isdisplay__”
指定报表参数的displayText值,格式为__isdisplay__paramName=displayText。可以在报表中引用displayText值,如params[“p1”].displayText。
在URL上传displayText时如下(报表参数名为p1):
&__isdisplay__p1=hello

“__islocale__”
指定该报表参数值是Locale/Format相关的,同时给定了参数值。格式为__islocale__paramName=paramValue。
===============================================================================

========================== Export Data参数 ===================================
“__exportEncoding”
该参数应用于导出数据为CSV中,可以指定导出的文件编码,如GBK或是GB2312等。

“__sep”
该参数应用于导出数据为CSV中,可以指定数据分隔符,如逗号,冒号等。

“__exportdatatype”
该参数应用于导出数据为CSV中,可以指定是否输出数据类型。true | false

“ResultSetName”
要导出数据的记录集名字。

“SelectedColumnNumber”
要导出的栏位数。

“SelectedColumn”
要导出的数据栏位名称。

具体可以查看BirtSimpleExportDataDialog.js文件。
===============================================================================

5. 其它参数设置
在BIRT Viewer里还有一个比较特殊的参数应用,就是用户可以自定义自已的servlet,然后传递对象到Application Context中,在报表中就可以从全局的Application Context去获取到这个对象。
这里相关的有两个内定的参数,AppContextKey和AppContextValue。下面是一个简单的示例。
public void service( HttpServletRequest request, 
   HttpServletResponse response ) throws ServletException, 
   IOException, BirtException 
{ 
  String myKeyName = "mykey"; 
  List values = new ArrayList(); 
  values.add( "hello" ); 
  values.add( new Date() ); 
  request.setAttribute( "AppContextKey", myKeyName ); 
  request.setAttribute( "AppContextValue", values ); 
  RequestDispatcher rd = request.getRequestDispatcher( "/frameset" ); 
  rd.include( request, response ); 
}

分享到:
评论

相关推荐

    flappybird游戏源码

    开发者可能会使用类似Box2D这样的物理引擎,设置重力、速度等参数来实现真实感的飞行效果。 2. **碰撞检测**:小鸟与管道之间的碰撞检测是游戏判断游戏结束的关键。源码中会包含检测算法,确保小鸟在穿过或触碰到...

    flappy bird matlab 代码

    《Flappy Bird MATLAB 代码解析》 在编程领域,MATLAB是一种广泛使用的高级语言,尤其在数值计算和数据可视化方面有着显著优势。然而,你可能会惊讶地发现,它也能用于创建游戏,比如“Flappy Bird”。这款曾经风靡...

    Flappy Bird 基于Unity

    《Flappy Bird基于Unity的游戏开发详解》 Unity3D是一款强大的跨平台游戏开发引擎,它以其易用性、高效性和广泛支持的平台而备受开发者喜爱。Flappy Bird是一款曾经风靡全球的简单却又极具挑战性的手机游戏,其简洁...

    flappybird程序流程图1

    在初始化阶段,游戏还会设置游戏的基本参数,例如小鸟的加速度、柱子的生成速度、游戏的分数等。 游戏主循环 游戏主循环是游戏的核心部分,在这个阶段,游戏会不断地更新和渲染游戏的状态。游戏主循环可以分为以下...

    FlappyBird素材.zip

    - **物理引擎**:尽管Flappy Bird的物理规则相对简单,但为了模拟真实感,开发者需要设置合适的重力和空气阻力参数。 - **碰撞检测**:准确判断小鸟与管道之间的碰撞是游戏的核心部分,这需要编程实现精确的碰撞...

    FlyBird.rar

    《基于AndEngine的FlappyBird风格游戏开发详解》 在移动游戏领域,FlappyBird曾一度风靡全球,其简单的操作和极高的挑战性吸引了无数玩家。本项目"FlyBird.rar"则是对这一经典游戏的致敬与创新,采用AndEngine这一...

    FlappyBird.rar

    《Flappy Bird游戏详解与开发技术探析》 Flappy Bird是一款在2013年由越南开发者Dong Nguyen推出的极简风格的休闲游戏,迅速在全球范围内引发了热潮。这款游戏以其简单的操作方式、高难度的游戏体验以及极具挑战性...

    基于微信小程序的富文本解析,折线图,MD5,bluebird.zip

    通过设置数据、颜色、轴标签等参数,开发者可以定制化地生成符合需求的折线图,并在小程序页面中展示。 接下来是MD5,全称Message-Digest Algorithm 5,是一种广泛使用的哈希函数,能将任意长度的信息转化为固定...

    微信小程序富文本解析,折线图,MD5,bluebird.zip

    本压缩包文件涵盖了几个关键的知识点:微信小程序中的富文本解析、折线图绘制、MD5加密以及Bluebird库的使用。 1. **微信小程序富文本解析**: 微信小程序提供了`wxparse`组件或`rich-text`组件来处理富文本。富...

    FlappyBird.zip

    《FlappyBird.js游戏开发详解》 在网页游戏中,JavaScript(简称js)作为一种强大的脚本语言,被广泛应用在各种互动式体验的开发中。本文将以"FlappyBird.zip"为例,详细探讨如何利用js技术实现一款类似Flappy Bird...

    flappy bird (游戏)易语言源码

    《Flappy Bird 易语言源码解析与学习指南》 Flappy Bird,一款曾经风靡全球的简单却极具挑战性的手机游戏,以其独特的玩法和难以置信的难度吸引了大量玩家。而今天我们要探讨的是它的易语言版本源码,这对于想要...

    原生微信小程序源码- - 富文本解析,折线图,MD5,bluebird

    通过设置不同的参数,可以定制化折线图的颜色、线条样式、数据标签等,使数据更加直观易懂。 3. **MD5加密**: MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的信息映射为固定...

    微信小程序开发-新闻咨询类-富文本解析,折线图,MD5,bluebird案例源码.zip

    开发者需要学习如何准备数据,设置图表参数(如颜色、轴标签等),以及在小程序中动态更新图表。理解`wxCharts`的API是关键,这涉及到数据绑定和事件监听。 3. **MD5加密**:MD5是一种广泛使用的哈希函数,常用于...

    FlappyBird源码

    通过查看源码,我们可以学习如何创建游戏菜单,设置游戏参数,以及处理游戏的暂停和重新开始等交互功能。 总的来说,Flappy Bird的源码是一个宝贵的教育资源,它揭示了游戏开发的基本流程和关键技术。通过研究和...

    Paper-Bird-master_lua_

    《Lua与Corona SDK构建的“Paper Bird”游戏详解》 在编程世界中,Lua以其轻量级、高效和易学的特点受到了众多开发者,特别是游戏开发者的青睐。本项目“Paper-Bird-master_lua_”正是一个使用Lua语言和Corona SDK...

    cocos2d-html5实现flappybird游戏

    《cocos2d-html5实现Flappy Bird游戏详解》 Flappy Bird是一款在全球范围内广受欢迎的休闲游戏,其简单的操作和极具挑战性的玩法吸引了无数玩家。本文将深入探讨如何使用cocos2d-html5框架来实现一个类似Flappy ...

    Flappy Bird Game using JavaScript with Free Source Code.zip

    《使用JavaScript制作Flappy Bird游戏详解》 JavaScript,一种广泛应用于网页和网络应用的脚本语言,以其轻量级、动态特性和丰富的交互性,在Web开发领域占据着重要的地位。本篇文章将深入探讨如何利用JavaScript...

    unity flappybird

    《Unity制作Flappy Bird实战解析》 在游戏开发领域,Unity引擎因其强大的功能和易用性,成为许多开发者首选的工具。本篇文章将深入探讨如何使用Unity制作一款经典的Flappy Bird游戏,以此来掌握Unity的基本操作和...

    用cocos2d-x 3.2物理引擎实现的Flappy Bird

    《Cocos2d-x 3.2物理引擎在Flappy Bird中的应用详解》 Flappy Bird,这款曾经风靡全球的手机游戏,以其简洁的玩法和极高的挑战性吸引了无数玩家。而作为开发者,我们对其背后的实现技术充满了好奇。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics