1. 復(fù)合JavaBean數(shù)據(jù)源
1.1 說明
在使用Eclipse BIRT進(jìn)行報表開發(fā)時,會遇到使用復(fù)合型的JavaBean作為數(shù)據(jù)源的情況,例如Contact對象有一個Address類型的對應(yīng)address,而Address對象又具有兩個屬性,分別為addressId和addressName,在此種情況下應(yīng)該使用Eclipse BIRT提供的“Script Data Source”進(jìn)行數(shù)據(jù)源。如下將通過實例展現(xiàn)在Eclipse BIRT中如何使用復(fù)合JavaBean作為數(shù)據(jù)源。
所用環(huán)境說明:
l IDE環(huán)境:birt-report-designer-all-in-one-2_2_1_1;、
l Tomcat:5.5.27;
l Eclipse BIRT版本:2.2.1
l birt-runtime-2_2_1_1。
1.2 開發(fā)實例
1.2.1 在Java工程中創(chuàng)建復(fù)合JavaBean類Contact.java
在集成了BIRT的Eclipse中建立Java工程:birtJavaProject,并建立amigo.report包,并在該包下建立復(fù)合JavaBean的類:Contact.java,該類的代碼如下所示:
































1.2.2 在Java工程創(chuàng)建復(fù)合JavaBean的關(guān)聯(lián)JavaBean類Address.java
接下來在amigo.report包下建立Contact類關(guān)聯(lián)的JavaBean類,代碼如下所示:





















1.2.3 在Java工程中創(chuàng)建數(shù)據(jù)工廠類ContactListFactory.java
在Java工程中還需要創(chuàng)建制造數(shù)據(jù)的工程類:ContactListFactory.java,該類的代碼如下所示:



















































