Birt 報(bào)表參數(shù)的使用_第1頁(yè)
Birt 報(bào)表參數(shù)的使用_第2頁(yè)
Birt 報(bào)表參數(shù)的使用_第3頁(yè)
Birt 報(bào)表參數(shù)的使用_第4頁(yè)
Birt 報(bào)表參數(shù)的使用_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Birt 是一款非常流行的開(kāi)源報(bào)表開(kāi)發(fā)工具。本文總結(jié)了 Birt 報(bào)表中參數(shù)機(jī)制,并結(jié)合實(shí)例詳細(xì)地闡述了參數(shù)的各種使用方法,最后介紹了 Birt 報(bào)表的源代碼級(jí)使用。以期為 Birt 報(bào)表使用者提供一個(gè)有益的參考。 1、序言參數(shù)是 birt 提供的一種很重要的機(jī)制,在 birt 中,參數(shù)具有變量的作用,它為 birt 報(bào)表的生成提供了一種靈活強(qiáng)大的機(jī)制。本文基于 Birt 2.1.2 講述 Birt 報(bào)表中一些重要的用法以及 birt 源碼級(jí)的參數(shù)使用機(jī)理,為報(bào)表開(kāi)發(fā)者以及報(bào)表應(yīng)用程序開(kāi)發(fā)者提供一個(gè)參考。 本文的示例是基于 Birt RCP designer 2.1.2 開(kāi)發(fā)的,在閱讀本文前,

2、最好有 eclipse 相關(guān)經(jīng)驗(yàn),并且已經(jīng)能夠使用 Birt 插件制作一些簡(jiǎn)單報(bào)表,并了解 Birt 報(bào)表的一些基本概念,比如 Data Source(數(shù)據(jù)源),Data Set(數(shù)據(jù)集)等。本文示例使用 Birt 自帶的 Sample 數(shù)據(jù)源,用到的數(shù)據(jù)基于圖 1 所示的實(shí)體關(guān)系模型。從這個(gè)模型中可以看出,文中示例用到三張數(shù)據(jù)庫(kù)表分別為 customers,orders 和 orderdetails。其中 customers 表的 customernumber 字段作為外鍵出現(xiàn)在 orders 表中,而 orders 表的 ordernumber 字段做為外鍵出現(xiàn)在 orderdetails

3、 表中。 圖 1. 實(shí)體關(guān)系模型2、標(biāo)量參數(shù)(Scalar parameter)在使用 BIRT 參數(shù)的時(shí)候,首先要了解 BIRT 分為報(bào)表參數(shù)和數(shù)據(jù)集參數(shù)。 報(bào)表參數(shù)定義于整個(gè)報(bào)表內(nèi),而數(shù)據(jù)集參數(shù)定義于某個(gè)數(shù)據(jù)集(Data Set)中。 數(shù)據(jù)集參數(shù)使用的時(shí)候通常需要鏈接到某個(gè)報(bào)表參數(shù)或者利用綁定表(binding tab)和一個(gè)嵌套表中的某個(gè)數(shù)據(jù)元素綁定。 標(biāo)量參數(shù)是Birt報(bào)表中最簡(jiǎn)單也是最基本的一類(lèi)參數(shù),標(biāo)量參數(shù)可以分為靜態(tài)和動(dòng)態(tài)兩種,其中靜態(tài)參數(shù)從用戶(hù)界面獲得用戶(hù)輸入的數(shù)據(jù)值,而動(dòng)態(tài)參數(shù)則可以關(guān)聯(lián)至某一個(gè)數(shù)據(jù)集,因此可以獲得一個(gè)數(shù)據(jù)的集合,供用戶(hù)選擇。 下面分別介紹這兩種參數(shù)。 2.1

