項目經驗總結-Eclipse圖表工具Birt的使用技巧(二)

    做爲Eclipse圖表工具Birt的使用技巧(一)的後續,上一篇主要說明了Birt報表建立和使用的基本步驟和過程,本文旨在介紹一些經常使用的技巧,都是比較實用並且通過我本人實踐可行的,但願能給須要的人帶來一些幫助.javascript

    1.  報表參數傳遞

    參數傳遞的應用場景比較普遍,在Birt設計器中有兩個位置涉及到參數,一個是DataSet數據集建立的時候,有一個Parameters選項,另外就是在Data Explorer中有一個Report Parameters,這裏主要介紹後者.由於Birt參數的對外接口就是Report Parameters,數據集中的參數也要經過這個報表參數去設置. java

    首先新建一個報表參數,如圖: jsp

     

    這裏建立一個默認名稱的參數,其中Display type表示這個參數的顯示類型,與它邊上的hidden選項對應,若是hidden不打勾,說明這個參數會以Birt默認的View界面的形式表現.能夠是多種形式,就是彈出一個窗口,要用戶輸入,這不符合項目的須要,因此一般咱們將參數hidden.以下: 編輯器

     

    這時建立好了參數,說一點,這個參數的可做用範圍是整張報表的rptdesign文件,在能夠輸入腳本和表達式的地方均可以經過params["NewParameter"].value使用.上面hidden複選框上面還有一個Is Requeired選項,若是勾選,意味必需要傳遞這個參數,不然報表會出錯. 函數

    如今用這個參數,動態的改變一下數據集合,參數傳遞主要涉及幾個問題,一個是URL傳參,一個是同request傳參,這是主要的兩種傳參方式,都會說明一下. 工具

    下面列出主要代碼,分別書寫在jsp頁面(能夠跳轉到報表頁)和數據集的腳本頁. 測試

jsp頁面:

<a href="javascript:fun()">View Report (reports/demo_report1.rptdesign)</a>
<script>
var str = 
"<%=basePath%>"+"frameset?__report=reports/report1.rptdesign&__format=HTML&NewParameter='";
str = str + escape(encodeURI("二十五味地黃金剛大力丸")) + "'";
function fun(){
   window.location = str ;
}
</script>

DataSet Script頁面:

importPackage(Packages.java.lang);

var sample = java.net.URLDecoder.decode(params["NewParameter"].value,"UTF-8"); 
System.out.println("-----------------------" + sample + "-----------------------");
if(sample == null){
   this.queryText +=" where ITEM_NAME= '治糜康栓'";
   System.out.println("-----------------------" + this.queryText + "-----------------------");
}
else {
   this.queryText +=" where ITEM_NAME=" + sample ;
}

    上面就是URL地址欄傳參的方式,在Script引入lang包是爲了在控制檯能夠經過System.out進行輸出,由於Birt內置腳本不支持alert等一些調試方法.它能夠混合Java和Javascript腳本同時使用. this

    同時須要注意的是,URL傳參會受到大小的限制,它和form表單的get提交時同一個道理.另外若是參數是中文須要進行特殊的函數處理,比較麻煩. spa

jsp頁面:
<%
  request.getSession().setAttribute("NewParameter","二十五味鬼臼丸");
%>

DataSet Script頁面:

importPackage(Packages.java.lang);
importPackage(Packages.javax.servlet.http);

var request = reportContext.getHttpServletRequest();

var sample = request.getSession().getAttribute("NewParameter"));