截至此步,Java源碼已經(jīng)編寫完畢,余下的工作是做報表編程。
1.2.4 創(chuàng)建報表工程
在開發(fā)環(huán)境中選擇“New”-> “Project”,如下所示:
在彈出對話框選擇“Bussiness Intelligence…” -> “Report Project”,如下圖所示:
而后點擊“Next >”,在彈出對話框中輸入報表工程的名稱“birtreport”后,點擊“Finish”按鈕完成報表工程的創(chuàng)建。
1.2.5 創(chuàng)建報表
選擇報表工程“birtreport”后點擊右鍵,選擇“New” –> “Report”,如下圖所示:
在彈出窗口中輸入報表的名稱:helloBirt.rptdesign,點擊“Finish”按鈕完成報表的創(chuàng)建。
1.2.6 創(chuàng)建Scripted數(shù)據(jù)源
使用JavaBean作為數(shù)據(jù)源,需要創(chuàng)建Script數(shù)據(jù)源。首先打開“Data Explorer”視圖,(若該視圖被關(guān)閉,請使用“Show View”打開)。在“Data Explorer”中選擇“Data Sources”->“New Data Source”,如下圖所示:
創(chuàng)建數(shù)據(jù)源的彈出窗口如下圖所示:
在上述窗口中選擇“Scripted Data Source”,在“Data Source Name”中輸入數(shù)據(jù)源的名字,例如“Data Source”,點擊“Finish”按鈕完成數(shù)據(jù)源的創(chuàng)建。
1.2.7 創(chuàng)建數(shù)據(jù)集
在“Data Explorer”視圖中點擊“Data Sets”->“New Data Set”,彈出窗口如下所示:
在“Data Set Name”中輸入數(shù)據(jù)集的名稱,例如“Data Set”,在“Data Source”中選擇剛才創(chuàng)建的Scripted數(shù)據(jù)源,而后點擊“Next >”按鈕,輸入列名和顯示名稱等信息,窗口如下所示:
1.2.8 編寫數(shù)據(jù)訪問腳本
打開“helloBirt.rptdesign”,切換到“Script”,在“Data Explorer”視圖中選擇剛才創(chuàng)建的數(shù)據(jù)集,open對應(yīng)的腳本如下所示:
count = 0;
cf = new Packages.amigo.report.ContactListFactory();
c = cf.createContactList();
對應(yīng)圖形如下所示:
在“Script”的下拉框中選擇“fetch”,對應(yīng)的腳本如下所示:
if (count <= c.length - 1){
row["firstName"] = c[count].getFirstName();
row["lastName"] = c[count].getLastName();
row["phoneNum"] = c[count].getPhoneNum();
row["addressId"] = c[count].getAddress().getAddressId();
row["addressName"] = c[count].getAddress().getAddressName();
count ++;
return true;
}
1.2.9 設(shè)計報表視圖
視圖中選擇layout,簡單的將我們建立的data set 拖到報表視圖中即可,完成這步以后可以在preview中查看預(yù)覽效果了。
1.2.10 部署與瀏覽
將birt-runtime-2_2_1_1目錄下的WebViewerExample工程拷貝到Tomcat的webapps下面,并將helloBirt.rptdesign報表文件拷貝到Tomcat根目錄/webapps/WebViewerExample工程下。
接著在:Tomcat根目錄/webapps/WebViewerExample/WEB-INF目錄下建立classes子目錄,存放Java工程中的三個類文件對應(yīng)的class文件,將birtJavaProject/bin下的amigo目錄整個拷貝到Tomcat根目錄/webapps/WebViewerExample/WEB-INF/classes目錄,完成報表文件的部署。
訪問地址為:
http://localhost:8080/WebViewerExample/frameset?__report=helloBirt.rptdesign
在瀏覽器的運(yùn)行效果圖如下所示:
2. 對JavaBean數(shù)據(jù)源的數(shù)據(jù)進(jìn)行分組
2.1 說明
在復(fù)合JavaBean作為數(shù)據(jù)源的實例中,展示了如何進(jìn)行復(fù)合JavaBean數(shù)據(jù)的展示,但是在某些情況下,需要對JavaBean進(jìn)行分組顯示,本實例將展示如何對JavaBean數(shù)據(jù)源進(jìn)行分組顯示。
2.2 開發(fā)實例
2.2.1 創(chuàng)建報表
在報表工程中創(chuàng)建報表groupByReport.rptdesign,創(chuàng)建方式與上例一樣。
2.2.2 創(chuàng)建數(shù)據(jù)源和數(shù)據(jù)集
因為該實例的數(shù)據(jù)源和數(shù)據(jù)集與上例相同,只需要在“Data Explorer”視圖中將數(shù)據(jù)源和數(shù)據(jù)集拷貝到本實例即可,編寫的數(shù)據(jù)訪問腳本和設(shè)計的報表也與上例一樣。
2.2.3 對數(shù)據(jù)進(jìn)行分組
接下來將向讀者展示如何按照addressId對數(shù)據(jù)進(jìn)行分組,首先在“Layout”中選擇table后,點擊右鍵,選擇“Insert Group”-> “Above”,如下所示:
彈出的新建分組的窗口如下所示,在窗口中輸入分組的名稱,例如:addressIdGroup,在“Group on”中選擇“addressId”,在“Interval”中選擇“Interval”,在“Range”中輸入1,如下圖所示:
在上圖中點擊“OK”按鈕完成分組的創(chuàng)建。
2.2.4 部署與瀏覽
部署的方法與上例相似,訪問地址為:
http://localhost:8080/WebViewerExample/frameset?__report=groupByReport.rptdesign
運(yùn)行效果如下圖所示:
3. 將BIRT集成到現(xiàn)有Web項目中
3.1 說明
在上面的實例中,將報表和相關(guān)的類文件放在BIRT對應(yīng)的Web項目WebViewerExample中來進(jìn)行報表的查看和瀏覽,但是在實際的開發(fā)過程中,已經(jīng)有Web項目,將報表的部分部署到WebViewerExample項目,而其它的部分部署到另一個Web項目,顯然不太合適,本實例講解如何將BIRT集成到現(xiàn)有的Web項目中,并進(jìn)行報表的查看。
參考文章:http://blog.csdn.net/bjd14/archive/2006/12/25/1458947.aspx
3.2 集成實例
3.2.1 新建項目的Web工程
在MyEclipse新建一個Web Project,名為reportintegration,將上例中的amigo.report包以及其下的所有三個類(Contact.java、Address.java和ContactListFactory.java)拷貝到src目錄下。并將helloBirt.rptdesign和groupByReport.rptdesign兩個報表文件拷貝到WebRoot目錄下。
3.2.2 拷貝BIRT的Web項目WebViewerExample的文件
打開Tomcat下的WebViewerExample項目,其目錄結(jié)構(gòu)如下圖所示:
將該目錄下的兩個子目錄report和webcontent拷貝到工程的WebRoot目錄下。
接下來進(jìn)入WebViewerExample"WEB-INF目錄,目錄結(jié)構(gòu)如下所示:
將lib、platform和tlds三個子目錄拷貝到Web工程的WebRoot"WEB-INF目錄,并拷貝server-config.wsdd、viewer.properties和web.xml三個文件。到此所有文件都拷貝完畢。Web工程的結(jié)構(gòu)如下圖所示:
lib目錄的結(jié)構(gòu)如下圖所示:
3.2.3 部署與瀏覽
部署reportintegration到Tomcat下,啟動成功后,訪問路徑類似如下所示:
http://localhost:8080/reportintegration/frameset?__report=groupByReport.rptdesign
運(yùn)行效果與上例一樣,不再贅述。
3.2.4 訪問參數(shù)說明
在訪問時,路徑實例如下所示:
http://localhost:8080/reportintegration/frameset?__report=groupByReport.rptdesign
其中”__report”表示訪問的報表文件的路徑,若將groupByReport.rptdesign報表文件拷貝到WebRoot/report目錄下,則訪問路徑變成:
http://localhost:8080/reportintegration/frameset?__report=report/groupByReport.rptdesign
其它訪問參數(shù)的說明如下所示:
選項 |
說明 |
__format |
報表輸出格式:html或pdf,缺省是html。對于frameset不起作用。 |
__isnull |
指明一個參數(shù)是null,常用于字符串類型。如果提供參數(shù)且值為空: - 對于日期和數(shù)字類型,BIRT會將它們當(dāng)作null處理。 - 對于字符串,BIRT會將它作為空字符串。因此,為了說明某個字符串是null,通常寫為:__isnull=參數(shù)。 |
__locale |
本地化選項,缺省是jvm的locale。 |
__report |
報表設(shè)計文件路徑。 |
報表參數(shù) |
報表參數(shù)參數(shù)值對,形式:參數(shù)名=參數(shù)值。對于frameset,直接在地址欄中輸入?yún)?shù)名=參數(shù)值后回車,不會影響報表結(jié)果。雖然,此時選擇"運(yùn)行報表"時,彈出的參數(shù)值已經(jīng)改變。 |