報(bào)表工具作為信息管理、決策分析系統(tǒng)不可或缺的部分,在項(xiàng)目中經(jīng)常用到,市面上的報(bào)表工具各式各樣,在集成策略上,每個(gè)產(chǎn)品也都有自己特有的打開方式。不過,從門派上看,常見的無外乎中間件,servlet 應(yīng)用兩大門派。一般開源的報(bào)表,大都作為中間件產(chǎn)品提供給開發(fā)者,集成方法也比較統(tǒng)一,通常都是嵌入到系統(tǒng)中自行調(diào)用 API 開發(fā)與集成,但開源的幫助文檔或全或不全,都靠自己找資料,就要拼學(xué)習(xí)能力了。在商用收費(fèi)報(bào)表中,潤乾報(bào)表也采用的是中間件方式,下面我們以潤乾報(bào)表為例來進(jìn)一步了解一下:

潤乾報(bào)表為了方便開發(fā)者使用,在滿足大多數(shù)通用的需求的同時(shí),實(shí)現(xiàn)零編程,潤乾報(bào)表利用 tag 標(biāo)簽進(jìn)行了封裝,如下就是一個(gè)發(fā)布潤乾報(bào)表的 jsp 文件:
<%@ taglib uri=”/WEB-INF/raqsoftReport.tld” prefix=”report” %>
<report:html name=”report1″ srcType=”file” reportFileName=”wangge.rpx”…/>
可以看到,在這個(gè) jsp 中用到一個(gè) <prefix: html > 標(biāo)簽來發(fā)布 html 報(bào)表,與 struts 標(biāo)簽使用類似,其中 reportFileName 就是需要發(fā)布的報(bào)表文件名,發(fā)布報(bào)表的同時(shí),實(shí)現(xiàn)了導(dǎo)出,分頁,打印功能

如果把 WEB 應(yīng)用比作一臺(tái)機(jī)器,那報(bào)表就是這臺(tái)機(jī)器諸多功能模塊里的一塊,tag 標(biāo)簽就是一個(gè)個(gè)小零件,你把這個(gè)小零件扣在哪個(gè) jsp 文件中,報(bào)表就在哪里展現(xiàn)。

報(bào)表作為中間件集成到其他應(yīng)用系統(tǒng)里,與這個(gè)應(yīng)用系統(tǒng)就成為了一個(gè)整體,但也有分家的做法,比如業(yè)界比較常見的 servlet 應(yīng)用——

