当前位置:首页 » 编程软件 » birt脚本

birt脚本

发布时间: 2022-05-16 09:05:54

⑴ 几种流行BI的比较(转)

�0�2�0�2�0�2�0�2�0�2�0�2 目前国内市场上的报表工具可谓五花八门,从各厂商的介绍来看,这些产品的功能有相当部分是重叠的,为了区分它们往往需要了解它们功能的实现机制和最终达到的效果以确定产品是否符合实际应用需要。一辆好的车子是驾驶者的延伸;一个好的报表工具是使用者的延伸。这个表述看似有点儿玄,其实很实在,要真正做到却又非常难。报表工具的使用者与驾驶者有一个共通的地方,那就是他们中的大部分人都不是机械或电子专业出身的,他们需要一个得心应手的工具来帮助他们做想做的事情。报表工具如何才算得上得心应手?你可发现有很多回答,归纳起来,不外以下几方面: 交互性:电子报表有别于传统纸质报表的灵性,是报表服从于人、提高人的工作效率的关键; 易用性:报表开发工具的易用性和报表使用的容易程度是判别报表工具好坏的重要标准; 可扩展性:系统性能随硬件增加而提升,是企业级报表系统与非企业系统的分水岭; 安全性/可靠性:完善的权限控制,标准化的数据安全接口,低故障率以及故障后的可恢复性; 完整性:能满足各种信息展现要求,能覆盖各种类型数据源和格式,能部署到各种应用环境。笔者挑选了在国内外市场上表现活跃且据代表性的几个产品:Business Object (SAP) 的Crystal Report、Actuate、润乾报表、Jasper Report来做一个深入的比较,帮助有兴趣的读者进一步地了解它们。上述产品均具不同的特性:Crystal Report的应用非常广泛,在不同行业、规模的应用里都可以看到它的身影;Actuate是专业的企业报表工具,以e.Report为代表的一系列产品在国际上有很长的历史,早期被广泛应用于金融、电信、政府等较大规模的企业、组织,近来也开始关注中小型企业,推出了全新BIRT系列产品;润乾报表是国内报表的后起之秀,在中式报表的支持上很有特色;Jasper Report则是一款开源产品,使用无需授权费。1.交互性�0�2�0�2�0�2�0�2�0�2�0�2 纸质报表所承载的信息是固定的,当人们想进一步了解报表上某些数据时,没人会指望它会主动“开口”予以解答。单向、无反馈的信息传播过程是纸制报表最大的软肋,这使得人们不得不在查找数据上花费大量时间。电子报表工具产生初期,电子报表与纸质报表差别并不太大,只是用屏幕代替了纸张。随着技术的进步,电子报表的交互性越来越强,拥有了能与用户沟通的“智慧”。人们不再需要为查找某项数据就将整张报表翻遍;通过简单操作就能重组、排列报表上的数据;并能通过创建图表的形式把需要的数据展现在人们眼前。于是,在选择电子报表工具时,人们慢慢地将交互性作为重要的考核指标,因为他们需要一份“活”的报表!基于Web的互动性给报表工具设计者带来了很大的挑战。很长一段时间里,浏览器应用的交互性远远不及桌面应用,因为用户在浏览器界面的操作是由远方的服务器来响应的。互联网的速度、服务器的性能和当时的数据交换协议都难以胜任交互性很强的应用任务。但Web 2.0的出现大大改变了这种状况,使得基于Web的应用也能带有很强的交互性。对交互性的支持成为了报表产品炙热的竞争焦点,特别是基于Web 2.0的交互性。“这是一个奇妙的良性循环过程:对报表软件供应商而言,产品拥有更强的交互性就等于拥有更强的‘人气’;而客户对产品更加‘忠诚’,报表产品的市场竞争力也会相应提高,”业内流传着这样的看法。Crystal和Actuate的报表在交互性方面都有不错的表现,但Actuate在对Web 2.0的支持上走在了前面。Actuate BIRT的交互式报表浏览界面能通过标准Web 2.0调用、嵌入到任何Web页面,功能与Google地图十分相似,而且Actuate BIRT的交互功能几乎是不受限制的。而Crystal Report的交互功能则必须在报表设计时预定且不支持基于标准的调用,这是它与Actuate最大的区别。相比之下,其它两个产品在交互性方面的开发尚未进入状态,还不能提供类似的功能。这也是Crystal Report和Actuate作为两家成熟的商业报表软件供应商在技术上的优势。2.易用性�0�2�0�2�0�2�0�2�0�2 大多数的电子报表用户都没有专业IT背景,他们面对电子报表的第一反应大概会与互联网刚开始普及时,人们面对各类网站网页不知所措的样子差不多。对于企业来说,他们想要的报表工具是服务于全体员工甚至是客户的。“怎么能让非专业人士在短期内掌握报表工具的使用?”,这一问题很大程度上取决于报表工具本身是否容易被掌握,也就是报表工具的易用性。报表工具的易用性主要包括报表设计、报表查看两个层面。设计的易用性主要体现在:能很容易地创建数据源、数据集;能很方便地调用函数、过程处理数据;拥有多种将复杂数据资料展现在二维平面上的形式等方面。而查看的易用性是指报表用户能不费周折地得到自己所需的信息。这里涉及到报表的设计合理性和展现工具的灵活性(如上一节所提及的交互性),因为如果报表工具不具有展现的灵活性,报表设计工作的难度会更高。Crystal Report在易用性方面相当具有优势。在报表设计方面,Crystal Report有一款基于浏览器的报表设计工具:Web Intelligence,此外,Crystal Report还向用户提供了一个报表设计向导,用户可通过该向导按部就班地向报表内添加数据、图表等元素。在对仪表盘的支持上,Crystal Report也下了不少功夫,它的Xcelsius线能让用户非常容易地使用仪表盘。总之,报表设计直观明了且不需要过多专业培训是Crystal Report的一大特点。在报表查看方面,Crystal Report可以支持交互式报表,这点之前已讨论过了。与Crystal Report的“傻瓜相机”式设计理念相比,安讯的e.Report可谓是一台专业相机,能拍出别人拍不出的效果,但与此同时,它对使用者的要求也更高。e.Report的难用是业内有名的,不过仍有很多企业选择e.Report的原因是因为它能做出别人做不到的排版效果。安讯最新的百灵报表(BIRT)则吸取了e.Report这方面的教训。BIRT设计器的界面采用了Eclipse的风格,实现了“拖拽式”设计,可以完全不依赖编程。同时,提供了类似于Web Intelligence的Business Report Studio,用户可在浏览器上设计报表或对报表结构、内容、格式进行调整。这种“全民皆兵”的设计方式不但较易被初学者掌握而且使得BIRT的使用者也能参与报表开发。此外,在中式报表方面,BIRT考虑到了国内用户的实际需要,支持斜线表头、信息回填等功能。在报表查看方面,安讯的BIRT系列报表可能是目前查看方式最完整的交互式报表。通过一个交互式报表浏览器,任何BIRT报表都可以“活”起来,该交互式报表浏览器还可通过Web 2.0的调用集成到任何Web页面,这点是任何其它产品都没有做到的。润乾报表在易用性方面的表现主要集中在中式报表设计上。在斜线表头方面,如果说BIRT的斜线表头只能用图片粘贴方式来完成的话,润乾则将其进一步地功能化,用户可在设计栏中找到斜线表头的单独选项。信息回填方面,用户可从不同来源、等级的数据中找到相应元素并将其添入新报表,而且这种功能是不受联机或脱机的影响的。作为一个开源产品,Jasper Report在易用性方面的表现已是相当不错的了。一般的报表设计问题,如创建数据源、设计表格、图表、导出格式等,Jasper Report的设计器都能不错地进行处理。不过,虽然它的易用性表现已相当不错,Jasper Report在功能上仍远远不及其它几款商业报表工具。3.可扩展性�0�2�0�2�0�2�0�2�0�2�0�2�0�2 所有企业都希望能购买到一套功能可满足所有需要的报表工具。但几乎没有人能完全预知企业未来的扩展需求。这就涉及到了报表功能、性能的可扩展性问题。Crystal Report在功能扩展方面的特点是与.net平台的“联手”,除其自带功能外,用户还可以利用.net平台上的其它功能。不过,除.net平台外,用户基本上不能将其它应用软件中的报表功能补充到Crystal Report之中,而Crystal Report的功能本身也没有可扩展性,这点不足在中式报表应用上尤为突出。安讯百灵报表BIRT的前身是开源的Eclipse BIRT,它具备了一个可扩展性非常强的架构,预置了很多扩展接口(Extension Point),且支持脚本语言。用户可以根据需要通过扩展接口和脚本向BIRT添加功能。这点对于OEM厂商以及项目开发者是非常有吸引力的,因为BIRT有很好的“可塑性”。除功能可扩展性外,报表产品性能的可扩展性也是很重要的一方面。报表系统必须能够应付不断增加的使用人数和报表。理想情况下,报表只需增加硬件设备就能完成对其性能的提升。但不是所有的工具都能做到这点,大部分的报表工具能用上两、三个CPU就已很不错了。安讯的报表平台iServer是业内公认的最具有可扩展性的平台。根据权威机构IBM Innovation Center的测试数据:“安讯iServer报表平台能够从1台扩展到16台服务器(共64个CPU),做到近乎线性的扩展。”目前在业内还没有第二个产品能够交出这样的成绩单。Crystal Report Enterprise和润乾报表都支持集群,也能扩展到数千用户的大级别的应用,但由于扩展的效率不如安讯平台,所以需要更多服务器和CPU。Jasper Report作为一个免费的软件,在性能方面没有太多的优势,能够支持共线用户已经足够让人满意了。4.安全性/可靠性�0�2�0�2�0�2�0�2�0�2�0�2 安全性指的是信息不会丢失、不会落到没有授权的人手里,这点在企业应用中尤为重要,因为报表平台上的信息必须要做到有控制的共享。安全性存在于用户终端和报表后台系统。前者往往易被忽略,因而也最容易出现问题。在用户终端,安装浏览器插件和改变浏览器安全配置都会对用户端的安全性产生很大影响,因为它们都存在潜在的风险,会为“恶意程序”提供可乘之机。换句话说,不安装插件、不改变用户的安全设置,对用户才是安全的。另一方面,报表后台系统的安全性主要体现在对用户的权限管理、对数据的加密及对数据访问的控制。数据访问控制涉及一个的宽窄度问题,指的是访问权的授权单位的大小,比如说,最“宽”的权限管理可能是控制用户能否登录系统;略窄一些则可能是控制用户能否访问特定目录和文件;权限再窄一点就可能是控制用户能否访问特定的数据行和报表页了。Crystal Report Enterprise和Actuate iServer平台的安全机制是基于“用户与角色的安全模型”,通过该安全模型控制系统内部的各种报表、程序、资源等的访问权。此外,它们也提供与外部安全系统结合的接口,能把报表系统与环境的安全机制融为一体。而两个产品最大的差别在于Crystal Report的数据访问控制是基于数据行,而Actuate是基于报表页或电子表格的单元,而基于页的控制对用户来讲可能更直观易用。润乾报表的安全机制是基于用户的,访问权一般授予用户,不支持更细化的数据访问控制。Jasper Report的安全控制由部署环境实现。与安全性相比,可靠性的含义就更为直观了。对用户而言,可靠性就是系统能让人更放心地使用。目前的计算机系统还不能保证100%不出问题,但一个好的系统应该很少出问题,就算有问题也不会是那种“恶性事故”,导致信息丢失、系统崩溃等难以挽回的局面。所以,系统出问题后,能够尽快恢复才是最实际的。报表应用的可靠性不仅是一个软件质量问题,还是一个架构问题。有的架构对环境和第三方依赖很大,“命运”不掌握在自己手上,就会存在不少外在的可靠性风险。Crystal Report与Actuate都已发展多年,在产品的研发方面都有极大的投入,两个品牌在国际上也各自拥有很多大客户。它们的产品经受住了时间的考验,在可靠性方面是令人放心的。Crystal与Actuate都支持故障转移,并能通过配备后备服务器、硬盘的方式增加系统可靠性。相比之下,润乾报表和Jasper Report还没有太长的历史,难以对它们的可靠性作出总结。而从系统架构来讲,Jasper Report的部署需要第三方的应用服务器,系统的可靠性有赖于所选的应用服务器的可靠性。此外,Jasper Report 和润乾报表都没有自主的故障转移能力,它们这部分的能力是依赖部署环境的,存在很大的局限性,发生问题时,很难辨别是报表系统本身的问题还是部署环境问题。5.完整性�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2 报表工具的完整性主要体现在它是否具有强大的信息展现功能;能否覆盖不同类型的数据源和格式;能否部署、集成在不同的运行平台和环境。大多数的主流报表工具都具有相当出色的完整性,因而才能够在激烈的竞争中占有一席之地。他们共通的方面,就不在此赘述,只就它们的差异,做一些说明:对Excel的支持:微软Excel是最常用的数据分析、展现工具,因此兼容Excel成为了很多报表工具的追求。从兼容的效果来看,Actuate e.Spreadsheet可谓接近完美,除不能输出静态图片外,几乎能100%地支持Excel的功能。与之相比,其它系统对Excel的支持,只能做到数据层面,输出的是一张“看上去像Excel”的表格,却不能像e.Spreadsheet那样做到输出带公式图表的XLS文件。比如,润乾报表的编辑界面看似Excel,但润乾报表却不真正兼容Excel。对Flash Object的支持:Flash Object能给报表页面带来生气,在很多场合都能够用得上。Crystal Report是最先实现Flash Object的,而较晚起步的Actuate BIRT支持的种类、式样更多更全,大有青出于蓝胜于蓝的势头。其他的两个工具还不具备对Flash Object的支持。对仪表盘的支持:仪表盘式的应用非常广泛,市面上也已有许多专用仪表盘软件。面对专用仪表盘软件造成的冲击,报表工具厂商也不得不加强对仪表盘的支持。经过努力,报表工具所支持的仪表盘仍然具有灵活性上的优势。在这方面Crystal Xcelsius做的最为出色,能轻松的产生仪表盘报表。Actuate BIRT也具备了相当不错的仪表盘支持,它拥有了最接近专用仪表盘软件的功能设计。对脚本的支持:脚本是补充报表工具自带功能不足的有效手段。高级报表设计人员往往能利用脚本,编制出一些富有创意的报表。对脚本的支持也是Actuate的传统优势,Actuate e.Report支持Basic作为脚本语言;Actuate BIRT支持java Script/Java作为脚本语言。而目前其它几个报表工具对脚本的支持均远没有Actuate做得那么完善。对集成的支持:润乾报表,Jasper Report和Actuate的BIRT/e.Spreadsheet报表都能以“引擎”方式嵌入到第三方应用。在单独部署时,他们都有J2EE的展现层,有基于标准的调用接口,能方便地集成到其它网络应用中,Actuate更是支持Web 2.0,使其能更为方便地集成到网页上。相比之下,Crystal Report是个比较封闭的系统,它自成一体,必须整块使用,集成非常有限而且没有太多可个性化的东西供用户应用。以上是笔者对国内市场上热门报表应用产品:BO Crystal Report、Actuate、润乾报表和Jasper Report之间比较的一点心得。虽然,这四个产品的很多功能是重叠的,但经过较为深入的比较可以看出,它们功能的实现质量和达到的效果还是存在着明显的差别。如果读者能从中领会到这些产品相异的地方,对选择合适的报表工具必定会有帮助。

⑵ 在birt中如何编写脚本使默认全部查询

查询参数带进去的时候直接默认百分号%即可

⑶ brit 在java中怎么调试

Birt 中的通过Script加入调试输出sql语句代码

用Brit制作报表时可通过在Script脚本中加入以下代码输出所执行的SQL语句。
在Script的 BeforeOpen 事件中加入
importPackage( Packages.java.io );
out = new PrintWriter( new FileWriter("c:/debuginfo.txt", true ) );
out.println("queryText:--$amp;>quot;$+ this.queryText);
out.close();

⑷ 基于eclipse的birt报表能进行断点调试吗

birt中的js脚本不能用alert直接弹出提示,也没有办法用断点跟踪进行调整。如果你要用birt进行调试的话,有一个简单的方法:打印,在脚本里写上

importPackage(Packages.java.lang);
System.out.println("test===");

就可以在控制台里打印出来,进行简单的调试了,但是报表必须部署在tomcat下才能打印。如果你想要进行断点调试的话,据说finereport可以。

⑸ 如何在birt4.2.1中添加日历控件

CSDN上搜到的,,你试试..虽然不建议在birt上添加日历,,没什么太大的意义啊. 一个用来展示的东西你不应该赋予他太多的功能,完全可以在进入birt之前把需要的参数定义好!!

http : / / download . csdn.net/download/xxgcxyweijun/2182507

birt 日历控件已经实现 。
1、首先需要引入一个Calendar.js脚本,将此脚本放置于WebRoot>webcontent>birt>ajax>utility下
2、先在FramesetFragment.jsp中对梅花雨控件进行引用.
<script src="birt/ajax/utility/Calendar.js" type="text/javascript"></script>
3、修改TextBoxParameterFragment.jsp
在textbox中加入onclick事件
<%if (encodedParameterName.indexOf("Time")>=0) {%>
onclick="calendar()"
<%} %>
因为我不知如何判断它是否为日期型,所以只好在判断它的name中是否包括‘Time’。在命名参数时再加以限制。

⑹ birt报表和润乾报表使用上的比较

我理想中的报表工具(或:报表选择注意五个过程)
最近两个项目实在是被报表头都搞大,我们在项目中一直用birt作为报表工具(这里感谢安讯把birt开源了),BIRT是一个Eclipse-based开放源代码报表系统。它主要是用在基于Java与J2EE的Web应用程序上。BIRT主要由两部分组成:一个是基于Eclipse的报表设计和一个可以加到你应用服务的运行期组件。BIRT同时也提供一个图形报表制作引擎。
它具有如下优点:
1)操作界面友好大方,各种提示信息直观清晰,界面,图标都很漂亮:尤其是对报表的开发布局划分的很科学,一般的报表工具只有设计和预览两个界面,BIRT有正常主页,XML源,布局,预览,脚本多个设计布局。
2)集成在Eclipse中,不用再开启别的报表开发工具窗口。
3)BIRT的本地化做的很好,安装以后操作界面就是中文的。
4)开源的报表产品,降低开发成本,一些报表开发工具价格相当昂贵。
但是birt存在如下缺点;
1)如果遇到问题,只能借助互联网。虽然可以找安讯,但是感觉不划算,认为都开源了,还要给安讯交钱,不如自己多花时间研究研究,说不定就能解决。(呵呵,这里不要笑话我这种程序员,死脑筋!)
2)birt没有填报(或者表单功能),常见系统不光要展现数据还要录入数据。于是我们要在录入数据上花大量时间去做开发。
3)由于birt使用条带的报表模型,很多中国复杂报表做不了。几次在项目中,我们不能使用birt做出来客户要求的报表,不但要向客户多次解释,而且最终闹得有些不愉快,大大降低客户满意度。
4)满足个性化需求是社会趋势,但是使用birt,基本上让客户自定义报表不可能,(虽然我知道用户可能最终定制报表数量有限,但是我个人觉得当用户能自定义简单的报表是应该的)遇到困难怎么办,不能抱怨了,要想办法解决,向同行咨询,问客户意见,发现购买商业报表一种可行方案。
经过多方取证和调查,我感觉应该从一下五个方面来考察报表价值,如果有不足希望大家批评指正:
1. 报表合同价格。报表行业购买方式一般是按照服务器来授权,细微区别可能在按功能或者并发来确定价格高低。如果按照服务器授权方式,个人感觉价格应该在五万以下,当然具有报表之外的功能,可以适当加价。但是如果光一个报表模块就报价几十万,感觉基本没有谈必要,特别遇到要部署几十个服务器的大项目。感觉基本没有谈的必要,无论怎么打折,都很难达到理性价格。如果,用户付费,为报表这个模块就要付出这么大代价,用户可能选择竞争对手的方案,如果软件开发公司付费,我看不如自己投人力改造开源报表,
2. 报表产品易用性。购买报表产品目的是加快开发进度,减少报表维护量,增加客户满意度。如果报表设计过程中,报表设计器没有充分考虑设计者,比方设置一个报表背景图片,报表只保存图片相对路径,如果移动报表那麻烦就大了,这些方面建议报表公司向excel学习,比方制作报表需要编写大量表达式,一个简单功能还要写一行表达式,不能通过拖拽来生成,这方面建议报表工具可以向dreamweaver学习。在那些报表数量比较大项目中,要特别注意报表易用性,否则设计者会疯了,还不如去coding了。
3. 使用报表过程中享受报表公司的服务。我感觉如果遇到报表公司的销售人员不懂技术,一定要谨慎,很可能出现收钱人(态度好),帮忙解决问题的人(另外一个态度)。
作为销售人员,应该是懂技术好,有问题,直接找销售人员就可以解决(当然比较复杂问题,肯定还是要联系报表公司的技术人员)。如果销售人员不懂技术,我想可能有一下几个原因:
1)公司人员流动性比较大,刚进来,还没有熟悉产品,要找个技术人员陪同。
2)产品过于复杂,难以理解,让销售人员没有办法学会自己产品。
3)可能销售人员把心思放在通过手段来推销产品,而不是帮助客户解决所有问题这种方式来销售。
打听公司服务可以通过以下几种方式:
1)向朋友打听,看看他们对各个报表公司评价。
2)通过网络调查,自从进入web2.0时代后,网上能搜多关于报表公司评价,比方:it公司速查手册,技术人员blog。
3)去报表公司官方平台上,看报表公司有没有和客户互动活动(互动活动说明这个公司比较关心客户体验),去论坛看帮助其他用户解决问题速度,如果一个公司连论坛都没有或者不维护,说明报表公司不想通过一种免费方式帮助客户解决问题,通俗点可能被试用客户整烦了。
4)休息时间给公司打电话,如果有人接电话,可能意味着这个公司战斗力强,也可能他们在帮助客户解决问题(做项目的客户加班是常事)。

