報表介紹 BIRT 是為 Web 應用程序開發(fā)的基于 Eclipse 的開源報表系統(tǒng),特別之處在于它是以 Java 和 J2EE 為基礎。BIRT 有兩個主要組件:基于 Eclipse 的報表設計器,以及部署到應用服務器上的運行時組件。BIRT 也提供了圖標引擎讓你能為應用增加圖標。 當前發(fā)行的版本是 1.0.1。我們鼓勵你下載、試用 BIRT,請通過 newsgroups and Bugzilla 向我們提意見。 有了 BIRT,你可以為應用程序構(gòu)建豐富的報表。 列表 - 列表是最簡單的報表。當列表變長時,你可以把相關(guān)數(shù)據(jù)增加到同一分組(基于客戶的訂單分組,基于供應商的產(chǎn)品分組)。如果數(shù)據(jù)是數(shù)字類型的,你可以輕松的添加到“總數(shù)”、“平均”、或其他匯總中。 圖表 - 當需要圖表表現(xiàn)時,數(shù)字型數(shù)據(jù)比較好理解。BIRT 也提供餅狀、線狀以及柱狀圖標等。 交叉表 - 交叉表(也叫做十字表格或矩陣)用兩種維度展示數(shù)據(jù):sales per quarter or hits per web page。(交叉表在 1.0.1 中沒有提供,但計劃在將來提供。) 信函和文檔 - 通知、信件、以及其他文本文檔都很容易通過 BIRT 方便建立。文檔包括正文、格式、列表、圖表等。 混合報表 - 很多報表需要聯(lián)合以上所有的報表構(gòu)成單一文檔。例如,一份客戶聲明會列出客戶所需要的信息,為當前促進(promotions)提供文本,以及提供并行的出帳和入帳列表。一份財政報表將包括聲明、圖表、表格,所有這些都將進行全方位的格式化,來匹配共有的配色方案。 剖析一份報表 BIRT 報表包含四個部分:數(shù)據(jù)、數(shù)據(jù)轉(zhuǎn)換、業(yè)務邏輯、陳述。 數(shù)據(jù) - 數(shù)據(jù)庫、Web 服務、Java 對象,這些都可以作為 BIRT 報表源。1.0.1 版本提供 JDBC 支持,也支持利用編碼來獲取其他地方的數(shù)據(jù)。BIRT 的 ODA(Open Data Access) 框架允許任何人構(gòu)建新的 UI 以及運行時支持任何類型的表格式數(shù)據(jù)。未來,單一報表可包含從任意多個數(shù)據(jù)源獲取數(shù)據(jù)。 數(shù)據(jù)轉(zhuǎn)換 - 報表通過對數(shù)據(jù)的分類、統(tǒng)計、過濾以及分組來適應用戶需求。當然,數(shù)據(jù)庫能實現(xiàn)這些功能,當遇到普通文件和 Java 對象時 BIRT 必須以 "simple" 數(shù)據(jù)源方式處理。BIRT 允許復雜的操作,比如總合分組、整體共計的百分比,等等。 業(yè)務邏輯 - 真實世界的數(shù)據(jù)很少提供你理想的結(jié)構(gòu)良好的報表。許多報表要求用具體邏輯把原始數(shù)據(jù)轉(zhuǎn)換成用戶的有用信息。如果該邏輯僅僅用于該報表,你可以用 BIRT 的 JavaScript 腳本支持。如果你的程序中已包含這些邏輯,你可以調(diào)用已有的 Java 代碼。 表現(xiàn) - 一旦數(shù)據(jù)準備好了,你可以在很大的范圍內(nèi)選擇表現(xiàn)形式。表格、圖表、文字等等都可以。單一數(shù)據(jù)集可以有多種方式表現(xiàn),而單一報表可以表現(xiàn)多個數(shù)據(jù)集。 J2EE 應用中的 BIRT BIRT 報表引擎以 JAR 文件方式打包,可以方便的添加到你的 J2EE 應用中。報表引擎是一系列的 POJO(Plain Old Java Objects),便于你可以在 JSP 頁面集成報表。 BIRT 與你的應用有四個主要集成點: UI 參數(shù) - 多數(shù)報表允許用戶指定一些輸入,這些數(shù)據(jù)叫做"報表參數(shù)"。例如,客戶報表要求顯示客戶數(shù)據(jù)。你的參數(shù)頁面可能是靜態(tài)的:為每個報表進行用戶定制設計。或者,可以使用參數(shù)元數(shù)據(jù)提供的動態(tài)頁面,以便該單一頁面為所有的報表提供服務。 運行報表 - 用戶提交表單參數(shù)時,你的 web 應用通過這些參數(shù)向 BIRT 報表引擎說明讀取哪個報表設計文件,并讀取數(shù)據(jù),再產(chǎn)生報表輸出。當引擎運行報表時 BIRT 的術(shù)語稱為"工廠"。 數(shù)據(jù)訪問 - 報表如何從你的應用獲得數(shù)據(jù)已在上面解釋了。Java 程序通常利用 Java 對象為 BIRT 工廠提供數(shù)據(jù)。 顯示 - 附加的 JSP 頁面,叫做閱讀器,允許用戶查看報表輸出。 一個報表應用程序包含一個參數(shù)頁,你可以為每個報表創(chuàng)建自定義的 UI,或者使用 BIRT 帶來的參數(shù)元數(shù)據(jù)提供單一報表來處理多種不同報表。 樣品閱讀器 BIRT 項目提供一個樣品 "viewer" 來幫你起步。樣品閱讀器常被用于在 Eclipse 中預覽報表:BIRT 內(nèi)置一個 Apache Tomcat 服務器,每次預覽報表時調(diào)用。閱讀器也可被用于任何與 JSP 兼容的 J2EE 服務器。 BIRT 的 1.0.1 版本提供單一頁面的 web 輸出。計劃在將來的版本中提供多頁面輸出,而且閱讀器 UI 也將提供多頁面之間的導航功能。 報表設計
BIRT 應用開發(fā)從報表設計開始。基于 Eclipse 插件提供多種快速構(gòu)建報表工具。 數(shù)據(jù)瀏覽器 - 把你的數(shù)據(jù)源(連接)以及數(shù)據(jù)集(查詢)組織起來。數(shù)據(jù)集編輯器允許你測試數(shù)據(jù)集,以確保報表接收數(shù)據(jù)的正確性。 布局視圖 - 所見即所得編輯器為你的報表提供以拽方式來創(chuàng)建表現(xiàn)內(nèi)容。包含一個標準報表條目調(diào)色板。 屬性編輯器 - 以便利的格局表現(xiàn)大多數(shù)通用的用戶屬性使編輯更快速和容易。BIRT 也集成了標準 Eclipse 屬性視圖,為每個條目提供詳細的屬性列表。 報表預覽 - 你可以在任何時間采用真實數(shù)據(jù)測試你的報表。預覽窗口直接內(nèi)嵌在 Eclipse 中。 代碼編輯器 - 在訪問數(shù)據(jù)以及報表生成或瀏覽時,腳本把業(yè)務邏輯添加給報表。在編輯腳本時代碼編輯器提供標準的 Eclipse 特性:語法加色、自動完成等等。BIRT 用很簡單的腳本來表達,expression builder 能更容易的創(chuàng)建這些表達。 略圖 - BIRT 報表被組織為一個樹型結(jié)構(gòu)作為整體報表的根,并且為樣式、報表內(nèi)容、數(shù)據(jù)源、數(shù)據(jù)集、報表參數(shù)等分類。略圖視圖提供你整個報表結(jié)構(gòu)緊湊的預覽。 Cheat Sheets - 學習新工具永遠是種挑戰(zhàn),但是 Eclipse 提供一種創(chuàng)新方案:cheat sheets。它們是一些幫助你完成新任務的文檔。 數(shù)據(jù)定制 正如前面所提到的,報表通常為要表現(xiàn)的數(shù)據(jù)添加業(yè)務邏輯。BIRT 提供多個工具來完成這一操作: 欄位計算-數(shù)據(jù)庫為存儲組織數(shù)據(jù),但這些數(shù)據(jù)通常為結(jié)合表現(xiàn)層而預先整理好。欄位計算讓你能定義基于業(yè)務邏輯的附加數(shù)據(jù)集欄位。這種邏輯是一個簡單的語法、腳本或調(diào)用一個已有的 Java 邏輯。 輸入以及輸出參數(shù)-許多數(shù)據(jù)源都支持參數(shù):在查詢時傳入或傳出數(shù)據(jù)的能力。比如,SQL Select 語句可包含輸入?yún)?shù)。存儲過程既有傳入又有傳出參數(shù)。 欄位元數(shù)據(jù)-當數(shù)據(jù)源提供的名字是 unintuitive 的,你可以提供欄位別名。 過濾 - 有些數(shù)據(jù)源,尤其是 SQL,提供良好的內(nèi)置過濾特性。然而,有些數(shù)據(jù)源(單純的文件,應用程序?qū)ο螅﹨s沒有提供過濾特性。另外,過濾器條件是定義在腳本或 Java 代碼中的。你可把過濾器定義為報表的一部分,BIRT 引擎會自動調(diào)用它們。 腳本化數(shù)據(jù)集 - 有些報表需要訪問專門或不常用的數(shù)據(jù)。你可以在 Java 或腳本創(chuàng)建訪問,利用腳本化數(shù)據(jù)集可在報表中集成這些邏輯。 條件格式化 有些報表有著固定的格式,其他的卻需要條件格式化。例如,某報表列出了交易記錄來表現(xiàn)不同的銷售與利潤之比。或者,一個客戶服務報表要按照不同規(guī)則進行色彩顯示。BIRT 提供多個條件格式化特性: 條件可見度 - 你可以根據(jù)數(shù)據(jù)隱藏報表元素。在上述的交易報表中,你可以創(chuàng)建銷售和交易收入兩部分,接著隱藏報表指定記錄中不需要的部分。 值映射 - 數(shù)據(jù)庫數(shù)據(jù)通常使用代碼值:M/F 代表男性或女性,1/2 代表銷售和收入,等等。值映射讓你定義一個從數(shù)據(jù)庫值到顯示值的映射。例如,我們可把值“1”對應到“Sale”,把“2”對應到“Return”。 加強 - 簡單的標識可讓你對特定報表套用樣式。例如,在客戶服務報表中,我們可以使用綠色表示上一的計劃,紅色表示下一計劃。 腳本
BIRT 提供基于 JavaScript(與知名的 ECMAScript 形式上相同)的腳本。JavaScript 經(jīng)常作為客戶端腳本語言,但是它也可以用于用于表達業(yè)務邏輯。特別的,JavaScript 能與你的現(xiàn)有 Java 邏輯進行良好集成,能非常輕松地從 BIRT 報表調(diào)用業(yè)務邏輯。 BIRT 提供從 JavaScript 對象訪問報表對象模型(Report Object Model)的整套方案:同時表現(xiàn)報表設計和運行時的狀況,允許報表的完全控制處理甚至最復雜的報表格式化工作。 項目管理
BIRT 集成了 Eclipse 項目管理特性來組織相關(guān)報表。BIRT 也可以與 Eclipse CVS 協(xié)作進行源碼管理。BIRT 的 XML 報表設計格式讓它能容易的比較兩份報表,或者兩個不同版本的相同報表,并跟蹤變更。 樣式
任何設計 web 頁面的人都知道有時會反復使用相同的樣式。CSS 允許 web 設計者從內(nèi)容中提取樣式信息,并復用樣式。 BIRT 提供類似的特性。當然,BIRT 樣式也是基于 CSS 的,這樣使得網(wǎng)頁應用開發(fā)人員能容易得設計 BIRT 表現(xiàn)形式。BIRT 樣式可堆疊,允許你在一個地方設置樣式后套用到所有報表或報表的一部分或單一報表中。 庫
典型的應用中會包括許多有關(guān)聯(lián)的報表。一個簡單的客戶應用將包括一個按照字母排序的客戶列表、按照地理位置分類的客戶群,為客戶指定的銷售代表,客戶身份篩選等等。總之,用戶不停的地變化報表以解決具體業(yè)務需要。 這樣一來,最終的報表應用將包含多組相關(guān)報表。相同的數(shù)據(jù)源、樣式、業(yè)務邏輯、報表條目。 將來的 BIRT 版本將包含組織這些共享資源的支持庫。這些庫可包含任何報表元素,比如樣式、數(shù)據(jù)源、報表條目、腳本等等。 國際化
全世界都可以訪問你的 web 應用程序。BIRT 為國際化和本地化提供良好的支持。 文本本地化 - 你可以建立一份把字符串自動變成用戶本地語言顯示的簡單報表。所有的表單和報表文本都能以標準的 Java 本地化規(guī)則進行翻譯。在運行時,BIRT 使用資源 key 找出文本的正確翻譯。 本地化 - BIRT 提供 locale-aware 格式化數(shù)據(jù),意味著對于美國用戶的日期數(shù)據(jù)可以以 mm/dd/yy 的格式出現(xiàn),而歐洲用戶則是 dd-mm-yy 格式。 動態(tài)格式化 - 中文文本非常緊湊,德文有時又有點冗長,而英文正好是中等大小。BIRT 自動調(diào)整報表條目的大小來適合其中的內(nèi)容,避免每次翻譯都要進行報表測試。 擴展性
報表應用程序的范圍是十分龐大的,BIRT 團隊不能為每個應用提供很具體的特性。可利用 BIRT 腳本來擴展 BIRT,另外還可構(gòu)建 BIRT 擴展插件到 BIRT 中。 數(shù)據(jù)訪問 BIRT 提供 ODA(Open Data Access) 框架來支持自定義數(shù)據(jù)訪問方法。數(shù)據(jù)訪問的范圍還包括一個獲取數(shù)據(jù)的運行時組件。也包括構(gòu)建自定義查詢的自定義設計時 UI。例如,打包后的應用程序可以讓 ODA 構(gòu)建數(shù)據(jù)訪問 UI 并運行在自己的數(shù)據(jù)模型中。 報表欄目 BIRT 為要表現(xiàn)的數(shù)據(jù)提供一致的報表欄目集。可以在應用程序中自定義附件報表欄目,并像 BIRT 自身的報表欄目一樣運行在設計器和引擎中。例如,性能管理應用程序要添加報表欄目來高亮顯示停止項、尺度表以及其他用來衡量性能的可視標志。 圖表類型 BIRT 圖表包提供了很多的圖表類型。但是,一些行業(yè)需要很特殊的圖表樣式。開發(fā)者可以在 BIRT 圖表引擎中創(chuàng)建圖表插件來提供這些圖表樣式。 輸出格式 BIRT 1.0.1 支持輸出到 HTML 和 PDF。當然,也可能需要其他類型輸出:Excel、RTF(Rich Text Format)、SVG(Scalable Vector Graphic)、圖像、等等。BIRT 在今后會提供其中一些,除開這些的其他格式可能需要的用戶就很少了。開發(fā)者可利用 BIRT 引擎接口添加轉(zhuǎn)換器以達到目的。請注意!引用、轉(zhuǎn)貼本文應注明原譯者:Rosen Jiang 以及出處:http://www.tkk7.com/rosen
Powered by: BlogJava Copyright © Rosen