2008年7月18日 星期五

使用 Eclipse BIRT 寫報表 (3)

推文
使用 Eclipse BIRT 寫報表 (3)
這篇是接續上兩篇,使用 Eclipse BIRT 寫報表(1)(2),本篇主要是介紹如何
動態用 Servlet 塞值及如何部署到應用程式。

1. 首先請先到下列網址下載 birt-runtime-2_3_0.zip 檔案 (約 109M)
http://www.eclipse.org/downloads/download.php?file=/birt/downloads/drops/R-
R1-2_3_0-200806191030/birt-runtime-2_3_0.zip&url=http://eclipse.stu.edu.tw/b
irt/downloads/drops/R-R1-2_3_0-200806191030/birt-runtime-2_3_0.zip&mirror
_id=448

或是你自行到
http://download.eclipse.org/birt/downloads/
選 Deployment Runtime 項目下載
注意 Pre-requisites: Java 1.5 JDK/JRE 以上

2.


3. 我會舉兩個例子,
A:一個是我修改成可動態塞值的,檔案包括有:
birt_test.html (即對照到簡圖的 HTML 部分,主要是一個 TextFiled跟按鈕)
birt_test.rpttemplate (即報表範本,會由 Servlet 來呼叫)
BIRT_TEST.java (這支程式即對照到簡圖的 Servlet)
B:一個是 Eclipse BIRT example 上所提供的
Dynamic.html
DynamicReport.java
DynamicTableExample.rpttemplate
BirtEngine.class
注意上面紅色顯示的檔很重要底下步驟會再提到

4. 先看第一個範例
birt_test.html 檔,內容重點如下:

action=http://localhost:8080/HelloServlet/BIRT_TEST
按按鈕即執行 Servlet BIRT_TEST

<input name="key" type="text">

<input name="ReportName" value="birt_test.rpttemplate" type="hidden">

前端參數字串及報表範本名稱 birt_test.rpttemplate 會由 BIRT_TEST 程式
取得

5. 請將下載的 birt-runtime-2_3_0.zip 檔案,解壓縮,在目錄
birt-runtime-2_3_0\ReportEngine\lib 下的所有 jar 檔,請加到你的
Eclipse IDE 環境,選 Menu 的 ProjectProperties 如下圖,

選左邊的 Java Build Path,按 Add External JARs,將所有 jar 加入,
JDBC Driver 的 jar也要加進來,按 OK

6. Servlet 程式 BIRT_TEST 相關說明請自行看原始碼
請切換到 J2EE 開發介面,如下圖


7. 我之前在 Eclipse3.4+Tomcat6.0.16 寫 java Servlet 有建一個叫 HelloServlet
的 project,我們現在就用這 project,然後建一個 Servlet,檔名為
BIRT_TEST.java,如何建請參考 Eclipse3.4+Tomcat6.0.16 寫 java Servlet

8. 然後將我附的原始檔 BIRT_TEST.java,copy 進來。

9. 在轉回 Report Design 開發介面,我們要寫一個 template,名稱為
birt_test.rpttemplate
選 Menu 的 FileNewTemplate
拉元件 Grid ,1 欄 3 列,如下圖


10. 第一列插入 Label 元件,輸入顯示文字,拉 Table 元件到第二列,輸入
4 欄 1 明細,Data Set 選 None如下圖

11. 如下圖,Table 元件的 ElementID 為 15,因為我們透過 Servlet 塞值時會
用到,同樣也可查到 Grid 的第三列 Cell 的 ElementID 為 13

12. 好了檔案備便,接下來我們先來部署由檔案 birt-runtime-2_3_0.zip 解壓縮
目錄 birt-runtime-2_3_0 下的 WebViewerExample目錄,複製到
Tomcat Server 的目錄,我的是 C:\Tomcat602\webapps\WebViewerExample,
然後將 WebViewerExample目錄更名成為,C:\Tomcat602\webapps\birt-viewer
啟動 Tomcat,打開瀏覽器輸入網址 http://localhost:8080/birt-viewer/