4、、靜態(tài)標(biāo)量參數(shù)右鍵點(diǎn)擊Outline面板中的Report parameter選項(xiàng),在彈出的上下文菜單中點(diǎn)擊“New parameter”,彈出圖2所示編輯參數(shù)對(duì)話(huà)框,在name域輸入?yún)?shù)的名字,本例中使用的參數(shù)名字為“customernum”,此時(shí)List of value項(xiàng)默認(rèn)為static。 點(diǎn)擊OK后返回到開(kāi)發(fā)主界面。 圖 2. 編輯參數(shù)接下來(lái)定義Data Set。Data Set定義的對(duì)話(huà)框如圖3所示。 在這個(gè)對(duì)話(huà)框中首先定義“Query”。 我們可以看出Where條件中的customernumber字段通過(guò)”?”代表的參數(shù)傳入?yún)?shù)值。 圖 3. 數(shù)據(jù)集中的“查詢(xún)”定義點(diǎn)擊”P(pán)aram

5、eter”,彈出在數(shù)據(jù)集中定義參數(shù)的對(duì)話(huà)框。 數(shù)據(jù)集中的參數(shù)需要鏈接至某一個(gè)報(bào)表參數(shù)。 在本例中將數(shù)據(jù)集參數(shù)鏈接至前面定義的報(bào)表參數(shù)customernum。 點(diǎn)擊OK,我們就完成了數(shù)據(jù)集中參數(shù)的定義。當(dāng)報(bào)表運(yùn)行時(shí),Birt會(huì)使用由報(bào)表參數(shù)customernum傳入的值填充where條件,生成結(jié)果數(shù)據(jù)集。 如圖4所示。 圖 4. 數(shù)據(jù)集中的“參數(shù)”定義2.2、動(dòng)態(tài)標(biāo)量參數(shù)動(dòng)態(tài)參數(shù)可以提供一個(gè)數(shù)據(jù)值的列表供用戶(hù)選擇,這種功能能夠極大增強(qiáng)報(bào)表設(shè)計(jì)用戶(hù)界面的交互性。 在本例中,我們首先定義一個(gè)數(shù)據(jù)集,這個(gè)數(shù)據(jù)集不使用參數(shù),它從訂單表中查詢(xún)出所有的訂單號(hào),為報(bào)表參數(shù)提供一個(gè)數(shù)據(jù)值的列表。 如圖5所示。圖

6、 5. 數(shù)據(jù)集“ordernum”接下來(lái),我們定義報(bào)表參數(shù),這個(gè)參數(shù)鏈接至前面的ordernum,因此可以根據(jù)數(shù)據(jù)集中的參數(shù)ordernum動(dòng)態(tài)的獲得可選值。 如圖6所示。 圖 6. 報(bào)表參數(shù)“ordernumpara”如圖中所示參數(shù)的display type選成Como Box,List of value選擇為Dynamic,其鏈接至的Data Set選擇為前面定義的ordernum數(shù)據(jù)集,同時(shí)選定Select value column為數(shù)據(jù)集ordernum中的某個(gè)字段,這里ordernum數(shù)據(jù)集只有一個(gè)字段,故選擇為ordernumber。 這樣就將報(bào)表參數(shù)和數(shù)據(jù)集參數(shù)關(guān)聯(lián)起來(lái)。但這不是

7、我們的最終目的,我們的目的是以報(bào)表參數(shù)ordernumpara為中介,向另一個(gè)數(shù)據(jù)集提供參數(shù)。 因此,我們定義圖7所示的數(shù)據(jù)集。 圖 7. 數(shù)據(jù)集“ordersdetail”點(diǎn)擊“Parameter”項(xiàng),進(jìn)入數(shù)據(jù)集參數(shù)定義界面,如圖8所示。 圖 8. 將數(shù)據(jù)集內(nèi)的參數(shù)連接至報(bào)表參數(shù)“ordernumpara”將本數(shù)據(jù)集的參數(shù)num鏈接至ordernumpara,就完成藉由一個(gè)報(bào)表參數(shù)為中介將一個(gè)數(shù)據(jù)集的字段值鏈接到另一個(gè)數(shù)據(jù)集的參數(shù)的功能。3、Cascading Parameter除了使用動(dòng)態(tài)報(bào)表參數(shù)提供數(shù)據(jù)值的選擇列表,報(bào)表開(kāi)發(fā)過(guò)程中用戶(hù)經(jīng)常需要用到互相關(guān)聯(lián)的參數(shù)。 比如要選擇某個(gè)客戶(hù)的某個(gè)

