什么是云計算(cloud computing)呢?云計算是一種基于因特網(wǎng)的超級計算模式,在遠程的數(shù)據(jù)中心里,成千上萬臺電腦和服務(wù)器連接成一片電腦云。因此,云計算甚至可以讓你體驗每秒10萬億次的運算能力,擁有這么強大的計算能力可以模擬核爆炸、預(yù)測氣候變化和市場發(fā)展趨勢。用戶通過電腦、筆記本、手機等方式接入數(shù)據(jù)中心,按自己的需求進行運算。
那么,it精英們?nèi)绾慰创朴嬎愕哪兀縄BM的創(chuàng)立者托馬斯·沃森曾表示,全世界只需要5臺電腦就足夠了。比爾·蓋茨則在一次演講中稱,個人用戶的內(nèi)存只需640K足矣。李開復(fù)打了一個很形象的比喻:錢莊。最早人們只是把錢放在枕頭底下,后來有了錢莊,很安全,不過兌現(xiàn)起來比較麻煩。現(xiàn)在發(fā)展到銀行可以到任何一個網(wǎng)點取錢,甚至通過ATM,或者國外的渠道。就像用電不需要家家裝備發(fā)電機,直接從電力公司購買一樣。云計算就是這樣一種變革——由谷歌、IBM這樣的專業(yè)網(wǎng)絡(luò)公司來搭建計算機存儲、運算中心,用戶通過一根網(wǎng)線借助瀏覽器就可以很方便的訪問,把“云”做為資料存儲以及應(yīng)用服務(wù)的中心。
狹義云計算是指IT基礎(chǔ)設(shè)施的交付和使用模式,指通過網(wǎng)絡(luò)以按需、易擴展的方式獲得所需的資源(硬件、平臺、軟件)。提供資源的網(wǎng)絡(luò)被稱為“云”。“云”中的資源在使用者看來是可以無限擴展的,并且可以隨時獲取,按需使用,隨時擴展,按使用付費。這種特性經(jīng)常被稱為像水電一樣使用IT基礎(chǔ)設(shè)施。
廣義云計算是指服務(wù)的交付和使用模式,指通過網(wǎng)絡(luò)以按需、易擴展的方式獲得所需的服務(wù)。這種服務(wù)可以是IT和軟件、互聯(lián)網(wǎng)相關(guān)的,也可以是任意其他的服務(wù)。
(一)原理:
云計算(Cloud Computing)是分布式處理(Distributed Computing)、并行處理(Parallel Computing)和網(wǎng)格計算(Grid Computing)的發(fā)展,或者說是這些計算機科學(xué)概念的商業(yè)實現(xiàn)。
云計算的基本原理是,通過使計算分布在大量的分布式計算機上,而非本地計算機或遠程服務(wù)器中,企業(yè)數(shù)據(jù)中心的運行將更與互聯(lián)網(wǎng)相似。這使得企業(yè)能夠?qū)①Y源切換到需要的應(yīng)用上,根據(jù)需求訪問計算機和存儲系統(tǒng)。
這可是一種革命性的舉措,打個比方,這就好比是從古老的單臺發(fā)電機模式轉(zhuǎn)向了電廠集中供電的模式。它意味著計算能力也可以作為一種商品進行流通,就像煤氣、水電一樣,取用方便,費用低廉。最大的不同在于,它是通過互聯(lián)網(wǎng)進行傳輸?shù)摹?/font>
云計算的藍圖已經(jīng)呼之欲出:在未來,只需要一臺筆記本或者一個手機,就可以通過網(wǎng)絡(luò)服務(wù)來實現(xiàn)我們需要的一切,甚至包括超級計算這樣的任務(wù)。從這個角度而言,最終用戶才是云計算的真正擁有者。
云計算的應(yīng)用包含這樣的一種思想,把力量聯(lián)合起來,給其中的每一個成員使用。
(二)云計算有哪些好處?
1、安全,云計算提供了最可靠、最安全的數(shù)據(jù)存儲中心,用戶不用再擔心數(shù)據(jù)丟失、病毒入侵等麻煩。
2、方便,它對用戶端的設(shè)備要求最低,使用起來很方便。
3、數(shù)據(jù)共享,它可以輕松實現(xiàn)不同設(shè)備間的數(shù)據(jù)與應(yīng)用共享。
4、無限可能,它為我們使用網(wǎng)絡(luò)提供了幾乎無限多的可能。
(三)云計算最有利于中小企業(yè)?
云計算技術(shù)將使得中小企業(yè)的成本大大降低。如果說“云”給大型企業(yè)的IT部門帶來了實惠,那么對于中小型企業(yè)而言,它可算得上是上天的恩賜了。過去,小公司人力資源不足,IT預(yù)算吃緊,那種動輒數(shù)百萬美元的IT設(shè)備所帶來的生產(chǎn)力對它們而言真是如夢一般遙遠,而如今,“云”為它們送來了大企業(yè)級的技術(shù),并且先期成本極低,升級也很方便。
這一新興趨勢的重要性毋庸置疑,不過,它還僅僅是一系列變革的起步階段而已。云計算不但抹平了企業(yè)規(guī)模所導(dǎo)致的優(yōu)劣差距,而且極有可能讓優(yōu)劣之勢易主。簡單地說,當今世上最強大最具革新意義的技術(shù)已不再為大型企業(yè)所獨有。“云”讓每個普通人都能以極低的成本接觸到頂尖的IT技術(shù)。
(四)“云”時代
目前,PC依然是我們?nèi)粘9ぷ魃钪械暮诵墓ぞ摺覀冇肞C處理文檔、存儲資料,通過電子郵件或U盤與他人分享信息。如果PC硬盤壞了,我們會因為資料丟失而束手無策。
而在“云計算”時代,“云”會替我們做存儲和計算的工作。“云”就是計算機群,每一群包括了幾十萬臺、甚至上百萬臺計算機。“云”的好處還在于,其中的計算機可以隨時更新,保證“云”長生不老。Google就有好幾個這樣的“云”,其他IT巨頭,如微軟、雅虎、亞馬遜(Amazon)也有或正在建設(shè)這樣的“云”。
屆時,我們只需要一臺能上網(wǎng)的電腦,不需關(guān)心存儲或計算發(fā)生在哪朵“云”上,但一旦有需要,我們可以在任何地點用任何設(shè)備,如電腦、手機等,快速地計算和找到這些資料。我們再也不用擔心資料丟失。
(五)云計算的幾大形式
1.SAAS(軟件即服務(wù))
這種類型的云計算通過瀏覽器把程序傳給成千上萬的用戶。在用戶眼中看來,這樣會省去在服務(wù)器和軟件授權(quán)上的開支;從供應(yīng)商角度來看,這樣只需要維持一個程序就夠了,這樣能夠減少成本。Salesforce.com是迄今為止這類服務(wù)最為出名的公司。SAAS在人力資源管理程序和ERP中比較常用。 Google Apps和Zoho Office也是類似的服務(wù)
2.實用計算(Utility Computing)
這個主意很早就有了,但是知道最近才在Amazon.com、Sun、IBM和其它提供存儲服務(wù)和虛擬服務(wù)器的公司中新生。這種云計算是為IT行業(yè)創(chuàng)造虛擬的數(shù)據(jù)中心使得其能夠把內(nèi)存、I/O設(shè)備、存儲和計算能力集中起來成為一個虛擬的資源池來為整個網(wǎng)絡(luò)提供服務(wù)。
3.網(wǎng)絡(luò)服務(wù)
同SAAS關(guān)系密切,網(wǎng)絡(luò)服務(wù)提供者們能夠提供API讓開發(fā)者能夠開發(fā)更多基于互聯(lián)網(wǎng)的應(yīng)用,而不是提供單機程序。
4.平臺即服務(wù)
另一種SAAS,這種形式的云計算把開發(fā)環(huán)境作為一種服務(wù)來提供。你可以使用中間商的設(shè)備來開發(fā)自己的程序并通過互聯(lián)網(wǎng)和其服務(wù)器傳到用戶手中。
5.MSP(管理服務(wù)提供商)
最古老的云計算運用之一。這種應(yīng)用更多的是面向IT行業(yè)而不是終端用戶,常用于郵件病毒掃描、程序監(jiān)控等等。
6.商業(yè)服務(wù)平臺(如:中國云計算網(wǎng) www.cloudcomputing-china.cn )
SAAS和MSP的混合應(yīng)用,該類云計算為用戶和提供商之間的互動提供了一個平臺。比如用戶個人開支管理系統(tǒng),能夠根據(jù)用戶的設(shè)置來管理其開支并協(xié)調(diào)其訂購的各種服務(wù)。
7.互聯(lián)網(wǎng)整合
將互聯(lián)網(wǎng)上提供類似服務(wù)的公司整合起來,以便用戶能夠更方便的比較和選擇自己的服務(wù)供應(yīng)商。
說了半天相信很多人還沒搞清怎么回事,因為單“云計算”這三個字就已經(jīng)夠云里霧里的了。云計算到底有多強大,仍有待時代的檢閱!
安裝介紹
對于擴展 Eclipse 的功能,首先當然就是去下載對應(yīng)的 plugin,BIRT 也不能例外。BIRT 的下載地址:http://download.eclipse.org/birt/downloads/,當前版本是2.0。BIRT 依賴于 Eclipse 的其它幾個 plugin(GEF 和 EMF),由于我使用的是 Eclipse WTP(這是 Eclipse 的 WEB 開發(fā)工具),在這個工具中那些 plugin 都已預(yù)裝,因此直接下載 birt-report-framework-2_0_0.zip 就好了。如果沒有這些 plugin,請下載。
下載之后,安裝非常簡單:只需解壓然后將對應(yīng)的features和plugins目錄中的內(nèi)容復(fù)制到Eclipse對應(yīng)的目錄下即可。且慢,這只是完成了對于BIRT的基本安裝。下一步就是去下載BIRT需要的第三方軟件包:
|
需要的jar文件 |
復(fù)制位置(都在plugins目錄下) |
Apache Axis |
axis.jar
axis-ant.jar
commons-discovery-0.2.jar
jaxrpc.jar
saaj.jar
wsdl4j-1.5.1.jar
|
org.eclipse.birt.report.viewer_version/birt/WEB-INF/Lib |
iText 1.3 |
itext-1.3.jar |
org.eclipse.birt.report.engine.emitter.pdf_version/lib |
prototype.js v1.4.0 |
prototype.js v1.4.0 |
org.eclipse.birt.report.viewer_version/birt/ajax/lib |
自此,BIRT的安裝大功告成。啟動Eclipse,在"project wizard"中會出現(xiàn)一個BIRT的項目類型。
典型使用
在使用之前,了解一些關(guān)于BIRT的基本概念,將會對使用非常有益:
- 數(shù)據(jù)源:數(shù)據(jù)的來源,或提供者。如xml數(shù)據(jù)源、jdbc數(shù)據(jù)源等。
- 數(shù)據(jù)集:數(shù)據(jù)集合,它必須與數(shù)據(jù)源關(guān)聯(lián),可以理解為查詢的結(jié)果。
- 報表以及報表項,報表可視為是針對一組數(shù)據(jù)集的表現(xiàn)形式,而報表項這是這個表現(xiàn)形式的某個具體的單元。它們之間的關(guān)系,與窗體和控件的關(guān)系非常類似。報表、數(shù)據(jù)集、數(shù)據(jù)源三者間的關(guān)系:數(shù)據(jù)源 --- 數(shù)據(jù)集 --- 報表。
- 報表參數(shù):查詢參數(shù)的表現(xiàn)形式,使用它可以構(gòu)建更靈活的報表。
- 模板和庫:主要用于復(fù)用報表設(shè)計,提高報表開發(fā)的效率。
本文中的例子都采用jdbc數(shù)據(jù)源,這是最常見的使用情形,其中涉及的數(shù)據(jù)關(guān)系是一個典型的多對多關(guān)系:
1. 簡單報表
首先,讓我們來看看一個"Hello World"級別的應(yīng)用:"列出所有用戶",以便可以快速的了解BIRT。為了完成這一任務(wù),我們需要:
A. 通過項目向?qū)В瑒?chuàng)建BIRT工程。工程創(chuàng)建完畢之后,顯示BIRT的"報表設(shè)計"視圖。由于此時沒有報表,其它幾個視圖,如"數(shù)據(jù)資源管理器",不可用。
B. 在項目上點鼠標右鍵,選擇:"new -> 報表"。在報表類型中,選擇"空白報表"。
C. 創(chuàng)建新報表后,數(shù)據(jù)視圖可用。在"數(shù)據(jù)資源管理器"中創(chuàng)建報表所需要的jdbc數(shù)據(jù)源。根據(jù)向?qū)В梢苑奖愕奶砑觠dbc驅(qū)動、數(shù)據(jù)庫url、用戶名和密碼。
D. 在指定的數(shù)據(jù)源上,創(chuàng)建數(shù)據(jù)集,這一步完成產(chǎn)生數(shù)據(jù)集的查詢。在BIRT中支持2種數(shù)據(jù)集:基于查詢語句和基于存儲過程。在本例中使用前者,對應(yīng)的查詢語句是:select user.userid, user.username, user.addr from user
。
E. 選擇剛剛創(chuàng)建的數(shù)據(jù)集,將它拖至空白報表頁上。BIRT會自動為其創(chuàng)建一個報表項,此處是"表"。如下圖:
F. 選擇預(yù)覽,就可以看到報表運行的實際結(jié)果了。或在報表上點擊鼠標右鍵,選擇:"報表 -> 運行報表"。
非常簡單,一個顯示所有用戶信息的報表就完成了。在此基礎(chǔ)之上,讓我們再來完成一些其它具有挑戰(zhàn)性的任務(wù):
1.格式化:這是一個內(nèi)容廣泛的主題,常見的需求:
需求 |
解決辦法(以上為例) |
顯示報表列頭為中文 |
如:將userid顯示為"用戶標識"。
選擇"userid",輸入"用戶標識"。 |
設(shè)置報表外觀 |
選擇對應(yīng)的報表項,通過"屬性編輯器"調(diào)整。 |
對于報表數(shù)據(jù)列進行處理 |
如:將userid和username,顯示成:userid:username。雙擊row["userid"],出現(xiàn)"表達式生成器",輸入: row["userid"]+":"+ row["username"] |
分頁 |
選擇"表":在"屬性編輯器"中,選擇"分頁符",在"分頁符間隔"中輸入分頁大小。 |
頁眉和頁腳 |
在報表設(shè)計頁,選擇"主頁",在其中設(shè)置頁眉和頁腳。 |
2.排序:一種變通的做法是:將數(shù)據(jù)集排序之后,如在對應(yīng)的SQL語句中使用order by,再顯示。除此之外,也可以在報表設(shè)計時來完成:
A. 選擇表,此時屬性編輯器下方會出現(xiàn)與表相關(guān)的選擇頁。
B. 選擇"排序",在對應(yīng)的頁面中選擇"添加"按鈕之后,出現(xiàn):
C. 選擇需要進行排序的列,以及排序方式。
3.計算列:通過"數(shù)據(jù)集編輯器"來完成。進入"數(shù)據(jù)集編輯器后",選擇"計算列":輸入對應(yīng)的"列名稱"、"數(shù)據(jù)類型"和"表達式"。
4.報表參數(shù):它為報表的產(chǎn)生帶來了極大的靈活性。報表參數(shù)一定是與含參數(shù)的查詢對應(yīng)的,否則失去了意義。現(xiàn)在,將以上需求改為列出"用戶標識大于某一輸入的所有用戶":
A. 編輯數(shù)據(jù)集,修改SQL:select user.userid,user.username,user.addr from user where user.userid>?
。
B. 在數(shù)據(jù)集編輯窗體內(nèi)選擇"參數(shù)",然后輸入對應(yīng)的"名稱"、"數(shù)據(jù)類型"、"方向"和"默認值"(必須給出默認值)。其中"方向"表示"輸入"或"輸出"。對于參數(shù),一般選"輸入"。完畢之后:
C. 在"數(shù)據(jù)資源管理器"視圖,創(chuàng)建報表參數(shù):"用戶標識"。
D. 選擇"表",在"屬性編輯器"中選擇"綁定"。此時,會出現(xiàn)剛才在數(shù)據(jù)集中定義的參數(shù)"id"。在"值"列,選擇報表參數(shù)"用戶標識":
E. 運行報表時,此時會出現(xiàn)報表參數(shù)的輸入框,填寫值后即出現(xiàn)報表結(jié)果。
本例雖然只定義了一個報表參數(shù),但是BIRT并沒有這樣的限制。我們可以創(chuàng)建多個參數(shù),做法很簡單:首先,查詢有多個參數(shù);定義數(shù)據(jù)集的參數(shù)時,按照查詢中參數(shù)出現(xiàn)的順序定義;最后,添加需要的報表參數(shù)。
5.分組:以上為例:將用戶按地址分組。
A. 選擇"表",點擊鼠標右鍵,選擇"插入組"。這里有兩個選擇:"在上面"和"在下面"。
B. 選擇任意一種,彈出分組資料窗體。填寫其中的:"名稱"和"分組依據(jù)"。在本例中,"分組依據(jù)"是addr列。
C. 選擇預(yù)覽,或運行報表,查看結(jié)果。
2. 子報表
子報表是另一種最常見的報表,以上為例:列出所有用戶,并列出每個用戶所購買的項目,以及項目數(shù)。為了完成這種父子關(guān)系的報表,需要:
A. 創(chuàng)建新報表和數(shù)據(jù)源。
B. 創(chuàng)建數(shù)據(jù)集user,使用SQL:select user.userid,user.username,user.addr from user。
C. 創(chuàng)建數(shù)據(jù)集items,使用SQL:
select item.itemid,item.itemdesc,item.price,user_item.count from item,user_item
where item.itemid= user_item.itemid
and user_item.userid= ?
|
同時在數(shù)據(jù)集items上創(chuàng)建參數(shù)user,它對應(yīng)SQL中的參數(shù)。
D. 從"Palette"視圖拖入"列表"到報表中,在"屬性編輯器"的"綁定"頁中,選擇數(shù)據(jù)集為user。它用來顯示主表的信息,在本例中是用戶信息。
E. 從"Palette"視圖拖入"網(wǎng)格"到"列表"的"明細數(shù)據(jù)"中,設(shè)置網(wǎng)格為1行2列,它用來存放"用戶姓名"和"用戶地址"。在"數(shù)據(jù)資源管理器"視圖,選擇數(shù)據(jù)集user,將username和addr分別拖入網(wǎng)格的2列中。
F. 在"數(shù)據(jù)資源管理器"視圖,選擇數(shù)據(jù)集items,將它拖入"列表"的"明細數(shù)據(jù)"中,位于剛剛插入的網(wǎng)格下方。此時,BIRT會生成數(shù)據(jù)集items對應(yīng)的"表"。
G. 選擇剛剛生成的"表",在"屬性編輯器"的"綁定"頁中,會出現(xiàn)在items中定義的參數(shù)。修改它的值:row["userid"]。于是,父子報表就發(fā)生了聯(lián)系。
H. 選擇預(yù)覽,或運行報表,就可以看到結(jié)果了。
很遺憾,到目前為止,另一種最常見的報表"交叉表"還不被BIRT支持。但是,BIRT的官方網(wǎng)站已明確表示,將在未來的版本中支持它。
3. 統(tǒng)計圖表
俗話說,"一圖頂千言"。沒有圖的報表是枯燥,且缺乏表現(xiàn)力的。在本例中,我們將使用圖表來表示:每個用戶的消費總數(shù)。
A. 創(chuàng)建新報表和數(shù)據(jù)源。
B. 創(chuàng)建數(shù)據(jù)集chart,使用SQL:
select user.username,round(sum(item.price*user_item.count),2)
from item, user_item, user
where item.itemid= user_item.itemid
and user.userid= user_item.userid
group by user.username
|
C. 從"Palette"視圖拖入"圖表"到報表中,此時會彈出"編輯圖表"窗體。
D. 在"選擇圖表類型"頁,選擇圖表類型為"條形圖"。在"選擇數(shù)據(jù)"頁,使用數(shù)據(jù)集chart,同時選中username列,將其拖入"類別x系列"。對于統(tǒng)計列,同樣將其拖入"類別y系列"。在"圖表格式"頁,分別為x和y系列,填寫相應(yīng)的顯示名稱。
E. 選擇預(yù)覽,或運行報表,即可看到統(tǒng)計圖表。
4. 使用腳本
可以使用腳本,是BIRT的一大特色。在BIRT中,數(shù)據(jù)源、數(shù)據(jù)集和報表項,都可以書寫腳本。具體做法:選擇數(shù)據(jù)源、數(shù)據(jù)集和報表項任意一種對象,然后選擇"腳本"頁面。如選擇數(shù)據(jù)源user后,對應(yīng)的腳本輸入頁面:
選擇對應(yīng)的事件,然后在下方的腳本輸入框中輸入腳本即可。如對于第一個例子,我們需要統(tǒng)計用戶地址是"No.5 St."的用戶數(shù):
A. 選擇數(shù)據(jù)集,然后選擇"腳本",進入數(shù)據(jù)集的腳本編輯窗口。
B. 選擇事件"afterOpen",在腳本窗口內(nèi)輸入:count=0;
C. 選擇事件"onFetch",在腳本窗口內(nèi)輸入:if( row["addr"]== "No.5 St.") count++;
D. 選擇報表,在腳本窗口選擇事件"onRender",輸入:this.caption=count;
E. 預(yù)覽,或運行報表后,會在報表的標題輸出count的數(shù)值。
另外,BIRT也支持使用java來作為報表項的事件處理程序。具體做法,請參見BIRT的幫助文檔。
5. 庫和模板
除了腳本使開發(fā)者可以自定義報表的行為外,BIRT還提供了庫和模板機制來重用設(shè)計,加快報表的開發(fā)。在TheServerSide上有一篇相當詳細的文檔:Using Eclipse BIRT Report Libraries and Templates。
應(yīng)用集成
BIRT與現(xiàn)有應(yīng)用的集成非常簡單,由于BIRT主要是web應(yīng)用,本節(jié)以web應(yīng)用為例進行說明。
1. 從Eclipse BIRT官方網(wǎng)站下載birt-runtime-2_0_0.zip。
2. 解壓之后,只需要其中的web view example目錄下的內(nèi)容。
3. 復(fù)制以下第三方軟件包到web view example目錄:
|
需要的jar文件 |
復(fù)制位置 |
Apache Axis |
axis.jar
axis-ant.jar
commons-discovery-0.2.jar
jaxrpc.jar
saaj.jar
wsdl4j-1.5.1.jar
|
WEB-INF/Lib |
iText 1.3 |
itext-1.3.jar |
Plugins/org.eclipse.birt.report.engine.emitter.pdf/lib |
prototype.js v1.4.0 |
prototype.js v1.4.0 |
ajax/lib |
4. 將web view example目錄發(fā)布到web容器中,如tomcat,改名:birtApp。
5. 啟動tomcat,并訪問birtApp。在首頁中選擇"View Example",如果成功發(fā)布,系統(tǒng)將提示成功。
6. 發(fā)布設(shè)計完成的報表文件,在birtApp中創(chuàng)建reports目錄,用于存放報表設(shè)計文件。
7. 在應(yīng)用中通過:http://localhost:8080/birtApp/frameset?__report=報表文件路徑,就可以訪問報表了。
這個web應(yīng)用支持2個動作:
- frameset,以frameset的形式顯示報表。這個界面包含一些frame,如頁面導(dǎo)航,報表主體在其中的一個frame中顯示;使用形式:
http://localhost:8080/birtApp/frameset?__report=報表文件路徑&參數(shù)=........
- run,報表以一個單獨的html頁面或pdf顯示,由于這種形式?jīng)]有frmaeset,因此使用者必須自己提供相應(yīng)的參數(shù),如報表參數(shù),頁號等。使用形式:
http://localhost:8080/birtApp/run?__report=報表文件路徑&參數(shù)=........
對于以上2個動作,以下列出可用的參數(shù):
選項 |
說明 |
__format |
報表輸出格式:html或pdf,缺省是html。對于frameset不起作用。 |
__isnull |
指明一個參數(shù)是null,常用于字符串類型。如果提供參數(shù)且值為空: - 對于日期和數(shù)字類型,BIRT會將它們當作null處理。 - 對于字符串,BIRT會將它作為空字符串。因此,為了說明某個字符串是null,通常寫為:__isnull=參數(shù)。 |
__locale |
本地化選項,缺省是jvm的locale。 |
__report |
報表設(shè)計文件路徑。 |
報表參數(shù) |
報表參數(shù)參數(shù)值對,形式:參數(shù)名=參數(shù)值。對于frameset,直接在地址欄中輸入?yún)?shù)名=參數(shù)值后回車,不會影響報表結(jié)果。雖然,此時選擇"運行報表"時,彈出的參數(shù)值已經(jīng)改變。 |
雖然本節(jié)所說的是針對web應(yīng)用的集成,但是這種方法同樣也可與非web應(yīng)用集成。此時,我們可以采取一種變通的方法:在非web應(yīng)用中使用內(nèi)嵌的web容器,如jetty,也可達到同樣的效果。這種做法和Eclipse的做法類似。還記得在報表設(shè)計時使用"報表 -> 運行報表"嗎?那個彈出的窗體,實際就是一個web頁面。
結(jié)論
與一些老牌報表軟件相比,BIRT可能仍顯稚嫩。然而,它也不乏其獨到之處,如腳本控制、庫和模板。加之有世界領(lǐng)先的報表廠商Actuate支持,實際上BIRT的ROM(Report Object Model)就是Actuate捐獻的,我們有充分的理由對BIRT的前景表示樂觀。
參考資料
【王程斯】IBM Message Broker筆記系列(四)
前面講了那么多MB的原理和配置,這一篇blog開始正式講講我個人學(xué)MB的感受。“假如時間可以重來”,我會怎樣利用手頭的資源,以最快的速度入手。
體驗MB
在安裝完WMBT之后,會出現(xiàn)“歡迎”(這個也是eclipse
環(huán)境安裝后都會有的東西,你也可以在“幫助”->“歡迎”里面找到),里面有不少很淺顯的例子,讓你對MB是如何工作的有個感性認識。強烈建議把里面的“入門”部分看完。
學(xué)習(xí)開發(fā)
看完“入門”后,重點就應(yīng)該放在“樣例”中。在樣例庫里面,有數(shù)十個基礎(chǔ)的樣例,每個樣例都針對某類
節(jié)點,比如消息映射、
JMS、
數(shù)據(jù)庫操作、Webservice調(diào)用,等等。那么多的例子,當然不可能一下子看完,而且對于一張白紙的新手,里面有些基礎(chǔ)知識還不懂,我的建議是:結(jié)合之前提到的那本書《精通Websphere Message Broker》,看完一方面的內(nèi)容,比如
數(shù)據(jù)庫操作,你就可以打開“樣例庫”,將里面的數(shù)據(jù)庫樣例導(dǎo)入至WMBT,然后看看其中的ESQL代碼、相關(guān)節(jié)點的設(shè)置,等等。一開始會比較枯燥,而且讓這些樣例跑起來也不是件容易的事情,但堅持下去就會慢慢體會到其中的樂趣了。
掌握Debug利器
一般來說,WMBT會自動幫你配置好樣例
程序運行所需的環(huán)境(比如創(chuàng)建隊列
管理器、數(shù)據(jù)庫,等等),然后將樣例
部署到MB的執(zhí)行組中。這一切都是自動完成的,但有時候出于各種原因,試運行樣例的時候不能得到預(yù)期的結(jié)果。首先排除掉打包和部署時的錯誤,因為樣例程序的源代碼通常是沒有問題的,那么余下的問題就只能靠debug來
解決了。另一方面,當你看了書之后,對InputRoot、Environment、ExceptionList這些東西的結(jié)構(gòu)、細節(jié)肯定會很好奇,但是書中提到的很少很零散,最好的方法就是在debug模式下,讓消息流掛起在某一點,然后你再慢慢瀏覽其中的各類變量,很多東西都不言自明了。用
IBM工程師的話說,就是“沒有debug就根本沒法學(xué)會MB”。為什么?相關(guān)
資料太少了,去google有時候還不如直接問MB自己,所以也是很考驗?zāi)愕淖詫W(xué)能力的。
配置debug環(huán)境
這些內(nèi)容在《精通》那本書中都有講到,只是比較粗略,我在這里補充我個人的
經(jīng)驗。
首先右鍵單擊某個執(zhí)行組,“屬性”,在“JVM調(diào)試端口”中輸入一個tcp端口號,不要和其他程序沖突就行,假設(shè)9090。再次右鍵執(zhí)行組,“調(diào)試”->“啟用調(diào)試9090”。然后,切記,重啟執(zhí)行組所在的
broker
重啟后,把bar
文件部署到該執(zhí)行組,然后進入“debug”視圖,找到下圖右下角的那個按鈕:
如果是該按鈕是紅色的,說明debug守護程序沒有啟動;如果是綠色的,鼠標移過去,會顯示“debug守護程序正在監(jiān)聽XX端口”,需要注意的是,這里的端口可不是之前在執(zhí)行組設(shè)置的端口,剛好相反,必須和之前的9090不同。單擊旁邊的下拉箭頭,可以啟動或者更改守護程序的端口,這里改為9099,不必重啟。
接下來,就和一般的eclipse調(diào)試一樣了,在綠色的小昆蟲按鈕設(shè)置debug參數(shù)。新建一個debug,注意這里的“java調(diào)試端口”則必須與執(zhí)行組的一致,你也可以“選擇執(zhí)行組….”,
系統(tǒng)會根據(jù)你選擇的執(zhí)行組,自動設(shè)置端口
然后,在“源”選項卡中,添加你要調(diào)試的項目。確定之后,就可以運行debug了。
What next?
debug配置成功后,就開始慢慢研究那些樣例吧,按照之前我說的思路,“書本+樣例”,按照每個人自己的學(xué)習(xí)習(xí)慣和項目開發(fā)的需要,將你要學(xué)習(xí)的樣例,一步步調(diào)試過去,看看每條ESQL語句的結(jié)果,很快的你就知道其中的運行機理了。
小結(jié)
由于MB不能像java那樣,輸出東西到
控制臺,只能輸出到
日志文件,而且還得寫一堆語句,或者配置trace節(jié)點,很麻煩,所以傳統(tǒng)的在程序中插入輸出語句的方式在這里沒太大意義。很多情況下,要依靠debug來觀察消息流執(zhí)行過程中消息的變化,來決定bug的所在。