在這里,報(bào)表應(yīng)用是一個(gè)獨(dú)立的應(yīng)用,在其他應(yīng)用頁面里嵌入一個(gè) JFrame,然后通過 url 請(qǐng)求報(bào)表的 servlet,報(bào)表名作為參數(shù)傳遞給報(bào)表應(yīng)用,報(bào)表應(yīng)用將計(jì)算以后生成的 html 報(bào)表返回。
那這個(gè)時(shí)候,我們的程序猿要問了,瀏覽報(bào)表明白了,那如果報(bào)表需要傳參呢? 別著急,我們?cè)賮砟M一下兩種集成方式在給報(bào)表傳參上有啥區(qū)別:
我們還是拿潤乾報(bào)表的 tag 標(biāo)簽來看:
<%@ taglib uri=”/WEB-INF/raqsoftReport.tld” prefix=”report” %>
<report:html name=”report1″ srcType=”file” reportFileName=”wangge.rpx”
params= “ arg1=123;arg2=abc;…… “
…
/>
Tag 標(biāo)簽中有個(gè) params 屬性,可以通過這個(gè)屬性給參數(shù)賦值,如果參數(shù)值靈活變化,當(dāng)然屬性值也可以通過變量傳遞,這個(gè)不多說,程序猿都懂的。
JFrame 中請(qǐng)求報(bào)表 servlet 的 URL 就要改成:
http: //ip:port/report/reportservlet ? 參數(shù) = 報(bào)表 &arg1=123&arg2=’abc’&…
這時(shí),我知道我們經(jīng)驗(yàn)豐富的程序猿又要質(zhì)疑了:首先,引入了 JFrame 來加載報(bào)表,多一次數(shù)據(jù)請(qǐng)求;再次,參數(shù)在 url 里都是明文顯示的,安全報(bào)警啊,特別集成權(quán)限時(shí)會(huì)比較麻煩!除此之外,web 服務(wù)與報(bào)表服務(wù)在不同的進(jìn)程里,不管是不是在同一臺(tái)物理服務(wù)器,都會(huì)多占用硬件資源,當(dāng)應(yīng)用出現(xiàn)異常時(shí),排錯(cuò)也麻煩,增加運(yùn)維難度。所以,潤乾報(bào)表雖然也支持 servlet 發(fā)布報(bào)表的方式,但我們也不建議大家這樣使用。
前面我們講了潤乾報(bào)表作為中間件集成,那么這個(gè)中間件到底集成了什么到應(yīng)用系統(tǒng)中?很簡單,就是 jar 包,xml 配置文件及 jsp 的 tag 描述文件 tld。
Jar 包引入到應(yīng)用程序中,不僅提供了 tag 標(biāo)簽零代碼計(jì)算展示、打印報(bào)表,也為開發(fā)者在自己的項(xiàng)目中自行調(diào)用報(bào)表 API 接口實(shí)現(xiàn)報(bào)表的計(jì)算,分頁,導(dǎo)出,打印等過程提供了方便,例如使用代碼計(jì)算發(fā)布一個(gè)報(bào)表:
// 讀報(bào)表
String reportFile = “ C:/reportFiles/wangge.rpx ” ; // 絕對(duì)路徑或相對(duì)當(dāng)前程序啟動(dòng)路徑
ReportDefine rd = (ReportDefine)ReportUtils.read(reportFile);
// 計(jì)算報(bào)表
Context cxt = new Context(); // 構(gòu)建報(bào)表引擎計(jì)算環(huán)境
//…………………….. // 其它輔助代碼,例如往報(bào)表引擎?zhèn)鬟f參數(shù),傳遞數(shù)據(jù)庫連接參數(shù)等
ReportDefine rd = (ReportDefine)ReportUtils.read(reportFile);Engine engine = new Engine(rd, cxt); // 構(gòu)造報(bào)表引擎
IReport iReport = engine.calc(); // 運(yùn)算報(bào)表
// 輸出到網(wǎng)頁,展現(xiàn)報(bào)表
String htmlText = ReportUtils.toHTMLString(iReport,”report1″,request); // 生成 html 語法
request.setAttribute(“htmlText”, htmlText); // 保存到 request 里,方便頁面上顯示
當(dāng)然,這里只是講一個(gè)簡單例子,API 屬于進(jìn)階集成,更深入的學(xué)習(xí)請(qǐng)參考潤乾的《程序員參考》文檔。這例子雖然簡單,但我相信大家已經(jīng)體會(huì)到了她的靈活性、輕量性,而單一的 servlet URL 方式集成如果要二次開發(fā),僅兩個(gè)系統(tǒng)的數(shù)據(jù)通訊就是一大難題。 所以基于這種方式集成的報(bào)表,要么由開發(fā)者想辦法解決,要么就是把報(bào)表服務(wù)做成了一個(gè)平臺(tái)——囊括了數(shù)據(jù)決策展示、權(quán)限管理、報(bào)表管理等等看起來牛叉,但跟自己業(yè)務(wù)系統(tǒng)相結(jié)合時(shí)又是雞肋的一堆子業(yè)務(wù)系統(tǒng)。
便利、靈活、輕量為報(bào)表開發(fā)節(jié)約成本提供了基礎(chǔ),隨著業(yè)務(wù)的提升,高效、高可用性也是考核報(bào)表系統(tǒng)的重要部分。因此集群也是集成部署的一個(gè)重要環(huán)節(jié),那接下來我們繼續(xù)來看,這兩種集成方式在集群上又有啥區(qū)別,先上兩個(gè)結(jié)構(gòu)圖——
中間件嵌入到 web 應(yīng)用里,與 web 應(yīng)用是一個(gè)整體,所以 web 應(yīng)用做完集群,那么報(bào)表也就做完了集群。

而 Servlet URL 的方式,那集群就相當(dāng)于分成了兩套,各自做自己的集群,也就是報(bào)表是一個(gè)集群,web 應(yīng)用是一個(gè)集群。

從以上的部署結(jié)構(gòu)可以看出,中間件的方式在集群上更簡單些。所需要的配置及硬件資源都要少不少。
到此報(bào)表的集成基本就講完了,優(yōu)缺點(diǎn)都做了一個(gè)比較,您的應(yīng)用需要哪一種呢?
詳情鏈接:
http://c.raqsoft.com.cn/article/1533027803258?r=gxy
本文題目:報(bào)表集成那點(diǎn)事-創(chuàng)新互聯(lián)
本文URL:http://chinadenli.net/article12/edhdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、Google、外貿(mào)建站、品牌網(wǎng)站設(shè)計(jì)、云服務(wù)器、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容