Business Intelligence and Reporting Tools (BIRT) 是 Eclipse 生態系中最成熟的報表引擎。本教學以「銀行交易分析系統」為例,完整演示從資料庫建模、報表設計、Web 應用開發、報表引擎嵌入到線上即時分析的端到端流程。
# 將 DB2 驅動放入 Geronimo 倉庫
cp db2jcc.jar db2jcc_license_c.jar /repository/org.apache.derby/jars/
# 啟動 Geronimo
java -jar /bin/server.jar
ij 工具建立 BANK 資料庫與交易表java org.apache.derby.tools.ij
ij> connect 'jdbc:derby:net://localhost:1527/BANK;create=true;user=bankuser;password=bankpass;';
ij> create table transactions (
transactionid integer not null generated always as identity (start with 1, increment by 1),
employeeid integer not null,
employeetitle varchar(50),
transactiondate varchar(10),
transactiontype varchar(50), -- 'D'=Deposit, 'W'=Withdrawal, 'T'=Transfer
amount integer,
transactionSrc varchar(50),
transactionDst varchar(50)
);
ij> -- 插入 20 筆測試資料 (略,見原文清單 2)
bank1.rptdesign → Blank Report資料源:JDBC Data Source → 管理驅動加入 db2jcc.jar + db2jcc_license_c.jar → URL: jdbc:derby:net://localhost:1527/BANK; → 測試連線成功

資料集 1:moneyPerEmployee (每位員工總交易金額)
SELECT employeeid, SUM(amount) AS totalAmt
FROM transactions
GROUP BY employeeid
資料集 2:transactionTypePerDate (每日各交易類型金額)
SELECT transactiondate, transactiontype, SUM(amount) AS totalAmt
FROM transactions
GROUP BY transactiondate, transactiontype

報表標題:拖拉 Label → 文字「BANK OF MARS THE PLANET」→ 粗體、特大、置中、淺藍背景

圖表 1:長條圖 — 員工交易金額排名 (使用 moneyPerEmployee)
類型:Bar Chart → 子類型最右 (立體) → X 軸:Employee ID → Y 軸:Amount → 數值定義:row["EMPLOYEEID"], row["TOTALAMT"]

圖表 2:折線圖 — 每日交易類型趨勢 (使用 transactionTypePerDate,含 Series Group Key)
類型:Line Chart → 子類型最右 → X 軸:Date → Y 軸:Amount → Series Group Key: row["TRANSACTIONTYPE"] (關鍵:將 D/W/T 三類型分組顯示) → 數值定義:row["TRANSACTIONDATE"], row["TOTALAMT"]

BankingServlet.java:doGet() 產生 HTML 表單 (員工編號、職稱、日期、類型、金額、來源/目的帳號)
doPost():參數驗證 → DB2 Driver 連接 Derby → PreparedStatement 批次插入 → 回饋結果geronimo-web.xml:宣告 DB2 驅動依賴、Context Root /birtDemo
web.xml:Servlet 映射 /transaction.html
<target name="war" depends="compile">
<war destfile="birtDemo.war" webxml="WEB-INF/web.xml">
<zipfileset file="WEB-INF/geronimo-web.xml" prefix="WEB-INF"/>
<classes dir="${dest.dir}"/>
</war>
</target>
java -jar /bin/deployer.jar --user system --password manager deploy birtDemo.war
瀏覽 https://localhost:8080/birtDemo/transaction.html 錄入測試資料


birt.war (修正 Web Viewer Example Bug)birtDemo.warweb.xml:將應用 Servlet 定義追加到 web-template.xml 的 @generate@ 標記處bank1.rptdesign 到合併目錄jar -cf birtDemo.war *java -jar /bin/deployer.jar --user system --password manager redeploy birtDemo.war com/ibm/eclipse/birtDemo
https://localhost:8080/birtDemo/frameset?__report=bank1.rptdesign&__format=pdf
| 層級 | 技術選型 | 替代方案 |
|---|---|---|
| 報表設計 | BIRT RCP Designer | BIRT Web Designer (Web 版設計器) |
| 報表引擎 | BIRT Report Engine (嵌入 Servlet) | 獨立 BIRT Viewer WAR |
| 資料庫 | Derby Network Server (Geronimo 內建) | MySQL, PostgreSQL, DB2, Oracle |
| 應用伺服器 | Geronimo M5 | Tomcat, JBoss, WebSphere, WebLogic |
| 建構工具 | Ant | Maven, Gradle |
進階主題:報表參數化查詢、多資料集聯動、圖表互動鑽取、排程匯出 PDF/Excel、整合 Spring Security 權限控制、集群環境下報表引擎共享。
完整源碼包含 BIRT 設計檔、Servlet 原始碼、Ant 建構檔、Geronimo 部署描述檔,可直接導入 Eclipse 運行。