1. 復合JavaBean數據源
1.1 說明
在使用Eclipse BIRT進行報表開發時,會遇到使用復合型的JavaBean作為數據源的情況,例如Contact對象有一個Address類型的對應address,而Address對象又具有兩個屬性,分別為addressId和addressName,在此種情況下應該使用Eclipse BIRT提供的“Script Data Source”進行數據源。如下將通過實例展現在Eclipse BIRT中如何使用復合JavaBean作為數據源。
所用環境說明:
l IDE環境: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 開發實例
1.2.1 在Java工程中創建復合JavaBean類Contact.java
在集成了BIRT的Eclipse中建立Java工程:birtJavaProject,并建立amigo.report包,并在該包下建立復合JavaBean的類:Contact.java,該類的代碼如下所示:
































1.2.2 在Java工程創建復合JavaBean的關聯JavaBean類Address.java
接下來在amigo.report包下建立Contact類關聯的JavaBean類,代碼如下所示:





















1.2.3 在Java工程中創建數據工廠類ContactListFactory.java
在Java工程中還需要創建制造數據的工程類:ContactListFactory.java,該類的代碼如下所示:



















































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