4.项目上线之后能否提高客户满意度。如果没有达到这个目的,就没有购买商业软件的价值。比方,能满足客户简单自定义报表需求,能提高报表展现时间速度,能把客户想到报表都能设计出来。
5.第一次购买之后合作价格。由于软件付费中有很大一部分是软件服务成本,我想随着对软件越来越熟练,报表厂商的服务成本会越来越低,所以以后软件购买价格最好不要高于第一次购买价格,当然如果价格涨幅没有超过cpi指数也是可以接受。

以上是我想到的报表选择中注意事项,

附上,现在我司在用finereport

⑺ 关于birt 报表结合 web项目,采用script数据源的问题

我4月份刚开发完了一个BIRT项目。我也用的是BIRT 4.2,然后我有很多birt报表用的也是script datasource。

你用的什么服务器?我用的tomcat和jboss,两个都可以顺利跑在windows和linux环境,绝对没有java heap space。

1.首先你的服务类,就是从数据库读数据的java class绝对不应该放在WEB-INF\lib下面。你apps打包打得对吗?

2.至于你的页面跑不出来,我想问数据量多少?在sql里面跑那个query要用多久?

3.你留个邮箱我可以给你例子。

⑻ birt的onrender怎么输出html标签

birt的话不是很清楚,而且也没有找到类似的资料,只能和题主讲下我用的finereport的方法了,题主可以作为参考,应该是差不多的。

新建一个空白html,在里面添加一个按钮和一个iframe,其中iframe指向工程中的某张填报报表。

onclick="document.getElementById('reportFrame').contentWindow.contentPane.()"

⑼ birt脚本如何操作结果集

实现起来比较麻烦,不推荐用。还是用用FineReport吧,绝对的报表软件NO.1

birt动态SQL实现有三种方式:拼接SQL、绑定变量和让应用程序拼接,birt得到返回结果集方式。

1.拼接SQL方式
在数据集中写SQL,如下:

select id ,code,name,type
from type

选中数据集,点script方式,在beforeOpen事件中写如下SQL:

var type = reportContext.getParameterValue("type");
var name = reportContext.getParameterValue("name");
var query = this.queryText;
if(type!=null){
query = query + " and type = "+type;
}
if(name!=null&&name!=""){
query = query + " and name = '"+name+"'";
}
this.queryText = query;

然后就可以了,当然,也可以不写第一步,直接所有的SQL都在beforeOpen中拼接。

但是,拼接SQL方式不仅复杂容易错,还会导致SQL注入风险。

2.绑定变量方式
在数据集的SQL中写如下SQL

select id ,code,name,type
from location
where (type = ? or ? is null )
and ( name = ? or ? is null )

然后配置数据集的参数,如下图:

最后一项是链接报表的参数。倒数第二项是默认值,填null

这种方式不会有SQL注入风险。

另外如果想要查看执行的SQL,可以在数据集的SCRIPT的beforeOpen事件写如下脚本:

importPackage( Packages.java.io );
out = new PrintWriter( new FileWriter("c:/debuginfo.txt", true ) );
out.println("queryText:-->"+ this.queryText);
out.close();

第三种是在应该程序处理查询,BIRT负责取出结果集展示,采用的是BIRT+SPRING+MYBATIS。

当然这里MYBATIS也可以是其它框架,思路一样。

BirtBeanFactory.java
public class BirtBeanFactory {

private static BeanFactory ctx;

public synchronized static void setBeanFactory(BeanFactory beanFactory) {
ctx = beanFactory;
}

public static Object getBean(String str) {
return ctx.getBean(str);
}

public static <T> T getBean(Class<T> clazz) {
return ctx.getBean(clazz);
}
}

GlobalInitializer.java
public class GlobalInitializer implements InitializingBean ,BeanFactoryAware{

private BeanFactory beanFactory;

@Override
public void afterPropertiesSet() throws Exception {
BirtBeanFactory.setBeanFactory(beanFactory);
}

@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}

}

BirtDataFactory.java
public class BirtDataFactory {
private TestService manager = (TestService) BirtBeanFactory.getBean(TestService.class);

public List<Location> findListByDto(LocationDto dto){
return manager.findListByDto(dto);
}
}