8、訂單號(hào)標(biāo)識(shí)的所有訂單的內(nèi)容,用戶(hù)并不愿意列出所有可能的訂單號(hào),比較理想的情況是給出一個(gè)客戶(hù)編號(hào)的選擇列表,根據(jù)這個(gè)列表的內(nèi)容再給出每個(gè)客戶(hù)的所有訂單號(hào)的列表,這樣用戶(hù)就可以選擇相應(yīng)的客戶(hù)對(duì)應(yīng)的某個(gè)訂單號(hào),從而查詢(xún)出此客戶(hù)的這個(gè)訂單號(hào)標(biāo)識(shí)的所有訂單的詳細(xì)內(nèi)容。 Cascading parameter 一方面增強(qiáng)了報(bào)表邏輯的功能;另一方面,通過(guò)將一部分應(yīng)用邏輯轉(zhuǎn)移到界面操作上,進(jìn)一步降低了報(bào)表內(nèi)部邏輯和SQL查詢(xún)語(yǔ)句的復(fù)雜性。 首先定義一個(gè)customer數(shù)據(jù)集,這個(gè)數(shù)據(jù)集 包含customernumber和customername兩個(gè)字段。如圖9所示。 圖 9. 數(shù)據(jù)集“customer”接著定

9、義一個(gè)名字為orders的數(shù)據(jù)集,如圖10所示。 圖 10. 數(shù)據(jù)集“orders”在“Orders”數(shù)據(jù)集中使用一個(gè)數(shù)據(jù)集參數(shù),這個(gè)數(shù)據(jù)集參數(shù)將要引用接下來(lái)將要定義的層疊參數(shù)中customer參數(shù)。 定義了以上數(shù)據(jù)集之后,我們就可以來(lái)定義層疊參數(shù)了。 右鍵點(diǎn)擊Outline面板中的Report parameter選項(xiàng),在彈出的上下文菜單中點(diǎn)擊“New Cascading Parameter”,彈出以下對(duì)話(huà)框,在Cascading Parameter name域輸入?yún)?shù)的名字,本例中使用的參數(shù)名字為“custorder”,Data Set Model選擇為Multi Data Set。 在緊接

10、著的Parameters表中定義一個(gè)名為customer的參數(shù),并將其關(guān)聯(lián)至customer這個(gè)數(shù)據(jù)集,其取值為customer數(shù)據(jù)集中的customernumber字段,這樣customer這個(gè)層疊參數(shù)的取值就是一個(gè)customernumber的列表。 Customer此時(shí)也成為一個(gè)動(dòng)態(tài)參數(shù)。 如圖11所示。 圖 11. 層疊參數(shù)定義1完成customer的定義后,我們緊接著定義另一參數(shù)order,方法和定義customer相同,最后order參數(shù)和數(shù)據(jù)集orders關(guān)聯(lián),其取值為orders數(shù)據(jù)集中的ordernumber字段。 由于數(shù)據(jù)集orders的局部參數(shù)需要和前面定義的custom

11、er參數(shù)關(guān)聯(lián)后才能產(chǎn)生數(shù)據(jù)結(jié)果集合,因此,在下一步將數(shù)據(jù)集orders與參數(shù)customer完成關(guān)聯(lián)后,order這個(gè)層疊參數(shù)也將成為一個(gè)動(dòng)態(tài)參數(shù),它也成為一個(gè)數(shù)據(jù)值的選擇列表,這個(gè)列表的值是由某個(gè)customernumber決定的所有可能的訂單號(hào)。 如圖12所示。 圖 12. 層疊參數(shù)定義2接下來(lái)將orders數(shù)據(jù)集中的參數(shù)param1關(guān)聯(lián)至層疊參數(shù)customer,如圖13所示。 圖 13. 關(guān)聯(lián)數(shù)據(jù)集“orders”中的參數(shù)至層疊參數(shù)“Customer”最后,定義生成報(bào)表的數(shù)據(jù)集orderdetail,如圖14所示。 圖 14. 數(shù)據(jù)集“orderdetail”然后將其局部參數(shù)param

12、1關(guān)聯(lián)至層疊參數(shù)order,如圖15所示。 這樣我們就完成了具有Cascading parameter功能的數(shù)據(jù)集的定義。 圖 15. 關(guān)聯(lián)數(shù)據(jù)集“Orderdetail”中的參數(shù)至層疊參數(shù)“Order”從主開(kāi)發(fā)界面中將orderdetail數(shù)據(jù)集拖拽到主開(kāi)發(fā)面板上就完成了這個(gè)簡(jiǎn)單的報(bào)表的制作。見(jiàn)圖16 圖 16. 層疊定義完成后的主開(kāi)發(fā)界面點(diǎn)擊preview,會(huì)彈出如圖17所示對(duì)話(huà)框。 從這個(gè)對(duì)話(huà)框中我們可以看到層疊參數(shù)customer的數(shù)據(jù)是customers數(shù)據(jù)庫(kù)表中的所有客戶(hù),選定一個(gè)客戶(hù)后,層疊參數(shù)order的列表將只出現(xiàn)客戶(hù)TechnicsStoreInc的所有訂單,選擇其中一個(gè)訂

13、單后,就會(huì)從orderdetail數(shù)據(jù)表中選出這個(gè)訂單號(hào)標(biāo)識(shí)的所有訂單的詳細(xì)內(nèi)容。 圖 17. 層疊參數(shù)用戶(hù)界面4、Parameter Group在某些情況下,在創(chuàng)建報(bào)表的時(shí)候需要提供大量的參數(shù),為了在界面上更加有效地對(duì)這些參數(shù)進(jìn)行組織,BIRT提供了parameter group的功能。 用戶(hù)可以使用parameter group將相關(guān)的parameter組織在一起。 Parameter group的使用比較簡(jiǎn)單。 首先需要?jiǎng)?chuàng)建一個(gè)parameter group。在outline視圖中用鼠標(biāo)右鍵點(diǎn)擊report parameters標(biāo)簽并選擇new parameter group。 創(chuàng)建完p

14、arameter group后便可以為其創(chuàng)建parameter。 為一個(gè)parameter group創(chuàng)建parameter有兩種方式。一種方式是用鼠標(biāo)右鍵點(diǎn)擊parameter group標(biāo)簽并選擇new parameter創(chuàng)建新的parameter;另一種方式是將已有的parameter添加入parameter group,只需要使用鼠標(biāo)將所需要的parameter拖拽入parameter group中。 如圖18所示是parameter group的一個(gè)例子。 圖 18. Parameter Group示例5、使用parameter實(shí)現(xiàn)nested tables前面的例子展示了如何將BI

15、RT中的report parameter與data set parameter進(jìn)行binding。 作為BIRT parameter的另一個(gè)例子,我們下面通過(guò)介紹data set parameter與data colummn的binding實(shí)現(xiàn)nested tables。 本節(jié)將通過(guò)JDBC Dataset和Scripted Dataset分別介紹實(shí)現(xiàn)過(guò)程。 Nested table主要用于存在外鍵關(guān)聯(lián)的兩個(gè)或幾個(gè)表。 比如customer與order是1:N的關(guān)系,order表中存在外鍵custmernumber。 有些時(shí)候,我們要將customer與相應(yīng)order的信息一起進(jìn)行展現(xiàn),這時(shí)就

16、需要使用nested table。 5.1、使用JDBC Data Sets首先,在Birt數(shù)據(jù)源的基礎(chǔ)上創(chuàng)建兩個(gè)數(shù)據(jù)集CustomerSet(OuterSet)和OrderSet(InnerSet)。 CustomerSet用于獲取所有Customer的信息,在layout視圖下右鍵點(diǎn)擊“Data Explorer”中的“Data Sets”圖標(biāo)并選擇“New Data Set”,選擇數(shù)據(jù)源并填寫(xiě)Data Set名稱(chēng)為CustomerSet;然后點(diǎn)擊next填寫(xiě)數(shù)據(jù)源的query語(yǔ)句。 OrderSet用于獲取指定Customer的Order信息,與CustomerSet的創(chuàng)建過(guò)程類(lèi)似。 由

17、于OrderSet作為內(nèi)嵌表,需要關(guān)聯(lián)參數(shù)CumtomerNumber,因此需要在創(chuàng)建OrderSet的時(shí)對(duì)查詢(xún)語(yǔ)句提供where子句“where CLASSICMODELS.ORDERS.CUSTOMERNUMBER=?”。 CustomerSet和OrderSet的創(chuàng)建過(guò)程如圖19,20所示。 圖 19. 數(shù)據(jù)集CustomerSet圖 20. 數(shù)據(jù)集OrderSet然后為其創(chuàng)建相應(yīng)的dataset parameter,在“Data Explorer中”雙擊OrderSet,創(chuàng)建一個(gè)dataset parameter名稱(chēng)為CNo,設(shè)定其DataType為integer,DefaultVal

18、ue為任意整數(shù),如圖21所示。 圖 21. 數(shù)據(jù)集參數(shù)Cno在創(chuàng)建好數(shù)據(jù)集的基礎(chǔ)上,我們就可以在報(bào)表界面上面創(chuàng)建nested table了。 首先創(chuàng)建顯示一個(gè)customer信息的外層OurterTable,編輯OuterTable的Data Binding并設(shè)置與其綁定的DataSet為CustomerSet,然后在OuterTable中并添加需要顯示的字段信息并為nested table預(yù)留一個(gè)空白列。 如圖22所示。 圖 22. 外層表示意圖及數(shù)據(jù)集綁定下一步在OuterTable中空白列的detail行中創(chuàng)建顯示order信息的InnerTable,設(shè)置與其綁定的DataSet為Ord

19、erSet,并添加需要顯示的字段,如圖23所示。 最后為InnerTable創(chuàng)建DataSet parameter binding,在InnerTable的Data Binding對(duì)話(huà)框中點(diǎn)擊“Dataset Parameter Binding”按鈕,設(shè)置參數(shù)CNo的value是row“CUSTOMERNUMBER”,如圖24所示。 圖 23. 內(nèi)嵌表圖 24. 數(shù)據(jù)集參數(shù)綁定至此,nested table的創(chuàng)建過(guò)程完成,我們可以通過(guò)選擇preview視圖查看報(bào)表的輸出結(jié)果如圖25所示。 圖 25. 程序執(zhí)行結(jié)果5.2、使用Scripted Data Sets本小節(jié)中將介紹如何使用兩個(gè)Srip

20、ted Dataset實(shí)現(xiàn)nested table。 仍然以customer和order為例,并以CustomerName作為關(guān)聯(lián)外鍵。 第一步創(chuàng)建數(shù)據(jù)集。 首先創(chuàng)建一個(gè)Scripted Data Source,然后以此創(chuàng)建兩個(gè)數(shù)據(jù)集CustomerSet和OrderSet,在CustomerSet中創(chuàng)建兩列CustomerNo和CustomerName,在OrderSet中創(chuàng)建三列OrderSet、Content和CustomerName。 最后為OrderSet創(chuàng)建一個(gè)DataSet Parameter CName,Data Type為String,Direction為Input,Defa

21、ult Value為任意整數(shù),如圖26所示。 圖 26. OrderSet的數(shù)據(jù)集參數(shù)CName第二步在報(bào)表界面上創(chuàng)建外層表(OuterTable)和內(nèi)嵌表(InnerTable),并設(shè)置與其綁定的Dataset分別為CustomerSet和OrderSet,步驟與4.1小節(jié)類(lèi)似。 然后為InnerTable創(chuàng)建Dataset parameter binding,設(shè)置參數(shù)CName的value為row“CustomerName”。 由于我們使用的是Scripted Data Set,因此在本例中我們需要使用Birt Sript構(gòu)造一些數(shù)據(jù),并實(shí)現(xiàn)數(shù)據(jù)集的數(shù)據(jù)獲取。 首先,在報(bào)表的beforeF

22、actory方法中構(gòu)造數(shù)據(jù),代碼如下所示。 報(bào)表的beforeFactory方法importPackage( Packages.java.util );importPackage( Packages.java.lang );var outerMap = new Hashtable();var innerMap = new Hashtable();var customer = new Array(2);for(var i=0;i2;i+) var array = new Array(2);array0 = +i;array1 = customer_+i;customeri = array;out

23、erMap.put(1, customer0);outerMap.put(2, customer1);var order = new Array(5);for(var i=0;i5;i+) var array = new Array(2);array0=i;array1=order_+i;orderi=array;var orderList1 = new ArrayList();orderList1.add(order0);orderList1.add(order1);var orderList2 = new ArrayList();orderList2.add(order2);orderLi

24、st2.add(order3);orderList2.add(order4);innerMap.put(customer01, orderList1);innerMap.put(customer11, orderList2);reportContext.setPersistentGlobalVariable(outerMap, outerMap);reportContext.setPersistentGlobalVariable(innerMap, innerMap);然后,為CustomerSet和OrderSet添加script代碼。 CustomerSet的open方法代碼如下所示。 C

25、ustomerSet的open方法outerMap = reportContext.getPersistentGlobalVariable(outerMap);iter = outerMap.entrySet().iterator();CustomerSet的fetch方法代碼如下所示。 CustomerSet的fetch方法if( iter.hasNext() ) customer = iter.next().getValue();rowCustomerNo = customer0;rowCustomerName = customer1;return true; else return fa

26、lse;OrderSet的open方法代碼如下所示,其中inputParams“CName”就表示了綁定的Detaset parameter CName的值。 OrderSet的open方法i = 0;customerName = inputParamsCName;iMap = reportContext.getPersistentGlobalVariable(innerMap);orderList = iMap.get(customerName);OrderSet的fetch方法如如下所示。 OrderSet的fetch方法if (orderList = null)return false;

