fisher

目前关注:ESB框架、中间件技术、代码运行期管理
随笔 - 59, 文章 - 4, 评论 - 141, 引用 - 7
数据加载中……

2005年9月6日

[BIRT]-[Tutorial]-使用ScriptDataSet从POJO中获得数据(五)

四、预览结果

使用BIRT提供的预览窗口来预览所制作的报表,这是BIRT必须知道该如何找到在Script中引用的类,而BIRT的预览窗口是使用一个内嵌的web服务器来预览的,所以,我们需要将用于数据库资源访问的类和在script中使用的类打包成jar放入到这个web-appclasspath下。

这个web-app是作为一个Eclipseplugin存在的,它位置在:

<ECLIPSE_HOME>\plugins\org.eclipse.birt.report.viewer_1.0.0

将打包好的jar文件放入到该plugin下的如下目录:

<ECLIPSE_HOME>\plugins\org.eclipse.birt.report.viewer_1.0.0\birt\WEB-INFO\lib

然后将你的数据库访问组件所依赖的jar文件都一并拷贝到这个lib目录下,并将数据库访问组件需要的配置文件放入到WEB-INFO下,以便其可以在这个web应用的classpath中找到自己的配置文件

 

另外,如果使用配置文件的话,需要象在Tomcat中使用配置文件一样,将配置文件拷贝到以下目录,以便dom4j能够找到

<ECLIPSE_HOME>\plugins\org.eclipse.birt.report.viewer_1.0.0\birt\WEB-INFO\classes

 

最后,也是最重要的一点!也是困扰了我几个小时的问题

教程中没有提到,拷贝完自己的这些数据库访问组件后,需要重启Eclipse才能使用!!?

这个viewerweb程序会在每次Eclipse启动时启动,并读入这些配置信息,运行期则不会在重新装载配置信息

 

―――――――――――

另外,还有另一种方法来发布数据库访问组件,就是将编译好的class文件放入到这个WEB-INFO目录的classes目录下,但要注意要建立目录以匹配自己的包结构,就如同普通的Tomcat程序那样

―――――――――――

预览结果:(图)

o_Snap8.jpg
五、发布环境中运行

发布时的操作要比预览时简单的多,你可以将这个报表文件当作你的web程序中的一个JSP文件来通过URL来访问,并可以在URL中传递参数给报表文件,以便指定查询条件,这些问题在BIRT的教程中讲的很清楚了,这里就不再说明

posted @ 2005-09-06 13:47 fisher 阅读(1750) | 评论 (1)编辑 收藏

[BIRT]-[Tutorial]-使用ScriptDataSet从POJO中获得数据(四)

开始说正题

二、建立使用ScriptDataSourceScripteDataSetBIRT报表

在你的Web项目中建立一个report目录,并在其中建立一个报表文件,如下:

o_Snap1.jpg

首先,根据BIRTHelp文档中的教程,建立一个ScriptDataSource

o_Snap2.jpg
然后建立
ScriptDataSet

o_Snap3.jpg

然后鼠标右击建立的DataSet,选择编辑,在左边选择‘输出列’,为其添加三个输出列,类型为‘任何’,建立后DataSet如下:

o_Snap4.jpg

三、编写ScriptDataSet方法

ScriptDataSet的主要方法有三个:openfetchclose

打开rptdesign文件,用鼠标点击srcDataSet,并在报表文件窗口下方选择‘代码’,就可以看到这些方法,这些是一些类javaScript的代码,并提供了一些BIRT自己的函数,下面说明这三个方法:

l         Open方法:

Open方法用于引入java包,并创建数据库访问资源

写入如下代码:

(其中in_sys_user是数据库中的表)

o_Snap5.jpg
l         fetch方法:

fetch方法用于取得数据并为报表复制

代码如下:
o_Snap6.jpg

l         close方法:

close方法用于关闭资源

代码如下:
o_Snap7.jpg

 

 

 

 

posted @ 2005-09-06 13:44 fisher 阅读(1369) | 评论 (0)编辑 收藏

[BIRT]-[Tutorial]-使用ScriptDataSet从POJO中获得数据(三)

RowSet.java代表行的集合,代码如下:

 1package com.bat.afp.DAOComm;
 2
 3import java.util.Iterator;
 4import java.util.Vector;
 5
 6/**
 7 * @author liuyf
 8 */

 9public class RowSet {
10
11    private Vector<Row>    vector    = new Vector<Row>();
12
13    public RowSet() {
14    }

15
16    public void add(Row row) {
17        vector.addElement(row);
18    }

19
20    public int length() {
21        return vector.size();
22    }

23
24    public Row get(int which) {
25        return (Row) vector.elementAt(which);
26    }

27    
28    public Iterator getIterator(){
29        return vector.iterator();
30    }

31
32    public void dump() {
33        Iterator<Row> itr = vector.iterator();
34        for (;itr.hasNext();) {
35            itr.next().dump();
36        }

37    }

38}

39

Row.java代表数据库中的一行数据,代码如下:

 1package com.bat.afp.DAOComm;
 2
 3import java.util.Hashtable;
 4import java.util.Iterator;
 5import java.util.Vector;
 6
 7/**
 8 * @author liuyf
 9 */

10public class Row {
11
12    private Vector<String>                ordering    = new Vector<String>();
13
14    private Hashtable<String, String>    hashtable    = new Hashtable<String, String>();
15
16    public Row() {
17    }

18
19    public void put(String name, String value) {
20        if (!hashtable.containsKey(name))
21            ordering.addElement(name);
22        hashtable.put(name, value);
23    }

24
25    public int length() {
26        return hashtable.size();
27    }

28
29    public String get(String name) {
30        if(hashtable.get(name)!=null){
31            return hashtable.get(name);
32        }
else if(hashtable.get(name.toLowerCase())!=null){
33            return hashtable.get(name.toLowerCase());
34        }
else if(hashtable.get(name.toUpperCase())!=null){
35            return hashtable.get(name.toUpperCase());
36        }

37        
38        return null;
39    }

40
41    public String get(int which) {
42        String key = ordering.elementAt(which-1);
43        return hashtable.get(key);
44    }

45
46    public String getKey(int which) {
47        String key = ordering.elementAt(which-1);
48        return key;
49    }

50
51    public void dump() {
52        Iterator<String> itr = hashtable.keySet().iterator();
53        for (; itr.hasNext();) {
54            String name = itr.next();
55            String value = hashtable.get(name);
56            System.out.print(name + "=" + value + "");
57        }

58    }

59}

60

posted @ 2005-09-06 13:33 fisher 阅读(1242) | 评论 (0)编辑 收藏

[BIRT]-[Tutorial]-使用ScriptDataSet从POJO中获得数据(二)

     摘要: 配置文件dbconfig.xml如下: 1<config>2    <dbinfo>3        <url>jdbc:oracle:thin:@133.1.72.44:1521:test</url>4  ...  阅读全文

posted @ 2005-09-06 13:30 fisher 阅读(1196) | 评论 (0)编辑 收藏

[BIRT]-[Tutorial]-使用ScriptDataSet从POJO中获得数据(一)

     摘要: 在前面说明过使用Script数据源来获得web service数据源的做法,在实际操作中,发现虽然有BIRT的帮助文件,但同事对BIRT的Script数据源的使用还是不太理解,于是写出下文以便帮助使用BIRT的高级特性   熟悉了BIRT的Script数据源之后,你会感叹BIRT功能之强大,BIRT团队承诺在2.0中加入对数据库连接池的支持,但目前为止,我们还只能通过Script数据...  阅读全文

posted @ 2005-09-06 13:26 fisher 阅读(3962) | 评论 (6)编辑 收藏