spring配置文件配置下:
<bean id="globalInitializer" class="com.test.birt.core.GlobalInitializer"/>

这样代码层就完成了,
在birt中创建脚本数据源
创建脚本数据集,在数据集的open事件中写这样的方法:
importPackage(Packages.com.test.birt.core);
importPackage(Packages.com.test.birt.report.dto);
factory = new BirtDataFactory();
dto = new TestDto();
dto.setCreateTimeStart(reportContext.getParameterValue("createTimeStart"));
dto.setCreateTimeEnd(reportContext.getParameterValue("createTimeEnd"));

if(reportContext.getParameterValue("dcId")!=null){
dto.setDcId(reportContext.getParameterValue("dcId").longValue());
}
collectList=factory.findListByDto(dto);
iterator = collectList.iterator();

在fecth阶段,写这样 的代码:
if(iterator.hasNext() == false ){
return false;
} else{
var collectBean = iterator.next();
row["id"]=collectBean.getId();
row["name"] = collectBean.getName();

return true;
}

这样就可以了。

热点内容
编译androidwebkit 发布:2024-05-04 13:11:37 浏览:760
安卓微信流量怎么控制 发布:2024-05-04 12:47:19 浏览:798
mysql主从复制数据库 发布:2024-05-04 12:37:55 浏览:511
开公司人员配置不够有什么影响 发布:2024-05-04 12:32:21 浏览:434
rust网络编程和ftp 发布:2024-05-04 12:32:21 浏览:62
微信怎么知道账号密码 发布:2024-05-04 12:20:06 浏览:978
我的世界服务器如何用自己的存档 发布:2024-05-04 12:06:36 浏览:338
七日杀服务器ip怎么设置 发布:2024-05-04 11:57:57 浏览:431
启用java 发布:2024-05-04 11:51:46 浏览:970
mac下开发php 发布:2024-05-04 11:28:53 浏览:628