(Tài liệu này được viết dựa trên OnJava.com: Deploying BIRT)
BIRT API bao gồm:
- Design Engine API (DE API): được dùng để tạo ra report design (file .rptdesign), template (rpttemplate) và library (rptlibrary).
- Report Enging API (RE API): chịu trách nhiệm nhận file rptdesign và kết xuất kết quả. Report Designer Preview và Web Viewer servlet dùng API này để sinh ra report.
- Chart Engine API (CE API): được dùng để tạo và render các report biểu đồ
Một số hướng triển khai BIRT:
- Triển khai BIRT Viewer vào J2EE application server
- Tạo một servlet bọc RE API và triển khai nó vào J2EE application server
- Thêm một BIRT plugins vào một ứng dụng Eclipse Rich Client Platform (RCP) và sử dụng BIRT Web Viewer plugin cho việc sinh và xem reports.
- Bọc RE API vào một ứng dụng RE API
- Bọc RE API vào một ứng dụng Java
Điểm mình thích nhất hiện tại ở BIRT là report được sinh ra theo hai pha (2-phase). Pha đầu, gọi là pha sinh (api IRunTask), nhận report design .rptdesign và sinh ra report document rptdocument, mà giữ dữ liệu và thiết kế của report. Pha thứ hai, gọi là pha trình diễn (api IRenderTask), nhận report duocument và sinh ra HTML, HTML được phân tran hoặc PDF. Với cách này repot được run một lần và được hiển thị dưới nhiều dạng khác nhau mà không cần run lại repot.
Phần sau là code mình học từ WebReport servlet vào một ứng dụng Java được triển khai theo mô hình client-server. Client là một ứng dụng RCP được gắn plugins BIRT Viewer sẽ gửi yêu cầu lên server để lấy rptdocument (yêu cầu có thể là dạng RMI, web service hoặc http). Server là một ứng dụng bọc RE API để run report và trả về rpt document cho client.
Triển khai bao gồm một
- BirtEngine.java: chịu trách nhiệm nhận về một
- HelloRE.java: dung BirtEngine để run một employee.rptdesign ra thành employee.rptdocument
- employee.rptdesign: dùng JDBC để connect db (sẽ tìm hiểu phần customize cái này trong phần sau)
Kết quả chạy lần đầu là lỗi: Birt không thể start OSGI framework. Mình thử lấy ứng dụng web chạy thì được. So sánh hai cái BirtEngine thì chúng khác nhau ở chỗ cái của mình dùng PlatformFileContext còn của ví dụ trên OnJava thì dùng PlatformHttpServletContext. Không có source nên mình không biết bên trong PlatformHttpServletContext làm cái gì mà start được OSGI framework. Đến đây thì bó cái tay.
Lục lại cái birt-runtime-2_1_0 thì thấy là nó có file readme.txt nói rằng muốn chạy RE ở console thì phải set biến môi trường BIRT_HOME=<BIRT_HOME>/ReportEngine. Coi trong file genRerport.sh thì thấy nó dùng java -DBIRT_HOME. He he thế là biết cách chạy rồi. Và kết quả cũng như mong đợi. Vấn đề còn lại là làm sao set cho nó chạy lúc runtime giống như start Eclipse hay Birt-RCP-Designer đầu cần set biến môi trường đâu.
Hôm nay viết đến đây thôi. Đại ca kêu về ăn gà
thì mình về mai post tiếp phần RCP
technorati tags:java