论坛首页 Java企业应用论坛

准备发布Jert的第一个版本

浏览 70597 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-01-17  
Hi All,
  我准备发布JavaEye Reporting Tool (Jert)的第一个版本,由于开发环境限制的缘故,没有办法进行各种servlet container和各种数据库上的功能测试,所以希望在发布第一个版本之前,能够得到大家的帮忙,从CVS上check out代码进行测试。

CVS Server: cvs.iteye.com
Repository: /cvsroot/quake
CVS username: anonymous
CVS password: anonymous
module name: jert

感谢Robbin提供论坛供我们交流,提供CVS服务器的支持,以及对于Jert项目的宣传。
   发表时间:2005-01-17  
JavaEye Reporting Tool (JERT)

JERT is an open-source, web-based database reporting tool. It allows you to create flexible reports without any programming (though you'll need SQL knowledge).

It's a lightweight reporting environment, the report can be created to quickly share information via web.

JERT是一个开放源代码的,基于web的,数据库报表工具,它能够让你不需要编程而能创建各种灵活的报表。(当然你需要了解一定的SQL知识)

Why Yet Another Reporting Tool?

我们需要一个轻量级的报表工具,能够快速地创建报表,并且将这些报表通过web进行信息共享,在开始JERT项目之前,试用了几个开源的工具: JasperReports, JFreeReport, Datavision, ART, openreports。前3个reporting tool能够完全满足我们的用户需求,但是他们太过于重量级,需要用户了解xml, report designer等知识。而ART过于简陋,不支持动态参数的sql生成,而且代码是基于servlet直接output write,比较难扩展。openreports是最接近需求的一个工具,但是它的报表来源是基于JFreeReport,还是需要用户了解其他的相关知识。所以最终决定是重新开发一个轻量级别的,容易扩展,容易集成的报表工具:Jert。

Jert全部采用open source的工具编写:
WebWork, Spring, Hibernate, Sitemesh,  XStream, etc , it's powered by open source.
0 请登录后投票
   发表时间:2005-01-17  
安装说明
1. 安装
执行ant war以后,在dist目录下面会多出jert.war,将其发布到任意的servlet container下面(对于常见的servlet container如Tomcat, Resin, Jetty等等,只需要将它拷贝到webapps目录下即可)。

2. 设置管理员帐号
访问 http://localhost:8080/jert/setup/index.action (请根据发布的机器名和端口不同,做相应的修改) ,可以创建一个管理员帐户,然后可以用这个帐户登陆进行操作。

3. 导入Sample数据
首先我们需要创建一个数据库连接到JERT自带的hsql northwind数据库:
A. 访问 Administration -> Databases -> Create New Database
B. 选择 HSQL Standalone Mode
C. URL 填写 jdbc:hsqldb:D:\jert\sample\northwind\northwind (请根据你的jert路径不同,做相应的修改)
D. Username填写 sa,密码为空

然后我们导入一些Report的例子
A. 访问 Administration -> Reports
B. 选择前面建立的数据库 -> Import From XML
C. 把sample\northwind\reports.xml的内容,复制到文本框

导入完毕以后,我们就可以访问Reports模块下面的这些Sample Reports了。
0 请登录后投票
   发表时间:2005-01-17  
基本的操作说明
1. 如何连接报表数据库
用管理员帐号登陆,选择Administration -> Databases -> Create New Database,填写相关的连接信息即可。
JERT release package里面只带有hsql的jdbc driver,如果你需要连接其他类型的数据库,请将相应的jdbc driver lib添加到classpath。


2. 如何创建报表
在创建好数据库以后,我们就可以开始添加需要的报表。
选择Administration -> Reports -> Create New
目前共有3种报表类型可以选择:
A. STATIC_QUERY
静态的sql query报表,用户不需要对该报表做输入参数的动作,我们可以直接输入任意的sql,比如:select * from user。

B. SIMPLE_PARAMETER_QUERY
简单固定参数报表,用户需要对该报表做输入参数的动作以后,才能得到查询结果,比如:select * from user where age > #age#。在这里参数名需要用“#”包围起来。

C. DYNAMIC_PARAMETER_QUERY
动态的非固定参数报表,根据用户输入参数的不同,产生不同的查询语句,比如:
<plain>select * from user where 1 = 1 </plain>
<dynamic type="isNotNull" append-before="and age > " parameter-name="age"/>
<dynamic type="isNotNull" append-before="and sex = " parameter-name="sex"/>

当用户只输入age这个参数的时候,会产生这样的查询:
select * from user where 1 = 1 and age > 18
当用户输入了age和sex这2个参数的时候,则会产生这样的查询:
select * from user where 1 =1 and age > 18 and sex = 'male'

关于这种类型的报表详细说明,请参考dynamic_report.txt [TODO]


3. 参数的说明
如果是有参数的报表,需要设置参数类型
Type:请根据数据库里对应的参数类型进行相应的设置
Optional: 用户可以不输入该参数
DefaultValue: 显示在输入参数页面的默认值


4. 导入/导出报表定义
在Administration -> Reports -> Export All To XML,能够把该数据库下所有的定义文件导出。
点击每个报表的定义,还能够选择导出单个报表定义。

Administration -> Reports -> Import From XML,可以将导出的xml文件内容重新导入到该数据库下。

可以用这个功能来做报表定义的备份、恢复或者做类似数据库之间的报表迁移。
0 请登录后投票
   发表时间:2005-01-17  
Screenshot
0 请登录后投票
   发表时间:2005-01-17  
可是我看不到目前支持哪种输出格式啊?难道只是现在看到的这个html和excel表格??
打算支持pdf、word么?

大致试了一下。
运行环境:
websphere5.1+补丁、mysql没有问题。在websphere不打补丁的情况下是白板。呵呵,不要担心,是websphere的问题。在sitemesh的jira上有描述。

tomcat+hsql也没有问题。


只是粗粗的跑了一遍。不代表测试结论。呵呵。
0 请登录后投票
   发表时间:2005-01-18  
谢谢denis的帮忙,我手边只有测试过tomcat, jetty, resin,报表数据库也只有hsql, mysql 和 ms 的sql server。

pdf和word的输出支持准备放在第2个release版本以后再做。
0 请登录后投票
   发表时间:2005-01-18  
嗯,非常有兴趣帮你测试,我们上次帮美国一家公司做一个小项目,其中涉及到生成报表,用得是jfreechart,iText组件,可以生成pdf,excel,html,csv,txt,rtf六种格式的报表,数据量非常大,有时会达到千万条。刚好可以利用他们数据庫中的内容帮你测试。
0 请登录后投票
   发表时间:2005-01-18  
Quake Wang 写道
谢谢denis的帮忙,我手边只有测试过tomcat, jetty, resin,报表数据库也只有hsql, mysql 和 ms 的sql server。

pdf和word的输出支持准备放在第2个release版本以后再做。



说几点建议啊,仅代表个人观点。

1、中文处理方面似乎应该加强。
理由:今天中午有空,把整个东西放在linux上又跑了一下。
环境是linxu+websphere5.1plus+mysql 一切正常。中文输出也正常。但是如果是 windows环境下似乎出来的就是乱码了。还没仔细考虑过问题出在哪里。估计最有可能是因为windows下mysql的字符集编码和linxu下不一样导致。不过作为一个项目就应该多考虑一下。
2、数据库支持应该更好。
理由:既然使用hibernate,那么支持多种数据库应该根本不是问题。何不多支持几种?
3、输出格式应该更多,效率也需要考虑。
理由:数据量大时比较慢。(其实也不太大,大概13000 records)
0 请登录后投票
   发表时间:2005-01-18  
中文问题我猜想有可能修改一下你的mysql driver url,加上encoding的设置,就能够显示出正常的中文报表了。

关于数据库的支持,是我没有讲清楚,让你误会了:
Jert本身采用hibernate来存放数据库定义,报表定义之类的信息,所以这一块是不需要考虑多种数据库的兼容。
我担心的是生成报表的这一部分,是通过jdbc api去链接报表数据库,因为测试mysql和hsql上发现了一些兼容性问题(分页游标定位和输出值格式的问题),所以担心其他数据库可能还有一些未发现的问题。

其他输出格式的支持会在以后的版本里面加上,效率问题我想可能是因为分页是通过ResultSet的定位去实现的,不同的jdbc driver实现,在这个方法上性能差很多。

谢谢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics