使用 Oracle XML Publisher 構建線上報表應用程式

idba發表於2008-05-10

作為 Oracle 融合中介軟體系列產品中的一員,基於 Java 的 Oracle XML Publisher 5.6.2 使您能夠利用 SQL 和 XML 資料來源定義、釋出、保護以及排程報表。 Oracle XML Publisher 最初只是作為電子商務套件中的技術來開發的,現在,它可以作為單獨的產品從 eDelivery 下載,並可使用 J2EE 應用伺服器(例如 Oracle Application Server Containers for J2EE (OC4J) 或 Apache Tomcat)進行部署。 最棒的是,XML Publisher 使用 Microsoft Word 和 Adobe Acrobat 等常見桌面工具來定義報表佈局,這意味著使用者可以通過熟悉的環境來設計報表,而無需安裝和學習一個全新的工具集。

XML Publisher 包含一個基於伺服器的報表引擎,該引擎將報表模板、希望報告的資料以及所有語言翻譯集合在一起,然後以標準格式(如 Adobe PDF、HTML、XML、RTF 或 Microsoft Excel)分發輸出。

圖 1

清晰劃分資料、佈局以及介面有助於更輕鬆地以不同格式報告相同資料、更輕鬆地維護報表定義庫以及更直接地引入多語言翻譯等功能。 類似於 Oracle 融合中介軟體體系結構的其餘部分,XML Publisher 是一款“可熱交換”的獨立產品,與所有基於標準的資料庫或 Java 應用伺服器整合。

XML Publisher 5.6.2 版本新推出了 XML Publisher Enterprise,這是一個可用於部署、排程以及保護報表的完善環境。 XML Publisher Enterprise 將向使用者提供一個 Web 門戶,使用者可在其中載入併發布報表模板,然後向企業內的其他使用者和組提供這些模板。

XML Publisher 使用基於 OpenSymphony Quartz 排程程式的排程引擎來執行並交付報表,之後可通過電子郵件或支援 WebDAV 的伺服器對這些報表進行線上訪問。

那麼,如何利用 XML Publisher 5.6.2 Enterprise 來構建線上報表應用程式呢?

背景

在本示例中,您將為企業建立一個線上報表環境。 您需要建立一個您的同事將使用的初始報表集,之後您的使用者會對其進行維護並建立他們自己的報表。 其中的關鍵要求是,報表環境基於 Web 並安全,使用者可輕鬆導航並使用該環境;報表可按需執行或按計劃定期執行,使用者可將資料從其報表匯入常見的桌面應用程式格式(如 Microsoft Excel 和 Adobe Acrobat)。

報表最初的使用者包括採購部門使用者和銷售經理,前者希望檢視有關供應商發票的報表,後者希望在其 Web 瀏覽器中和通過 Microsoft Excel 分析銷售資料。

在這些示例中,要報告的銷售資料儲存在 Oracle9i 資料庫和 Oracle 資料庫 10g 附帶的 SH 示例模式中,而供應商發票資料將通過事務處理應用程式的 XML 饋送資訊提供。 要建立自己的報表佈局,請單擊此處下載 SQL 查詢和 XML 檔案示例。

定義基於 SQL 的銷售分析報表

要建立的第一個報表是銷售報表,該報表使用來自 SH 示例模式的資料。 開始之前,請開啟您的 Web 瀏覽器並登入 XML Publisher Enterprise,以便整理您的報表定義。 成功輸入使用者名稱和密碼後,您將看到 XML Publisher Enterprise 主頁。

圖 2

該 Web 頁面的左側下部是任務窗格,其中包含的連結可用於建立新資料夾或報表或者上載現有報表。 該頁面的右側是一組 XML Publisher Enterprise 附帶的示例報表。

單擊 Create a new folder 連結為即將定義的報表建立一個資料夾,將其命名為“Sample Reports”。 按此方法對報表進行分組易於將這些報表劃分為不同的主題領域,稍後可指定能夠訪問個別資料夾和報表的使用者和組。

圖 3

然後,導航至剛建立的資料夾,單擊連結建立一個新報表,將其命名為“sales report”。 建立報表之後,您會看到若干選項,可用於檢視、排程、編輯報表或檢視報表執行歷史。

圖 4

現在,報表已經建立,您需要編輯定義以指定資料模型、報表可能使用的所有引數以及報表佈局。 為此,單擊報表標題下的 Edit 連結。 之後,XML Publisher Enterprise 將調出一個動態 HTML 介面以樹檢視顯示報表定義元素。

圖 5

XML Publisher 報表定義包含以下元素:

  • 資料模型,即資料庫查詢或 XML 文件
  • 報表模板,稍後您會使用 XML Publisher Desktop 對其進行定義
  • 報表使用的所有引數以及
  • 引數下拉選單的所有值列表

這四個元素共同組成了報表定義,之後 XML Publisher 會將該定義以 XML 格式儲存在應用伺服器中間層上。

接下來,單擊報表樹檢視上的 Data Model 節點,單擊 New 按鈕建立一個新的資料模型,然後選擇連線至您的資料庫的 JDBC 資料來源。 如果還沒有這樣的連線,則需單擊該頁面頂部的 Admin 連結來定義 JDBC 連線。

圖 6

選定了資料來源後,按 New Query Builder 按鈕選擇將從資料庫連線返回的資料項。 Query Builder 使您能夠使用圖形使用者介面選擇資料庫表和列。

圖 7

選定資料後,向查詢新增聯接條件和所有其他需要新增的元素,然後將其儲存到 XML Publisher Enterprise。

圖 8

現在,您已經定義了資料模型,可以開始考慮報表模板的佈局了。

報表模板定義了頁面上資料元素的排列方式,與即席查詢工具(如 OracleBI Discoverer)不同,您的模板形式可以完全不受任何限制,模板中可包含來自多個查詢的資料。 利用 XML Publisher,您可以使用標準的桌面工具(如 Microsoft Word 和 Adobe Acrobat)來定義報表模板。XML Publisher 5.6.2 的標準下載包括一個名為 XML Publisher Desktop 的 Microsoft Word 外掛,可用於自動化大部分的模板設定過程。 在這些示例中,您將使用 Microsoft Word 和 XML Publisher Desktop(Microsoft Word 的外掛)來定義模板。 (此處提供了一個展示 Word 模板定義過程的 Flash 演示。)

安裝完 XML Publisher Desktop 後,您將看到一個新增的工具欄選單,利用它可訪問 XML Publisher 的功能。 因為第一個報表基於通過 SQL 查詢訪問的資料,所以需要訪問 Data 選單,然後選擇 Report Wizard

圖 9

之後按照嚮導逐步進行操作,指定用於檢索資料的 SQL 查詢、詳細的資料庫 JDBC 連線資訊以及使用 XML Publisher Enterprise 時要用的資料來源名稱。

圖 10

按嚮導完成操作後,您會看到一個預設的資料項佈局。

圖 11

現在,可以使用 Microsoft Word 中的格式設定功能來更改表格式、新增報表頁首和頁尾、更改使用的字型以及新增企業的品牌標識。 儘管可以刪除預設報表佈局內的列並進行重排,但對於這個報表,應保持這些列的完整,以便隨後將資料集匯出到 Microsoft Excel 進行進一步的分析。

為了使該報表更有效,可為其配備一個圖表。 使用 XML Publisher Desktop 可以輕鬆實現此目的。首先,單擊 Insert 選單上的 Chart 選單項開啟 Chart 對話方塊。

圖 12

通過 Chart 對話方塊指定一個 Vertical Bar Chart,其中 Amount SoldProduct Category 進行分組。

圖 13

現在,檢視您的報表模板,其中的表將附帶一個代表您的條形圖的示例圖表圖片。

圖 14

通過 Preview 選單項預覽了該模板後,將其作為 RTF 檔案儲存到您的 PC,以備上載至 XML Publisher Enterprise。

為此,首先單擊報表樹檢視的 Layouts 節點,然後單擊 New 並命名您的報表佈局。

圖 15

之後,再次單擊 Layouts 節點,選擇包含您的模板的 RTF 檔案並將其上載到 XML Publisher Enterprise。

圖 16

最後,就是測試您的報表:儲存報表定義,返回報表選項並單擊 View 執行該報表。

圖 17

基於 XML 資料定義供應商發票模板

第二個要建立的報表將從事務處理系統的 XML 饋送資訊獲取資料。 類似於基於 SQL 的報表,建立該報表的第一步是登入 XML Publisher Enterprise 建立一個新的報表定義,將其命名為“Vendor Invoices”。

圖 18

與前一個報表相同,輸入報表名稱後,您會看到若干選項,可用於檢視、排程、編輯報表定義或檢視報表執行歷史。

圖 19

接下來,與以前一樣,單擊 Edit 連結,開始定義報表。

通過 Web 介面首先定義可向您提供 XML 資料的饋送資訊的位置,本例中,可從事務處理應用程式 Web 伺服器通過 HTTP 訪問該 XML 資料。

圖 20

在這個階段可以新增報表將要使用的任何引數和任何值列表。 然而,報表無法使用所有引數,因此單擊 Layouts 選單項並上載您之前定義的報表模板。

然後,就像對待銷售報表一樣,啟動 XML Publisher Desktop 來定義您的報表模板。 與基於 SQL 查詢的銷售報表不同,供應商發票報表基於 XML 饋送資訊,因此需以 XML 文件的形式提取該資料饋送資訊。 由於並不是真正的 XML 文件,其中可能沒有包含所有您希望在模板中包含的資料元素,您可改為將模板基於 XML 模式,完全在報表中定義元素,當然,其中將不會包含實際資料,並且生成的所有預覽都只包含資料結構。

因此,對於該模板而言,首先使用 XML Publisher Desktop Data 選單中的 XML Document 項來載入資料。

圖 21

一旦 XML Publisher Desktop 確定文件載入成功,您就可以使用 Insert 選單來設定模板佈局了。 與之前使用的報表嚮導不同,通過 XML 資料您最初看到的是一個空白頁面,要由您自己來向模板中新增資料項。

對於該模板,您希望列出的發票按與貴企業有業務往來的供應商分組。 為此,選擇 Table/Form,然後從 Insert 選單中選擇 Advanced…,之後使用 Insert Table/Form 對話方塊逐個選擇分組項和錶行。

圖 22

在選擇了資料項並按供應商詳細資訊進行分組後,可對結果表進行格式設定,新增公司品牌標識,然後以 PDF 格式預覽結果。

圖 23

然後,如果您滿意該佈局,則可將該模板檔案上載到 XML Publisher Enterprise,並執行該報表。 此時,該報表將從事務處理應用程式的 XML 饋送資訊獲取資料。 請注意使用者將輸出格式從 HTML 更改為 PDF、XML、Microsoft Excel 和 XML 的方式。

圖 24

銷售資料分析

某些使用者可能希望對其銷售資料進行進一步的分析,以發現商機並揭示隱藏的趨勢。 XML Publisher 5.6.2 Enterprise 附帶了一個線上分析工具,使得使用者只需通過 Web 瀏覽器即可對其資料進行分析。

為了演示該功能,需返回至銷售報表,執行該報表,然後單擊報表右上部的 Analyze 按鈕。 之後,XML Publisher 5.6.2 Enterprise 將以類似於 OracleBI Discover 工作表的樣式顯示一個資料透視表樣式的介面,以便將資料元素拖放至交叉表上。

圖 25

將渠道說明欄位拖至交叉表的 Y 軸上,然後將渠道類項拖至該欄位之前以便在第二項中巢狀第一項。 對 Product SubcategoryProduct Category 執行同樣的操作,將 Calendar Year 拖入 Page Items 區域中,以允許使用者“翻閱”數年的資料。 最後,將 Quantity Sold 新增到 Data Item 區域並檢視結果頁面。

圖 26

由於 XML Publisher 從應用程式中間層上的報表索引並“旋轉”資料,因此,執行該線上分析不會給資料庫和事務處理系統帶來額外負擔。

