零編碼搭建web報(bào)表系統(tǒng)
Posted on 2014-12-22 17:06 FineReport——報(bào)表技術(shù)領(lǐng)跑者 閱讀(266) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Java報(bào)表技術(shù)知識(shí) 所謂的無(wú)編碼搭建web報(bào)表系統(tǒng),嚴(yán)格意義上來(lái)說(shuō),應(yīng)該包括從報(bào)表軟件的安裝,配置,報(bào)表的設(shè)計(jì),到完整的系統(tǒng)運(yùn)行,都可以通過(guò)鼠標(biāo)或者鍵盤(pán)操作來(lái)完成的,不需要額外編寫(xiě)代碼。
一般來(lái)目前的報(bào)表系統(tǒng)很少能夠完全做到這一點(diǎn),大多都是宣稱(chēng)自己能夠無(wú)編碼設(shè)計(jì)報(bào)表。但是一般在項(xiàng)目當(dāng)中應(yīng)用的時(shí)候,往往需要將報(bào)表系統(tǒng)的組織起來(lái),按照一定的用戶權(quán)限,最終以一個(gè)報(bào)表系統(tǒng)的形式展示給最終用戶。那么在搭建/維護(hù)這個(gè)系統(tǒng)的時(shí)候,就需要設(shè)計(jì)者/維護(hù)者了解有關(guān)報(bào)表的調(diào)用,參數(shù)的設(shè)置,頁(yè)面的設(shè)計(jì)等等多種需要手工創(chuàng)建代碼的事情。
對(duì)于一個(gè)技術(shù)水平較高的報(bào)表系統(tǒng)設(shè)計(jì)者來(lái)說(shuō),可能手工創(chuàng)建一個(gè)系統(tǒng),并不是難度太大。但如果每一次修改一個(gè)報(bào)表或者重新設(shè)計(jì)一個(gè)報(bào)表,都需要重新手工創(chuàng)建代碼,他可能不會(huì)有足夠的熱情來(lái)做這個(gè)工作。更進(jìn)一步說(shuō),如果我們的報(bào)表系統(tǒng)要求讓最終用戶也可以修改發(fā)布報(bào)表,那么代碼創(chuàng)建的工作對(duì)于他來(lái)說(shuō),繁瑣且有難度。
以最終的解決辦法,應(yīng)該是有一套和報(bào)表設(shè)計(jì)器搭配的報(bào)表發(fā)布系統(tǒng)。用戶通過(guò)界面操作來(lái)配置報(bào)表發(fā)布的系統(tǒng)。為最終客戶提供一個(gè)完全可視化操作的全自動(dòng)報(bào)表發(fā)布平臺(tái)。
值得欣喜的是,F(xiàn)ineReport和FineServer這兩大軟件針對(duì)這個(gè)需求做了很多工作并徹底的解決了這個(gè)問(wèn)題。其解決方案簡(jiǎn)單概括如下:
1、內(nèi)置參數(shù)頁(yè)面
幾乎在所有的項(xiàng)目當(dāng)中,報(bào)表都會(huì)用到參數(shù)控制,例如日?qǐng)?bào),周報(bào),月報(bào)。還有例如地區(qū)產(chǎn)品銷(xiāo)售狀況匯總,還可能需要選擇地區(qū),選擇產(chǎn)品等等參數(shù)。
內(nèi)置的參數(shù)頁(yè)面,是收集了報(bào)表當(dāng)中在任何地方定義過(guò)的參數(shù),然后用戶通過(guò)拖拽來(lái)設(shè)置參數(shù)頁(yè)面的布局。這一點(diǎn),在FineReport6.1版本當(dāng)中,已經(jīng)有所體現(xiàn)。可見(jiàn)此功能是在為無(wú)編碼搭建系統(tǒng)鋪路。
2、XML配置文件部署項(xiàng)目
項(xiàng)目的發(fā)布基于XML配置文件,即所有的頁(yè)面設(shè)置信息保存于不同的XML文件當(dāng)中,只要將這些文件部署于服務(wù)器端,即可成功完成系統(tǒng)搭建。
搭建系統(tǒng)所需的XML文件主要包括數(shù)據(jù)源,權(quán)限,以及報(bào)表目錄樹(shù)的組織,以及報(bào)表系統(tǒng)的細(xì)節(jié)設(shè)置(例如首頁(yè)portal展示內(nèi)容,標(biāo)題,背景等等)。
當(dāng)然,這樣的簡(jiǎn)單的說(shuō)法,并不能讓大家了解究竟是怎樣一個(gè)方法來(lái)創(chuàng)建系統(tǒng)。在后面的時(shí)間里,我會(huì)以實(shí)際的工作進(jìn)程來(lái)演示如何僅僅通過(guò)報(bào)表創(chuàng)建各種系統(tǒng),例如CRM,HR系統(tǒng)等等。
一般來(lái)目前的報(bào)表系統(tǒng)很少能夠完全做到這一點(diǎn),大多都是宣稱(chēng)自己能夠無(wú)編碼設(shè)計(jì)報(bào)表。但是一般在項(xiàng)目當(dāng)中應(yīng)用的時(shí)候,往往需要將報(bào)表系統(tǒng)的組織起來(lái),按照一定的用戶權(quán)限,最終以一個(gè)報(bào)表系統(tǒng)的形式展示給最終用戶。那么在搭建/維護(hù)這個(gè)系統(tǒng)的時(shí)候,就需要設(shè)計(jì)者/維護(hù)者了解有關(guān)報(bào)表的調(diào)用,參數(shù)的設(shè)置,頁(yè)面的設(shè)計(jì)等等多種需要手工創(chuàng)建代碼的事情。
對(duì)于一個(gè)技術(shù)水平較高的報(bào)表系統(tǒng)設(shè)計(jì)者來(lái)說(shuō),可能手工創(chuàng)建一個(gè)系統(tǒng),并不是難度太大。但如果每一次修改一個(gè)報(bào)表或者重新設(shè)計(jì)一個(gè)報(bào)表,都需要重新手工創(chuàng)建代碼,他可能不會(huì)有足夠的熱情來(lái)做這個(gè)工作。更進(jìn)一步說(shuō),如果我們的報(bào)表系統(tǒng)要求讓最終用戶也可以修改發(fā)布報(bào)表,那么代碼創(chuàng)建的工作對(duì)于他來(lái)說(shuō),繁瑣且有難度。
以最終的解決辦法,應(yīng)該是有一套和報(bào)表設(shè)計(jì)器搭配的報(bào)表發(fā)布系統(tǒng)。用戶通過(guò)界面操作來(lái)配置報(bào)表發(fā)布的系統(tǒng)。為最終客戶提供一個(gè)完全可視化操作的全自動(dòng)報(bào)表發(fā)布平臺(tái)。
值得欣喜的是,F(xiàn)ineReport和FineServer這兩大軟件針對(duì)這個(gè)需求做了很多工作并徹底的解決了這個(gè)問(wèn)題。其解決方案簡(jiǎn)單概括如下:
1、內(nèi)置參數(shù)頁(yè)面
幾乎在所有的項(xiàng)目當(dāng)中,報(bào)表都會(huì)用到參數(shù)控制,例如日?qǐng)?bào),周報(bào),月報(bào)。還有例如地區(qū)產(chǎn)品銷(xiāo)售狀況匯總,還可能需要選擇地區(qū),選擇產(chǎn)品等等參數(shù)。
內(nèi)置的參數(shù)頁(yè)面,是收集了報(bào)表當(dāng)中在任何地方定義過(guò)的參數(shù),然后用戶通過(guò)拖拽來(lái)設(shè)置參數(shù)頁(yè)面的布局。這一點(diǎn),在FineReport6.1版本當(dāng)中,已經(jīng)有所體現(xiàn)。可見(jiàn)此功能是在為無(wú)編碼搭建系統(tǒng)鋪路。
2、XML配置文件部署項(xiàng)目
項(xiàng)目的發(fā)布基于XML配置文件,即所有的頁(yè)面設(shè)置信息保存于不同的XML文件當(dāng)中,只要將這些文件部署于服務(wù)器端,即可成功完成系統(tǒng)搭建。
搭建系統(tǒng)所需的XML文件主要包括數(shù)據(jù)源,權(quán)限,以及報(bào)表目錄樹(shù)的組織,以及報(bào)表系統(tǒng)的細(xì)節(jié)設(shè)置(例如首頁(yè)portal展示內(nèi)容,標(biāo)題,背景等等)。
當(dāng)然,這樣的簡(jiǎn)單的說(shuō)法,并不能讓大家了解究竟是怎樣一個(gè)方法來(lái)創(chuàng)建系統(tǒng)。在后面的時(shí)間里,我會(huì)以實(shí)際的工作進(jìn)程來(lái)演示如何僅僅通過(guò)報(bào)表創(chuàng)建各種系統(tǒng),例如CRM,HR系統(tǒng)等等。