如上圖,按 View Example,看到如下畫面表示已成功安裝。

13. 切換到 J2EE 的開發介面,將 HelloServlet Project 匯出到 Tomcat 如下圖


14. 將 Tomcat Server 的 birt-viewer 底下的目錄,documents、logs、report、
scriptlib、webcontent、WEB-INF、及檔案複製到我們剛剛建立的 Web
Application HelloServlet 目錄底下。
注意請將你的 JDBC Driver jar 檔複製到
C:\Tomcat602\webapps\HelloServlet\WEB-INF\platform\plugins\org.eclipse.birt
.report.data.oda.jdbc_2.3.0.v20080610\drivers
目錄底下。

15. 再將範例的檔案
將 birt_test.html 複製到 C:\Tomcat602\webapps\HelloServlet 目錄底下
將 birt_test.rpttemplate 複製到 C:\Tomcat602\webapps\HelloServlet\report
將 BIRT_TEST.class 複製到
C:\Tomcat602\webapps\HelloServlet\WEB-INF\classes\test 目錄下
(當然這些 class 檔應該不用複製,因為我們匯成 Web Application 已經有了)

16. 這步驟很重要少掉這步驟你的 Servlet 無法 Run,Eclipse BIRT 所提供的檔
案 BirtEngine.class,BirtConfig.properties,請將 BirtConfig.properties 內容
改為:
logDirectory=C:/Tomcat602/logs
logLevel=FINEST
然後將這兩個檔案包成 jar 檔 ,BirtEngine.jar 放入
C:\Tomcat602\webapps\HelloServlet\WEB-INF\lib 目錄下

17. 在更改 C:\Tomcat602\webapps\HelloServlet\WEB-INF\web.xml檔
加入


<servlet>
<description></description>
<display-name>BIRT_TEST</display-name>
<servlet-name>BIRT_TEST</servlet-name>
<servlet-class>test.BIRT_TEST</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BIRT_TEST</servlet-name>
<url-pattern>/BIRT_TEST</url-pattern>
</servlet-mapping>



18. 啟動 Tomcat,瀏覽器輸入網址
http://localhost:8080/HelloServlet/birt_test.html 如下圖,輸入行政部,案查詢鈕,我的資料表內容請參考上一篇步驟 3

執行後得到下列結果,產出 PDF 檔

再從上一頁輸入查詢”王”,得到如下結果


19. 我們 Run,Eclipse BIRT 所提供的第二個範例,設定步驟與上一樣(省略),
輸入網址
http://localhost:8080/HelloServlet/dynamic.html 如下圖,選四個欄位,會動
態 create 四個欄位的 Table 元件

執行後如下圖產出報表

Eclipse BIRT 介紹完畢~~~

20. 重點補充:我們在上篇開發好的 salary.rtpdesign如何部署到 Web Application
很簡單只要複製到 C:\Tomcat602\webapps\HelloServlet,例如我複製到
C:\Tomcat602\webapps\HelloServlet\birttest目錄下,網址就輸入
http://localhost:8080/HelloServlet/frameset?__report=/birttest/salary.rptdesign
or
http://localhost:8080/HelloServlet/run?__report=/birttest/salary.rptdesign
那麼如果你報表有參數的話,只要在網址最後加上 &參數名稱=參數值即可
跟一般的 form action get 一樣

21. 基本上我認為 Eclipse BIRT 對開發人員在產表的速率還算蠻快的,相信經
由這三篇的介紹,你要寫出更複雜的報表應該都不難,但在現有已開發的系
統似乎還很少見到 Eclipse BIRT 的蹤影,也有可能開發人員對他不熟悉,
乍看之下好像蠻複雜的,但經有這幾篇的介紹,你會發覺它其實還蠻容易的,
如果你是開發人員,或許可以考慮使用它來做你報表的產出系統。

相關檔案下載

0 意見: