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