27、if (i orderList.size() order = orderList.get(i);rowOrderNo = order0;rowContent = order1;rowCustomerName = customerName;i+;return true;elsereturn false;至此,使用Scripted數(shù)據(jù)源的nested table的創(chuàng)建過(guò)程完成,我們可以通過(guò)選擇preview視圖查看報(bào)表的輸出結(jié)果如圖27所示。 圖 27. 程序執(zhí)行結(jié)果6、源代碼級(jí)的參數(shù)使用對(duì)于報(bào)表應(yīng)用程序開(kāi)發(fā)者而言,有時(shí)他們需要在源碼一級(jí)控制報(bào)表參數(shù)。 接下來(lái)我們將講述birt報(bào)表在源代碼一級(jí)是怎

28、樣處理報(bào)表參數(shù)的。 下面的程序片段是使用birt提供的API進(jìn)行應(yīng)用程序開(kāi)發(fā)的一個(gè)基本框架,如果想獲得更加詳細(xì)的內(nèi)容,請(qǐng)參考Birt API的源代碼。 清單1主要是進(jìn)行報(bào)表引擎的設(shè)置和初始化,其主要目的是將Birt Home設(shè)置為Birt runtime下ReportEngine的安裝目錄。 清單1/創(chuàng)建一個(gè)報(bào)表引擎配置對(duì)象EngineConfig config = new EngineConfig();/設(shè)置 BIRT報(bào)表引擎的安裝路徑config.setEngineHome(C:/birt/);清單2就是打開(kāi)一個(gè)報(bào)表設(shè)計(jì)文件。 報(bào)表設(shè)計(jì)文件就是指我們利用Birt報(bào)表開(kāi)發(fā)工具開(kāi)發(fā)的XML格式

29、的,以.rptdesign為后綴的文件。 清單2/創(chuàng)建一個(gè)報(bào)表生成引擎ReportEngine engine = new ReportEngine(config);/打開(kāi)一個(gè)報(bào)表設(shè)計(jì)文件IReportRunnable design = engine.openReportDesign(C:/temp/test.rptdesign);清單3、4、5是處理報(bào)表參數(shù),清單6是創(chuàng)建生成報(bào)表的任務(wù),清單7是將處理好的參數(shù)設(shè)置給報(bào)表。 清單8是進(jìn)行一些輸出選項(xiàng)的設(shè)置,比如生成什么格式(pdf,html等)的報(bào)表,結(jié)果輸出到哪里(文件,輸出流等),最后就是運(yùn)行生成報(bào)表。 其中清單3、4、5負(fù)責(zé)處理參數(shù)。 清單

30、3使用前面一步創(chuàng)建的設(shè)計(jì)文件對(duì)象生成一個(gè)IGetParameterDefinitionTask類(lèi)型的paramTask,paramTask調(diào)用getParameterDefns方法獲得報(bào)表中所有參數(shù)的定義,注意這里參數(shù)使用false,其效果是將報(bào)表中的parameter group 扁平化,從而以標(biāo)量的形式返回所有的參數(shù)。 這樣可以將參數(shù)處理的復(fù)雜性進(jìn)行封裝,為應(yīng)用程序開(kāi)發(fā)者提供簡(jiǎn)單的使用接口。 清單4是屬于用戶(hù)定制的步驟,因此本文沒(méi)有給出相關(guān)源碼。 在這一步里,用戶(hù)可以通過(guò)GUI 對(duì)話(huà)框或者HTML表單動(dòng)態(tài)的輸入?yún)?shù)值,參數(shù)值一般存儲(chǔ)到一個(gè)HashMap中。 清單5主要負(fù)責(zé)將第四步獲得參數(shù)值

31、賦給清單3中獲取的參數(shù)定義。這三部分合起來(lái)就構(gòu)成了birt API中處理參數(shù)的主要步驟. 清單3/以打開(kāi)的報(bào)表設(shè)計(jì)文件為參數(shù),創(chuàng)建一個(gè)獲取參數(shù)的對(duì)象IGetParameterDefinitionTask paramTask = engine.createGetParameterDefinitionTask(design);/獲取報(bào)表設(shè)計(jì)文件中的參數(shù)定義Collection parameters = paramTask.getParameterDefns(false);清單4接受由html表單或GUI彈出的對(duì)話(huà)框輸入?yún)?shù)值,假設(shè)輸入的參數(shù)及其值以名/值對(duì)的形式存儲(chǔ)在一個(gè)HashMap類(lèi)型的變量p

32、aramValues中。清單5/為獲取的參數(shù)定義賦值HashMap parameterMap=evaluateParameterValues(parameters,paramValues);清單6/創(chuàng)建生成報(bào)表的任務(wù)對(duì)象IRunAndRenderTask task = engine.createRunAndRenderTask(design);清單7/為報(bào)表生成任務(wù)設(shè)置參數(shù)集合對(duì)象task.setParameters(parameterMap);清單8/創(chuàng)建報(bào)表render選項(xiàng)對(duì)象IRenderOption options = new RenderOption();/設(shè)置輸出格式(PDF,HTML等)options.setOutputFormat( format );/ 設(shè)置輸出文件options.setOutputFileName( ta

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論