System.out.println("-----------------------" + sample + "-----------------------");
if(sample == null){
   this.queryText +=" where ITEM_NAME= '治糜康栓'";
   System.out.println("-----------------------" + this.queryText + "-----------------------");
}
else {
   this.queryText +=" where ITEM_NAME=" + sample ;
}

    這裏我是經過request的Session進行傳遞的參數,request也支持其餘的方式.這種方式傳參沒有長度限制和中文轉碼的要求..net

    2.  報表維度動態變換

    維度變化的應用場景在項目中應該也是比較多的,好比一個柱圖根據用戶下拉列表的選擇不一樣,根據不一樣的維度統計一個度量.

    若是按照Birt以前的作法須要爲每一個維度製做一個報表,這明顯不符合咱們的須要.這個功能以前在網上沒有找到具體的資料,嘗試過經過Birt Char API和圖表表達式拼湊的種種方式,最後試驗出如今經過數據集計算列這種方式實現,你們也能夠本身嘗試下別的方法.

    繼續用以前的報表文件,修改它的數據集,定義一個計算列,這個列經過參數不一樣,綁定不一樣的真實列.如圖:

     

    例子寫的比較簡單,若是傳入的參數是1,那麼這個計算的列的實際值就是ITEM_CLASS不然就是CLASS_ON_MR.最後數據集中如圖:

    

    數據集修改完畢,如今去修改Cube,在Cube裏咱們實際上須要的是dimension_parma這個維度,可是必需要將全部涉及到的維度,就是這個dimension_parma條件中包含的維度都加入到cube的維度中.以下:

     

    如今Cube修改完畢,去修改圖表裏面的數據綁定.直接將dimension_parma綁定到X軸.如圖:

     

    如今測試一下,使用最簡單的URL傳參因此部署一下,將項目發佈到Tomcat,訪問結果以下:

    首先傳入參數值爲1

     

    改變,傳入參數值爲2

     

    這樣就能夠實現同一張報表,根據參數不一樣,顯示不一樣維度的結果,一樣的操做除了圖表,還適用於交叉表格,這裏就不演示了.

    3.  報表鑽取

    BIRT的鑽取說白了就是網頁上的超連接,點擊連接會出現另外一個頁面而已,而須要注意的就是它能夠以當前報表上的數據爲查詢條件進行查詢,並在下一個頁面中進行顯示。


    說明其步驟分爲以下兩步:

    1、 準備兩張報表,固然兩個報表某些地方是須要有關聯關係的.

    我準備了兩張報表,1是告警種類的統計信息,其參數爲別爲起始時間與結束時間。2是統計信息的明細信息,其參數爲超時間、結束時間及主機名稱。兩個報表是經過報表1的主機名及輸入報表的起止時間爲關聯進行關聯的。

    2、 爲兩張報表創建關聯關係.

    一、 選擇要關係的數據字段並在屬性編輯器中選擇‘超級連接’。

     

    二、 點擊編輯,在彈出的對話框中選擇鑽取功能。

     

    三、 在‘第1步’中選擇報表文件。

     

    四、 肯定後在在下面的‘報表參數’處會變成白色,在參數下的第一行單擊鼠標左鍵會出現下拉列表,在其中選擇要使用的參數,要注意的是有的版本只能逐行的這麼點擊,點擊其它地方是沒有反應的。

     

    五、選擇好參數後點擊值處會變成以下形式,點擊出現的按鈕爲參數設值,若是沒有爲參數設置必須的值那麼點擊主頁面的連接後會彈出報表2的參數輸入框要求輸入必須的參數。

     

    五、 在彈出的表達式生成器中的類別會有可供選擇的幾個大類型,通常我用的是頭兩個,其中第一個是主報表用的數據集中可用的數據,以下圖所示,第二個是報表參數,就是主報表中輸入的參數。

     

    六、 這是我設置好的參數,肯定後報表的連接部分便結束了。

    

    最後發兩張報表的運行效果圖。

    一、這是主報表,告警數量後會進行鑽取。

     

    二、這是鑽取後顯示的頁面。

     

    上面就是報表鑽取的方式,這裏的超連接也能夠設置在圖表的Format Chart這個部分,這裏有交互的相關設置.

    由於頁面大小篇幅限制的緣由,本文就先介紹參數傳遞,維度變換和報表鑽取三個技巧,另開一篇Eclipse圖表工具Birt的使用技巧(三)繼續介紹,未完待續.

相關文章
相關標籤/搜索