對於希望使用常見的電子表格工具 Microsoft Excel 來分析資料的使用者,Excel Analyzer 按鈕可啟動 Microsoft Excel 的本地副本,安裝尚未下載的外掛,然後將報表載入到 Excel 工作表中。 通過該外掛,您可使用新的引數值重新查詢報表,用新資料重新整理報表,將其他工作表與該資料脫離,以及將該資料包含在其他計算和圖形中。

報表排程和分發

有時您可能希望排程某個報表以備稍後執行,或希望定期執行該報表並將結果分發給一組使用者。 若要每週傳送一次供應商發票報表,可按下報表頂部的 Schedule 按鈕進行設定。 但是,在開始之前,需要使用 XML Publisher 5.6.2 Enterprise 的 Admin 選項卡定義一個或多個交付選項。

要設定排程計劃,需選擇一個或多個交付目的地,本例報表中是向企業採購經理髮送一個電子郵件訊息。

圖 27

在 Web 介面中,命名排程作業,指定如果作業失敗或出錯向其傳送通知的電子郵件地址。 XML Publisher 5.6.2 Enterprise 內的排程程式提供了執行作業的選項:立即執行、稍後執行一次或每日、每週或每月執行一次;設定作業在每個星期一的 07:00 執行,將報表傳送至電子郵件分發列表,並向您自己傳送一份副本。

使用者和組的訪問許可權

企業要求,僅採購部門的員工可以檢視供應商發票報表和其他基於採購資訊的報表,而銷售報表只能由銷售部門的員工檢視。 您的線上報表應用程式必須滿足這些安全要求。

在 XML Publisher 5.6.2 Enterprise 中,個別使用者可以充當一個或多個角色,而角色可以獲得訪問一個或多個資料夾的許可權。 通過在其他資料夾中建立子資料夾,然後在 XML Publisher 5.6.2 Enterprise 中使用複製報表和貼上報表功能將報表移至相關子資料夾,可使安全措施更嚴密。

圖 28

將報表置於正確的資料夾後,可將這些資料夾的訪問許可權授予相關的 XML Publisher 組。

圖 29

這些角色、使用者和許可權均儲存在 XML Publisher 5.6.2 Enterprise 內部,但可與其他 LDAP 伺服器整合。

增強模板

到目前為止,您已構建了兩個報表,這些報表設計簡單,易於理解。 您使用了 Microsoft Word 中的嚮導來設定報表佈局,並將其上載到 XML Publisher 5.6.2 Enterprise 線上執行。 但是,對於要求複雜的報表又該如何?

多數 XML Publisher 模板都是 RTF 檔案,之後經 XML Publisher RTF Template Parser 處理並轉換為 XSL-FO。在使用 Microsoft Word 設計報表模板時,嚮導會使用 XML Publisher 針對 XSL 表示式的簡化標記將資料欄位和其他標記新增到模板中. 這些標記將 XML 報表資料與您的報表佈局相關聯。 如果您熟悉 XSL 且不願使用簡化的標記,XML Publisher 還支援在模板中使用純 XSL 元素。

除 Microsoft Word 的格式設定功能外,XML Publisher 還支援其他高階報表功能,例如條件格式設定、動態資料列、執行總計和圖表。 如果您希望在模板中直接包括程式碼,可將任何 XSL 元素、多個 FO 元素以及由 XML Publisher 擴充套件的一組 SQL 表示式包含在內。 有關詳細資訊,請參閱 Oracle XML Publisher Enterprise 使用者指南,其中包含了有關如何擴充套件 XML Publisher 模板的完整資訊。

結論

XML Publisher 5.6.2 Enterprise 是一個用於根據 XML 和 SQL 資料設計、構建和執行報表的完善環境。 通過 XML Publisher 5.6.2 Enterprise,您可以使用熟悉的工具(例如 Microsoft Word 和 Adobe Acrobat)設計報表佈局,利用使用者友好的、基於 Web 的安全環境將報表提供給企業使用者。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-264854/,如需轉載,請註明出處,否則將追究法律責任。

相關文章