潤(rùn)乾報(bào)表技術(shù)白皮書(shū)_第1頁(yè)
潤(rùn)乾報(bào)表技術(shù)白皮書(shū)_第2頁(yè)
潤(rùn)乾報(bào)表技術(shù)白皮書(shū)_第3頁(yè)
潤(rùn)乾報(bào)表技術(shù)白皮書(shū)_第4頁(yè)
潤(rùn)乾報(bào)表技術(shù)白皮書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩88頁(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)介

精品文檔精心整理精品文檔可編輯的精品文檔精品文檔精心整理精品文檔可編輯的精品文檔潤(rùn)乾報(bào)表技術(shù)白皮書(shū)北京潤(rùn)乾軟件技術(shù)有限公司2006年3月目錄第1章 總體說(shuō)明 41.1 潤(rùn)乾報(bào)表軟件概述 41.2 產(chǎn)品構(gòu)成 5第2章 新一代報(bào)表模型 72.1 數(shù)據(jù)統(tǒng)計(jì)模型 72.2 數(shù)據(jù)填報(bào)模型 18第3章 功能詳細(xì)描述 223.1 報(bào)表設(shè)計(jì) 223.2 報(bào)表展現(xiàn)輸出 413.3 數(shù)據(jù)填報(bào) 523.4 交互與OLAP 583.5 報(bào)表管理中心 633.6 報(bào)表任務(wù)調(diào)度 65第4章 部署與應(yīng)用方案 674.1 報(bào)表設(shè)計(jì)模式 674.2 報(bào)表應(yīng)用部署方式 694.3 數(shù)據(jù)報(bào)送應(yīng)用方式 734.4 支持環(huán)境 76第5章 性能指標(biāo)與控制 785.1 性能分析 785.2 實(shí)測(cè)指標(biāo) 795.3 控制手段 80第6章 集成接口 826.1 數(shù)據(jù)源 826.2 JAVAAPI 846.3 前端接口 866.4 設(shè)計(jì)器接口 88第7章 特點(diǎn)與優(yōu)勢(shì)總結(jié) 907.1 新一代報(bào)表模型 907.2 真正易用的報(bào)表工具 907.3 純JAVA報(bào)表軟件 917.4 強(qiáng)有力的填報(bào)功能 917.5 獨(dú)有的字符終端解決方案 927.6 開(kāi)放的系統(tǒng) 927.7 可靠的本土支持 93第8章 逐點(diǎn)應(yīng)答 948.1 功能性要求 948.2 非功能性要求 998.3 實(shí)施服務(wù)要求 110第9章 建議 1139.1 選擇開(kāi)放性的工具 1139.2 與應(yīng)用緊密集成 1139.3 基于實(shí)際業(yè)務(wù)報(bào)表進(jìn)行測(cè)試 114附:某保險(xiǎn)公司統(tǒng)計(jì)報(bào)表系統(tǒng)實(shí)際測(cè)試報(bào)告 115總體說(shuō)明潤(rùn)乾報(bào)表軟件概述潤(rùn)乾報(bào)表是用于統(tǒng)計(jì)報(bào)表制作及數(shù)據(jù)填報(bào)的大型企業(yè)級(jí)報(bào)表軟件,它提供了高效的報(bào)表設(shè)計(jì)方案、強(qiáng)大的報(bào)表展現(xiàn)能力、靈活的部署機(jī)制,并且具備強(qiáng)有力的填報(bào)功能,配合以全面的用戶(hù)權(quán)限管理、報(bào)表調(diào)度功能和交互功能,為企業(yè)級(jí)統(tǒng)計(jì)分析、展現(xiàn)提供了高性能、高效率的報(bào)表系統(tǒng)解決方案。潤(rùn)乾報(bào)表軟件的核心特點(diǎn)在于開(kāi)創(chuàng)性地提出了新一代報(bào)表數(shù)學(xué)模型,采用了革命性的多源分片、不規(guī)則分組、自由格間運(yùn)算、行列對(duì)稱(chēng)等技術(shù),使得復(fù)雜報(bào)表的設(shè)計(jì)簡(jiǎn)單化,以往難以實(shí)現(xiàn)的報(bào)表可以輕松實(shí)現(xiàn),避免了大量的復(fù)雜SQL編寫(xiě)與前期數(shù)據(jù)準(zhǔn)備,報(bào)表設(shè)計(jì)的效率提高了一個(gè)數(shù)量級(jí)。潤(rùn)乾報(bào)表是一個(gè)純Java報(bào)表工具,提供了全面的API接口,是開(kāi)發(fā)Web報(bào)表軟件的理想選擇。Java報(bào)表工具的跨平臺(tái)特性,使得它能良好地支持大型系統(tǒng)的需要。潤(rùn)乾報(bào)表不需安裝控件,可以實(shí)現(xiàn)純HTML報(bào)表方式,可以支持PDF,EXCEL等輸出,提供了全面的頁(yè)面與打印控制,能很多地滿足Web報(bào)表的展現(xiàn)需要。同時(shí),潤(rùn)乾報(bào)表對(duì)圖表有良好的支持,可以生成柱圖、餅圖、折線圖等二十幾種圖表。潤(rùn)乾報(bào)表提供基于動(dòng)態(tài)庫(kù)表關(guān)聯(lián)技術(shù)的填報(bào)功能,完美解決數(shù)據(jù)入庫(kù)的難題,極大提高填報(bào)表單的處理效率,擴(kuò)展了Web報(bào)表工具的應(yīng)用方式。潤(rùn)乾報(bào)表提供了報(bào)表管理中心,可以對(duì)報(bào)表建立多層次的目錄管理,進(jìn)行全面的用戶(hù)和基于角色的權(quán)限管理。潤(rùn)乾報(bào)表還提供了調(diào)度器模塊,可以實(shí)現(xiàn)定時(shí)、批量等報(bào)表自動(dòng)處理和報(bào)表的自動(dòng)分發(fā)。產(chǎn)品構(gòu)成基礎(chǔ)部件潤(rùn)乾報(bào)表由兩大核心部分組成:報(bào)表設(shè)計(jì)器:設(shè)計(jì)編輯報(bào)表,自帶報(bào)表運(yùn)算引擎,連接數(shù)據(jù)庫(kù)后可預(yù)覽打印報(bào)表,并可生成其它格式保存。設(shè)計(jì)器不依賴(lài)于其它部分,可獨(dú)立工作;設(shè)計(jì)器以Java應(yīng)用程序(JavaApplication)的形式提交。報(bào)表服務(wù)器:在后臺(tái)提供統(tǒng)計(jì)報(bào)表運(yùn)算和數(shù)據(jù)填報(bào)處理的服務(wù),開(kāi)放各層次的API接口調(diào)用,由程序員調(diào)用生成結(jié)果報(bào)表;服務(wù)器運(yùn)行不依賴(lài)設(shè)計(jì)器;服務(wù)器以Java類(lèi)包(jar)的形式提交,一般情況下不需要物理上的獨(dú)立服務(wù)器??蛇x組件除基本部件外,潤(rùn)乾報(bào)表還提供如下可選組件:報(bào)表管理中心:一個(gè)簡(jiǎn)單的獨(dú)立報(bào)表管理應(yīng)用,處理用戶(hù)角色權(quán)限控制、功能組織等,終端用戶(hù)可直接采用該組件完成報(bào)表管理、查閱、填報(bào)等工作,報(bào)表管理中心運(yùn)行依賴(lài)于報(bào)表服務(wù)器。報(bào)表調(diào)度器:作為服務(wù)程序運(yùn)行,在設(shè)定的時(shí)刻自動(dòng)計(jì)算報(bào)表并將結(jié)果保存或推送到指定的目標(biāo),報(bào)表調(diào)度器運(yùn)行依賴(lài)于報(bào)表服務(wù)器;集成(遠(yuǎn)程)設(shè)計(jì)支持:包括基于協(xié)議的JDBC接口、基于WebStart技術(shù)的設(shè)計(jì)器封裝包和可編程的設(shè)計(jì)器遠(yuǎn)程文件訪問(wèn)接口?;谠摻M件可將報(bào)表設(shè)計(jì)器集成于用戶(hù)的統(tǒng)一門(mén)戶(hù)管理之內(nèi)(B/S或C/S均可)、實(shí)現(xiàn)遠(yuǎn)程報(bào)表設(shè)計(jì)、統(tǒng)一管理報(bào)表模板文件等功能;Windows展現(xiàn)控件:包括應(yīng)用于WindowsGUI程序的ActiveX控件、生成EXCEL/PDF流的DLL調(diào)用及相關(guān)后臺(tái)的服務(wù)程序,基于該組件可將報(bào)表運(yùn)算結(jié)果以控件形式顯示于WindowsGUI程序中。UNIX的C接口:包括后臺(tái)服務(wù)程序與前端通訊的C程序,通訊部分的C代碼以源碼形式提交(.H和.C文件),基于該組件,可將報(bào)表應(yīng)用于UNIX下的C程序中。新一代報(bào)表模型數(shù)據(jù)統(tǒng)計(jì)模型數(shù)據(jù)統(tǒng)計(jì)模型是報(bào)表工具最重要的指標(biāo),它決定了報(bào)表工具最基本的制表能力,即在不編代碼的情況下能夠制作出何種報(bào)表。事實(shí)上,市場(chǎng)上的眾多傳統(tǒng)報(bào)表產(chǎn)品在處理復(fù)雜報(bào)表時(shí)確實(shí)存在明顯缺陷,大量報(bào)表仍需編寫(xiě)代碼準(zhǔn)備數(shù)據(jù)。潤(rùn)乾報(bào)表開(kāi)創(chuàng)性地提出了新一代數(shù)據(jù)統(tǒng)計(jì)模型,采用全新的概念方法比較徹底地解決了中國(guó)復(fù)雜報(bào)表中的各項(xiàng)問(wèn)題。多源分片多源分片是中國(guó)復(fù)雜報(bào)表的基本特征。多源是指一個(gè)報(bào)表的數(shù)據(jù)來(lái)源來(lái)自多個(gè)物理數(shù)據(jù)表(或類(lèi)似數(shù)據(jù)體),甚至是多個(gè)物理數(shù)據(jù)庫(kù)。這里的“多個(gè)”常常不是兩個(gè)三個(gè),而是七八個(gè)乃至十幾個(gè)。傳統(tǒng)工具的基本報(bào)表單元只支持單源報(bào)表,需要在報(bào)表設(shè)計(jì)前將多源轉(zhuǎn)化成單源處理。兩三個(gè)源尚可寫(xiě)SQL語(yǔ)句完成(JOIN或UNION等),但多到五六個(gè)源以上時(shí),一方面對(duì)應(yīng)的SQL語(yǔ)句過(guò)于復(fù)雜難以維護(hù),另一方面運(yùn)行效率也很低,這時(shí)常常要編寫(xiě)存儲(chǔ)過(guò)程或其它代碼來(lái)準(zhǔn)備數(shù)據(jù)了。如果多源來(lái)自多庫(kù),則更為復(fù)雜,無(wú)法直接寫(xiě)出復(fù)雜SQL或存儲(chǔ)過(guò)程,需要架構(gòu)專(zhuān)門(mén)的數(shù)據(jù)庫(kù)橋后才可以完成。某些傳統(tǒng)工具也所聲稱(chēng)的支持多源,實(shí)際上就是指多數(shù)據(jù)庫(kù)支持,把數(shù)據(jù)庫(kù)橋功能集成進(jìn)入報(bào)表工具中,但真正到報(bào)表設(shè)計(jì)時(shí)仍然只能單源。多源往往帶來(lái)分片,正是由于分片,使得報(bào)表設(shè)計(jì)必須直接基于多源進(jìn)行,而不能先將多源轉(zhuǎn)成單源進(jìn)行。有相當(dāng)一部分分片報(bào)表無(wú)論如何也不可能換成單源處理,部分能轉(zhuǎn)成單源的報(bào)表處理也非常繁瑣。分片是指報(bào)表的縱向或橫向或雙向同時(shí)被分成了多個(gè)區(qū)域,每個(gè)區(qū)域擴(kuò)展重復(fù)規(guī)則不同,而又可能相互運(yùn)算。傳統(tǒng)工具能夠處理的上下格式一致和列方向固定的分片報(bào)表(即可由多源轉(zhuǎn)成單源的報(bào)表),但會(huì)迫使用戶(hù)編寫(xiě)復(fù)雜的SQL(UNION+JOIN)和代碼準(zhǔn)備數(shù)據(jù),導(dǎo)致工作量大且維護(hù)困難;對(duì)于橫向分片數(shù)較多報(bào)表,由于必須采用JOIN方式準(zhǔn)備數(shù)據(jù),關(guān)聯(lián)條件復(fù)雜時(shí)很可能導(dǎo)致出O(Nk)的高計(jì)算復(fù)雜度(k為分片數(shù)),性能很低。表1是個(gè)典型的縱向分片報(bào)表,數(shù)據(jù)區(qū)從上至下分成了幾片,先是一片按客戶(hù)匯總的兩級(jí)分組區(qū)域,然后是兩個(gè)固定計(jì)算行,接下來(lái)又是一片按年度匯總的一級(jí)分組區(qū)域,最后又是一個(gè)固定的合計(jì)行。各片分組層數(shù)不同,而且變動(dòng)與固定固定結(jié)合,而且各片之間還有數(shù)據(jù)溝通(某些計(jì)算行的值是由其它行計(jì)算出來(lái)的)。這種上下格式不一致的報(bào)表,其數(shù)據(jù)源不可能組織成單源(各片列數(shù)不同),也就不可能被傳統(tǒng)工具實(shí)現(xiàn)。表1我們把表1橫過(guò)來(lái)擺形成表2,成為一個(gè)橫向分片表。類(lèi)似的,也是有兩片分組層數(shù)不同的變列區(qū)域和幾個(gè)固定的計(jì)算列混合而成。傳統(tǒng)工具只提供比較死板的交叉報(bào)表模型處理變列報(bào)表,其中的集合運(yùn)算只有固定的幾種選擇,不可隨意加列,更不可能有多片變列區(qū)域,而這種復(fù)雜的動(dòng)靜混合交叉表就只能手工編程動(dòng)態(tài)加列實(shí)現(xiàn)。表2為了解決多源分片的問(wèn)題,許多傳統(tǒng)工具引入了子報(bào)表的概念。把每個(gè)分片做成一個(gè)子表,然后再在主表中拼接起來(lái)。如上述的表1理論上是可以通過(guò)子表拼接完成,但實(shí)際上仍非常煩瑣。子表割裂了整表的一致性,一張報(bào)表被分成了多個(gè)小表,難以統(tǒng)一處理,給維護(hù)管理工作帶來(lái)麻煩。從格式上看,各個(gè)子表各自獨(dú)立,很難將格線統(tǒng)一對(duì)齊,某個(gè)子表的格式進(jìn)行了調(diào)整,所有其它子表都需要改動(dòng),這是極其繁瑣的工作。而且每個(gè)子表的大小不固定(可能隨數(shù)據(jù)記錄數(shù)而變化),由于傳統(tǒng)工具的行列不對(duì)稱(chēng)(下面還會(huì)談到),縱向排列的幾個(gè)子表可以自動(dòng)擺位,而橫向則不行,如上述的表2即使用子表也無(wú)法完成(數(shù)據(jù)可以拼出,但格式無(wú)法拼出)。而且,主子表之間和子表相互之間都無(wú)法溝通數(shù)據(jù),只能將主表的數(shù)據(jù)作為參數(shù)傳遞給子表,子表無(wú)法帶回信息,也無(wú)法向其它子表提供信息。這時(shí),整表的混合運(yùn)算將非常困難,必須單獨(dú)計(jì)算,無(wú)法采用某些子表的中間運(yùn)算結(jié)果,不僅書(shū)寫(xiě)復(fù)雜,運(yùn)算效率也降低。表3就是個(gè)典型的主從表,當(dāng)然也是典型的多源分片報(bào)表。主記錄中的金額顯然是明細(xì)信息中各產(chǎn)品金額的和,而在傳統(tǒng)工具的主子表模型中,主表的合計(jì)值不能引用子表的數(shù)據(jù),必須自行重新計(jì)算。表3潤(rùn)乾報(bào)表則直接支持多源(集)設(shè)計(jì),在同一張報(bào)表中可同時(shí)引用多個(gè)數(shù)據(jù)集,摒棄了傳統(tǒng)死板的條帶式擴(kuò)展模型,而代之以獨(dú)創(chuàng)的單元格擴(kuò)展方案,各數(shù)據(jù)集即可以獨(dú)立擴(kuò)展,也可以相互引用,擴(kuò)展部分與固定部分可自由結(jié)合;而特有的主格關(guān)聯(lián)技術(shù)則可靈活地決定各級(jí)統(tǒng)計(jì)的范圍,保證匯總運(yùn)算的合理性與正確性。表1在潤(rùn)乾報(bào)表中將如下設(shè)計(jì):需要根據(jù)數(shù)據(jù)變動(dòng)的行(5/6行)采用單元格擴(kuò)展(B5/C5格)機(jī)制(其中的ds1.group函數(shù)即負(fù)責(zé)擴(kuò)展重復(fù)),而中間的固定行(8-11行)則可直接寫(xiě)上,下一片變動(dòng)行(13/14行)又采用單元格擴(kuò)展(B13格)進(jìn)行(ds4.group函數(shù)),兩片擴(kuò)展分別基于不同的數(shù)據(jù)集(ds1和ds4),且層數(shù)不同,右邊的sum運(yùn)算中還能引用這些格值,整個(gè)報(bào)表即分片又統(tǒng)一,完美地解決了多源分片問(wèn)題。完成表2只要簡(jiǎn)單地將相關(guān)的擴(kuò)展單元格改變位置和方向即可,如下圖所示,潤(rùn)乾報(bào)表在行方向的擴(kuò)展能力能夠完全應(yīng)用在列方向上(橫向擴(kuò)展),使得中國(guó)報(bào)表中常見(jiàn)的橫向分片、多片變動(dòng)、動(dòng)靜結(jié)合的問(wèn)題很容易解決。對(duì)于表3這種主子表,在潤(rùn)乾報(bào)表無(wú)需借助子表概念完成,明細(xì)表(8-10行)本身可以自行擴(kuò)展重復(fù),而且由于了設(shè)置主格關(guān)聯(lián),整片明細(xì)表會(huì)自動(dòng)跟隨主記錄重復(fù),而且主細(xì)表間可自由溝通信息,如E3格中的金額合計(jì)可直接由G9格中金額明細(xì)計(jì)算出來(lái)(表達(dá)式SUM(G9{}))。不完全劃分不完全劃分是中國(guó)復(fù)雜報(bào)表中的典型特征之一。傳統(tǒng)工具中的數(shù)據(jù)分組延用了關(guān)系數(shù)據(jù)庫(kù)中的相應(yīng)概念,為完全規(guī)則劃分,即劃分標(biāo)準(zhǔn)一致且有規(guī)則(一般都按某個(gè)字段或表達(dá)式),所有事實(shí)都必須出現(xiàn)且只出現(xiàn)一次,分組值次序與原數(shù)據(jù)記錄次序一致。與完全劃分相反,在報(bào)表匯總中卻常常需要不規(guī)則劃分,即劃分標(biāo)準(zhǔn)看不出規(guī)律(常常只能窮舉),所有事實(shí)不一定全部出現(xiàn)在分組結(jié)果中、個(gè)別事實(shí)還可能重復(fù)出現(xiàn),次序也與原數(shù)據(jù)記錄無(wú)關(guān)。固定分組是不規(guī)則劃分的常見(jiàn)表現(xiàn)。表4表4是個(gè)含有不規(guī)則劃分的人員統(tǒng)計(jì)表(同時(shí)也是個(gè)分片報(bào)表)。年齡段的分組就是個(gè)不規(guī)則劃分,劃分規(guī)律不明確,只能窮舉出來(lái);分組不完全,沒(méi)有列出所有的部門(mén),每個(gè)一級(jí)部門(mén)中還可能有一些不屬于任何二級(jí)部門(mén)的人(其他類(lèi))。表5表5則是另一種形態(tài)的不規(guī)則劃分報(bào)表。它的地區(qū)分組有三個(gè)特點(diǎn):華北部分地區(qū)中未包括內(nèi)蒙古,出現(xiàn)了不完全分組;山東和青島有重復(fù)的部分,出現(xiàn)了可重分組;而且地區(qū)次序是確定這樣排列的,和數(shù)據(jù)記錄的次序無(wú)關(guān),是個(gè)典型的固定行分組報(bào)表。這兩個(gè)報(bào)表用傳統(tǒng)工具實(shí)現(xiàn)都較為困難,雖然報(bào)表格式并不復(fù)雜,但由于出現(xiàn)了不規(guī)則劃分,無(wú)法直接用報(bào)表工具的分組功能完成,只能編程把數(shù)據(jù)準(zhǔn)備成一個(gè)單層的二維表數(shù)據(jù)源,即加大了工作量,又很難體現(xiàn)數(shù)據(jù)之間的層次關(guān)系。潤(rùn)乾報(bào)表為分組運(yùn)算提供更多的過(guò)濾和排序選項(xiàng),可生成不完全分組;采用內(nèi)建數(shù)據(jù)集分組技術(shù)可以很好地完成固定分組及可重分組的問(wèn)題,而特有的plot集合函數(shù)則解決了按段分組的困難。表4可采用plot函數(shù)進(jìn)行如下設(shè)計(jì):C4格中的plot函數(shù)負(fù)責(zé)完成按段分組,可隨意填寫(xiě)分段方案;A5格的分組擴(kuò)展可加上過(guò)濾條件;B5格擴(kuò)展出有規(guī)律的二級(jí)部門(mén),而其他類(lèi)則可單列一行,其計(jì)算公式可與上面的格分別填寫(xiě)(C5/C6格)。表5則可以采用內(nèi)建數(shù)據(jù)集處理固定可重分組:先根據(jù)報(bào)表展現(xiàn)的行設(shè)計(jì)內(nèi)建數(shù)據(jù)集與之一一對(duì)應(yīng),然后在報(bào)表設(shè)計(jì)中采用內(nèi)建數(shù)據(jù)集進(jìn)行擴(kuò)展(A5格),同行上其它各格的計(jì)算值都引用該格值(B5-H5),從而輕松地完成了固定可重分組報(bào)表。自由格間運(yùn)算除不完全劃分外,自由格間運(yùn)算是中國(guó)復(fù)雜報(bào)表另一個(gè)典型特征。所有的報(bào)表工具都會(huì)提供一些計(jì)算列的功能,在原始數(shù)據(jù)基礎(chǔ)上再計(jì)算出一些別的列值或統(tǒng)計(jì)值,這是報(bào)表展現(xiàn)中是不可缺少的功能。傳統(tǒng)工具一般只提供同行內(nèi)的格間運(yùn)算和針對(duì)某組(或全體)的集合運(yùn)算,對(duì)于常見(jiàn)的跨行組運(yùn)算則相當(dāng)困難。個(gè)別傳統(tǒng)工具提供了簡(jiǎn)單的跨行能力,如可以引用上一行數(shù)據(jù),而跨組則無(wú)能為力;對(duì)于集合運(yùn)算只提供個(gè)別固定的函數(shù),如取第一名、算累計(jì)值等,無(wú)法組合出通用集合運(yùn)算,如取第二名、算累計(jì)的乘積等。某些帶條件的運(yùn)算更是無(wú)法處理,如計(jì)算語(yǔ)文成績(jī)?cè)?0分以上的同學(xué)的數(shù)學(xué)成績(jī)總和。除了有規(guī)律的跨行組運(yùn)算外,報(bào)表中還可能會(huì)有一些隨意的獨(dú)立格運(yùn)算,其值可能是報(bào)表中的任意幾個(gè)其它格運(yùn)算出來(lái),甚至還可能會(huì)引用到報(bào)表外的數(shù)據(jù)(比如和數(shù)據(jù)庫(kù)中的數(shù)據(jù)再次運(yùn)算等)。由于傳統(tǒng)工具沒(méi)有很好的運(yùn)算后報(bào)表數(shù)據(jù)項(xiàng)命名機(jī)制(傳統(tǒng)工具只能用列名命名設(shè)計(jì)階段的數(shù)據(jù)單元),很難精確描述數(shù)據(jù)引用關(guān)系,只能寫(xiě)出規(guī)律性很強(qiáng)的表達(dá)式,但隨意的獨(dú)立格運(yùn)算會(huì)就使傳統(tǒng)工具無(wú)法處理,而報(bào)表外的數(shù)據(jù)引用更是只能借助腳本或外圍應(yīng)用程序,導(dǎo)致代碼極為混亂。表6是個(gè)典型的跨行組運(yùn)算報(bào)表,其中有比上期(跨行)和比去年同期(跨組)運(yùn)算,這種報(bào)表在傳統(tǒng)工具中常常又必須編程準(zhǔn)備數(shù)據(jù)。表7則展現(xiàn)了另一些自由格間運(yùn)算,如計(jì)算排名,需要在同組中數(shù)出比當(dāng)前值大的數(shù)的個(gè)數(shù)。下方的幾個(gè)獨(dú)立格中又引用了表格中數(shù)據(jù),但又非整組全部引用,而是帶了某種條件(前三名),最下方的一個(gè)格中還會(huì)引用到報(bào)表外的數(shù)據(jù)(北京市的全部銷(xiāo)售額不在報(bào)表中)。表6表7這兩個(gè)報(bào)表的樣式都不復(fù)雜,但這些格間運(yùn)算會(huì)讓傳統(tǒng)工具非常為難。只能再次依靠程序代碼,把數(shù)據(jù)事先計(jì)算好直接往報(bào)表里填。潤(rùn)乾報(bào)表則開(kāi)創(chuàng)性地提出了單元格層次坐標(biāo)與相關(guān)格集的概念,可以則擴(kuò)展后的每個(gè)單元格或格集進(jìn)行精確命名,即可在設(shè)計(jì)時(shí)自由引用任何一個(gè)擴(kuò)展后單元格,而且還可以方便地嵌入SQL或其它函數(shù)以引用外部信息。表6在潤(rùn)乾報(bào)表中將如下設(shè)計(jì):D3格中的C3[-1]和E3格中的C3[A3:-1,B3:+0]即是層次坐標(biāo)寫(xiě)法,用以精確定位擴(kuò)展后的每個(gè)單元格,從而使得跨行組運(yùn)算可以方便地進(jìn)行。,表7在潤(rùn)乾報(bào)表中的的設(shè)計(jì)方案:C4格的表達(dá)式中應(yīng)用了層次坐標(biāo)和相關(guān)格集概念,用以計(jì)算其對(duì)應(yīng)的B4在擴(kuò)展后的B4格組(擴(kuò)展后會(huì)有多個(gè)B4)的次序(E4和F4的關(guān)系類(lèi)似)。B6表達(dá)式中有帶條件的引用(C4<=3,即前三名),B7格中又引用了另一個(gè)數(shù)據(jù)集ds的值。整個(gè)報(bào)表的格間運(yùn)算非常自由,而潤(rùn)乾報(bào)表也能夠輕松處理。行列對(duì)稱(chēng)另外,所有以上的討論中還貫穿了一點(diǎn),即行列對(duì)稱(chēng)??v方向上擁有的自動(dòng)復(fù)制擴(kuò)展的能力需要完全實(shí)現(xiàn)在橫方向上。報(bào)表可以橫向分組、橫向分片,對(duì)于橫向變列的報(bào)表可以定義跨列組運(yùn)算等。傳統(tǒng)工具有行式表和交叉表兩種互不通用的模型,行式表完全不支持列向變動(dòng);而交叉表非常死板,雖然可以支持多層變列,但只能有一片變列區(qū),而且其中的匯總運(yùn)算很簡(jiǎn)單,只有固定的一些函數(shù),不可隨便增加運(yùn)算行列。傳統(tǒng)工具的行列嚴(yán)重不對(duì)稱(chēng),列方向能力遠(yuǎn)遠(yuǎn)弱于行方向,稍復(fù)雜些的交叉表無(wú)法實(shí)現(xiàn)。傳統(tǒng)工具還習(xí)慣于把報(bào)表分成幾種孤立的類(lèi)型,如網(wǎng)格報(bào)表、分組報(bào)表、主從報(bào)表、交叉報(bào)表等,某種類(lèi)型的報(bào)表可以解決某種問(wèn)題。但事實(shí)上,報(bào)表的上述復(fù)雜性常常是混合在一起的,同一張報(bào)表中很可能包含了所有的問(wèn)題,這要求我們給出完整的解決方案,而不能單獨(dú)分別處理。當(dāng)這幾種困難交織到一起時(shí),整個(gè)問(wèn)題的復(fù)雜度要遠(yuǎn)比解決幾個(gè)單個(gè)問(wèn)題的總和要大得多。而潤(rùn)乾報(bào)表則天然行列對(duì)稱(chēng),行方向擁有的數(shù)據(jù)擴(kuò)展能力在列方向也都有,所有報(bào)表均在統(tǒng)一的處理模型下完成,無(wú)須專(zhuān)門(mén)的交叉表處理方案,在交叉表中也可以自由編寫(xiě)匯總表達(dá)式。中國(guó)復(fù)雜報(bào)表的各種困難在潤(rùn)乾報(bào)表中統(tǒng)一在一起得到了充分的解決。數(shù)據(jù)填報(bào)模型數(shù)據(jù)填寫(xiě)是中國(guó)報(bào)表應(yīng)用中的一個(gè)重要需求,廣泛應(yīng)用于金融業(yè)和政府行業(yè)。而相當(dāng)多的報(bào)表工具(特別是國(guó)外產(chǎn)品)完全不支持?jǐn)?shù)據(jù)填寫(xiě)報(bào)送。而潤(rùn)乾報(bào)表則有非常出色的數(shù)據(jù)填報(bào)能力。同統(tǒng)計(jì)匯總類(lèi)似,填報(bào)解決方案中最關(guān)鍵的因素仍然是數(shù)據(jù)模型,通俗地說(shuō),就是數(shù)據(jù)如何寫(xiě)入數(shù)據(jù)庫(kù)的方案。填報(bào)本身不是目的,填報(bào)是為了采集數(shù)據(jù)上來(lái)分析利用,因此需要將填報(bào)收集的數(shù)據(jù)直接按其邏輯結(jié)構(gòu)提交到開(kāi)放的關(guān)系型數(shù)據(jù)庫(kù)中,才能有效地被其他應(yīng)用系統(tǒng)和統(tǒng)計(jì)分析系統(tǒng)所利用。傳統(tǒng)方案的缺陷有個(gè)別國(guó)內(nèi)傳統(tǒng)報(bào)表工具能夠支持?jǐn)?shù)據(jù)填寫(xiě),一般有三種方式處理數(shù)據(jù)入庫(kù)。采用中間文件,填寫(xiě)結(jié)果寫(xiě)入一個(gè)中間數(shù)據(jù)文件(如EXCEL填報(bào)),某些填報(bào)方案能提供少量一些基于這些中間文件的統(tǒng)計(jì)匯總,但要完全利用則須將這些數(shù)據(jù)進(jìn)行結(jié)構(gòu)化成后轉(zhuǎn)存到關(guān)系數(shù)據(jù)庫(kù)中。而將非結(jié)構(gòu)化的數(shù)據(jù)轉(zhuǎn)成可以體現(xiàn)業(yè)務(wù)規(guī)則的結(jié)構(gòu)化數(shù)據(jù)是比較困難的工作,需要為每種報(bào)表編寫(xiě)相應(yīng)程序去處理。采用固定的數(shù)據(jù)結(jié)構(gòu),填報(bào)方案提供一種“萬(wàn)能”的數(shù)據(jù)結(jié)構(gòu)將填好的數(shù)據(jù)寫(xiě)入,其數(shù)據(jù)結(jié)構(gòu)常常是只有三個(gè)字段{行號(hào)/列號(hào)/數(shù)值,或與之類(lèi)似),這種方法只是機(jī)械地將數(shù)據(jù)寫(xiě)入了數(shù)據(jù)庫(kù),數(shù)據(jù)結(jié)構(gòu)并未沒(méi)有體現(xiàn)業(yè)務(wù)規(guī)則,在使用時(shí)仍要再次進(jìn)行轉(zhuǎn)換工作。根據(jù)業(yè)務(wù)規(guī)則設(shè)計(jì)要保存的數(shù)據(jù)結(jié)構(gòu),然后根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)要填寫(xiě)的報(bào)表,每個(gè)要填寫(xiě)單元格的數(shù)據(jù)都有唯一對(duì)應(yīng)數(shù)據(jù)庫(kù)的字段,這樣在入庫(kù)時(shí)就可以直接寫(xiě)成結(jié)構(gòu)化的數(shù)據(jù)。這種方案的入庫(kù)機(jī)制是合理的,但報(bào)表是根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的,而庫(kù)表對(duì)應(yīng)關(guān)系常常都非常簡(jiǎn)單,結(jié)果導(dǎo)致報(bào)表不可自由繪制,只能提供簡(jiǎn)單的幾種死板表樣,不能滿足用戶(hù)需求。某些傳統(tǒng)填報(bào)方案的數(shù)據(jù)回填機(jī)制所有這些填報(bào)方案的主要問(wèn)題是無(wú)法解決能體現(xiàn)業(yè)務(wù)規(guī)則的數(shù)據(jù)表與報(bào)表單元格之間的匹配關(guān)系。從而導(dǎo)致前期報(bào)表設(shè)計(jì)或者后期數(shù)據(jù)入庫(kù)的極大困難。而潤(rùn)乾報(bào)表獨(dú)創(chuàng)的自由庫(kù)表關(guān)聯(lián)技術(shù)則很好地解決了這一問(wèn)題。自由庫(kù)表關(guān)聯(lián)潤(rùn)乾報(bào)表的填報(bào)表允許數(shù)據(jù)庫(kù)表列與報(bào)表的單元格之間進(jìn)行任意匹配,設(shè)計(jì)報(bào)表樣式時(shí)不需要考慮數(shù)據(jù)結(jié)構(gòu),反之設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)時(shí)也只需要考慮業(yè)務(wù)規(guī)則而不用管報(bào)表樣式,任意的報(bào)表樣式和數(shù)據(jù)結(jié)構(gòu)之間都能建立起對(duì)應(yīng)關(guān)系。而且這些對(duì)應(yīng)關(guān)系還有自動(dòng)擴(kuò)展的能力,即有規(guī)律的表區(qū)只要設(shè)置一遍基本的對(duì)應(yīng)關(guān)系,表區(qū)中其它單元格與數(shù)據(jù)庫(kù)的對(duì)應(yīng)關(guān)系可以自動(dòng)擴(kuò)展出來(lái)。如行式表填報(bào)時(shí),只需要設(shè)置某一行的庫(kù)表對(duì)應(yīng)關(guān)系,其它行都可以自動(dòng)擴(kuò)展,而交叉表則只要設(shè)計(jì)某一格的對(duì)應(yīng)關(guān)系即可,其它格也可以自動(dòng)擴(kuò)展出來(lái)。總結(jié)起來(lái)說(shuō),就是任意匹配,自動(dòng)擴(kuò)展。主從填報(bào)(自由/行式混合)交叉填報(bào)數(shù)據(jù)來(lái)去自由潤(rùn)乾報(bào)表的填報(bào)方案還支持自由的數(shù)據(jù)來(lái)去方案,具體地講,就是有來(lái)有去,來(lái)去無(wú)關(guān),一來(lái)多去。如下圖所示:?jiǎn)卧裰械臄?shù)據(jù)都有來(lái)源,現(xiàn)實(shí)中常常需要制作多級(jí)匯總填報(bào)表,某一中間層的填報(bào)表是先由下級(jí)統(tǒng)計(jì)出來(lái)的,而非空白格子,這樣就要求單元格的數(shù)據(jù)要有個(gè)來(lái)源;填寫(xiě)的數(shù)據(jù)要入庫(kù),則需要有個(gè)去處,來(lái)源和去處經(jīng)常可能是無(wú)關(guān)的,如可以將從A表中統(tǒng)計(jì)出來(lái)的結(jié)果修改后填入B表;而且一個(gè)單元格的去處可以有多個(gè)(來(lái)源當(dāng)然不可能有多個(gè)),可以同時(shí)寫(xiě)入B1表、B2表、…,甚至可能是多個(gè)數(shù)據(jù)庫(kù)(如同一批企業(yè)數(shù)據(jù)要同時(shí)寫(xiě)給稅務(wù)部門(mén)和統(tǒng)計(jì)部門(mén))。功能詳細(xì)描述報(bào)表設(shè)計(jì)類(lèi)EXCEL的報(bào)表設(shè)計(jì)方式類(lèi)EXCEL的編輯潤(rùn)乾報(bào)表采用類(lèi)EXCEL的方式進(jìn)行報(bào)表的繪制和編輯,如下圖:潤(rùn)乾報(bào)表主編輯界面采用類(lèi)EXCEL的可視化網(wǎng)格式編輯方案,不僅可所見(jiàn)即所得地繪制出復(fù)雜表樣,而且可免去傳統(tǒng)控件拖拽式編輯方式對(duì)齊數(shù)據(jù)項(xiàng)的繁瑣,在保證格式的整齊美觀的同時(shí)大幅提高繪制效率,避免打印與顯示因分辨率不一致而出現(xiàn)的失真現(xiàn)象。另外,熟悉EXCEL使用的人員相當(dāng)多,更易于報(bào)表繪制工作的上手。這種方案已逐步成為報(bào)表樣式繪制的主流。讀入EXCEL文件潤(rùn)乾報(bào)表還可直接讀入EXCEL繪制好的報(bào)表格式,然后在報(bào)表設(shè)計(jì)器中進(jìn)一步修改,以充分保護(hù)用戶(hù)以往在EXCEL上的積累,大大減少重復(fù)工作。Excel原表潤(rùn)乾報(bào)表直接讀入EXCEL報(bào)表格式(文檔類(lèi)型即為xls)公式調(diào)整潤(rùn)乾報(bào)表在編輯過(guò)程中能夠象EXCEL一樣自動(dòng)調(diào)整公式,如在單元格B1中引用了C1,當(dāng)B列和C列間插入一列時(shí),引用的C1將會(huì)自動(dòng)變成D1,這對(duì)于報(bào)表中表達(dá)式編輯非常必要。原報(bào)表,B2中的表達(dá)式引用了C2和D3在C列前插入一列后,B2格的表達(dá)式自動(dòng)調(diào)整界面及基本功能潤(rùn)乾報(bào)表提供了非常美觀的外觀界面,可有多種配色風(fēng)格。產(chǎn)品采用全中文菜單和對(duì)話框,常用的編輯手段均有快捷工具條以提高設(shè)計(jì)效率。在編輯過(guò)程中,提供縮放編輯功能,可以根據(jù)需要靈活設(shè)置縮放比例,更方便地進(jìn)行報(bào)表的格式調(diào)整。在報(bào)表設(shè)計(jì)器中,可直接預(yù)覽報(bào)表,并打印或?qū)С龀蒃XCEL/PDF等外部文件格式。單元格類(lèi)型潤(rùn)乾報(bào)表的單元格支持如下類(lèi)型:普通文本:一般的數(shù)值和文字,可以支持斜線。這種類(lèi)型可以通過(guò)象EXCEL一樣的表達(dá)式,從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)和進(jìn)行各種計(jì)算。該類(lèi)單元格的顯示值可與數(shù)據(jù)值分開(kāi),從而實(shí)現(xiàn)內(nèi)部代碼與顯示之間的對(duì)應(yīng),顯示內(nèi)容可來(lái)自固定列表,也可來(lái)自數(shù)據(jù)庫(kù)中的字典表圖片文件:固定的圖片,如企業(yè)LOGO圖片字段:來(lái)自數(shù)據(jù)庫(kù)字段的圖片,如人員照片子報(bào)表:該單元格中將嵌入或引入一個(gè)子報(bào)表統(tǒng)計(jì)圖:該單元格中將嵌入一個(gè)統(tǒng)計(jì)圖HTML文本:該單元格內(nèi)的文字(或表達(dá)式的運(yùn)算結(jié)果)將被理解成為一段HTML代碼,在報(bào)表WEB展現(xiàn)時(shí)將被嵌入整個(gè)報(bào)表的HTML文本中,從而可實(shí)現(xiàn)用戶(hù)自定義的顯示或編輯方案通過(guò)各種類(lèi)型的單元格,可以在報(bào)表中添加各種元素,實(shí)現(xiàn)各種復(fù)雜的報(bào)表。潤(rùn)乾報(bào)表的單元格類(lèi)型帶斜線和圖片的報(bào)表(編輯畫(huà)面),D1格是個(gè)圖片字段帶斜線和圖片的報(bào)表(運(yùn)算畫(huà)面),D1格已被運(yùn)算成圖片套打繪制及相關(guān)功能底圖描繪實(shí)現(xiàn)套打繪制潤(rùn)乾報(bào)表采用底圖描繪的方案解決套打時(shí)的報(bào)表繪制問(wèn)題??蓪⑿枰状虻钠睋?jù)掃描成圖片,作為報(bào)表設(shè)計(jì)的底圖,然后依照?qǐng)D片上格線進(jìn)行報(bào)表描繪,可保證繪制出的報(bào)表能夠精確地套打進(jìn)入印刷票據(jù)中。底圖描繪方式進(jìn)行套打繪制(下面的表格是個(gè)底圖)精確度量等潤(rùn)乾報(bào)表提供以毫米為單位的精確度量,可保證報(bào)表的繪制和輸出完全與紙張精準(zhǔn)一致。并會(huì)根據(jù)紙張大小在設(shè)計(jì)界面中畫(huà)出紙邊虛線,以提示設(shè)計(jì)人員分頁(yè)位置。多數(shù)據(jù)源潤(rùn)乾報(bào)表天然支持多數(shù)據(jù)源,同一張報(bào)表的數(shù)據(jù)來(lái)源可以是多個(gè)數(shù)據(jù)集甚至是多個(gè)數(shù)據(jù)庫(kù)或是用戶(hù)自定義的數(shù)據(jù)集。 通過(guò)這一功能,不僅可以采集來(lái)自不同來(lái)源的數(shù)據(jù),更重要的是在潤(rùn)乾報(bào)表中可以在報(bào)表內(nèi)直接使用多個(gè)不同數(shù)據(jù)集,而不需要強(qiáng)行用復(fù)雜的視圖把它們連接在一起,從而大大提高了報(bào)表設(shè)計(jì)效率和提高了靈活性。潤(rùn)乾報(bào)表多數(shù)據(jù)源數(shù)據(jù)源的定義畫(huà)面潤(rùn)乾報(bào)表支持各種數(shù)據(jù)集(SQL/存儲(chǔ)過(guò)程/文件/自定義/內(nèi)建/OLAPSERVER)內(nèi)建數(shù)據(jù)集潤(rùn)乾報(bào)表支持內(nèi)建數(shù)據(jù)集,即某個(gè)數(shù)據(jù)集的數(shù)據(jù)被寫(xiě)進(jìn)報(bào)表模板文件之中,內(nèi)建數(shù)據(jù)集和外部數(shù)據(jù)集有完全同樣的運(yùn)算,如擴(kuò)展、過(guò)濾等。內(nèi)建數(shù)據(jù)集可有如下應(yīng)用:完成不規(guī)則劃分大量中國(guó)復(fù)雜報(bào)表均可能有不規(guī)則劃分要求(比如選擇若干個(gè)城市顯示相關(guān)的數(shù)據(jù)),潤(rùn)乾報(bào)表可以將這些不規(guī)則劃分(如可重分組、固定分組)方案設(shè)置進(jìn)僅于當(dāng)前報(bào)表相關(guān)的內(nèi)建數(shù)據(jù)集中,而不必在數(shù)據(jù)庫(kù)中創(chuàng)建冗余的數(shù)據(jù)表或視圖??蓞⒁?jiàn)2.1.2中的例子。脫機(jī)瀏覽潤(rùn)乾報(bào)表提供將外部數(shù)據(jù)集轉(zhuǎn)換為內(nèi)建數(shù)據(jù)集的功能,這樣即可將已做好的報(bào)表數(shù)據(jù)源綁定進(jìn)報(bào)表,從而做到脫機(jī)(不連接數(shù)據(jù)庫(kù))運(yùn)算和瀏覽,這一功能對(duì)于遠(yuǎn)程調(diào)試報(bào)表有巨大幫助(遠(yuǎn)程技術(shù)人員可以不必依賴(lài)于用戶(hù)的數(shù)據(jù)環(huán)境而調(diào)試報(bào)表中的錯(cuò)誤)內(nèi)建數(shù)據(jù)集綁定報(bào)表數(shù)據(jù)以實(shí)現(xiàn)脫機(jī)運(yùn)算和瀏覽表達(dá)式與函數(shù)表達(dá)式潤(rùn)乾報(bào)表支持基于數(shù)據(jù)集和基于單元格的兩類(lèi)表達(dá)式,并且可以混合書(shū)寫(xiě),如ds1.sum(amount);B3+C3+sum(D3{});ds1.select(id,typeid=C2)等函數(shù)潤(rùn)乾報(bào)表提供六類(lèi)系統(tǒng)函數(shù):數(shù)據(jù)集函數(shù)、單元格函數(shù)、數(shù)學(xué)函數(shù)、字符串函數(shù)、日期時(shí)間函數(shù)、轉(zhuǎn)換函數(shù)。同時(shí)也允許用戶(hù)自定義JAVA函數(shù)。潤(rùn)乾報(bào)表的函數(shù)功能非常強(qiáng)大,除了常規(guī)的計(jì)算函數(shù)外,更能針對(duì)報(bào)表和統(tǒng)計(jì)分析的需要提供了特有的集合處理函數(shù),可用以實(shí)現(xiàn)報(bào)表自動(dòng)擴(kuò)展、分組等變化。例如,潤(rùn)乾報(bào)表提供plot函數(shù)實(shí)現(xiàn)中國(guó)復(fù)雜報(bào)表中常見(jiàn)的按段分組需求,除分組方案外,plot函數(shù)與普通分組函數(shù)一致,也可以實(shí)現(xiàn)多層或交叉分段匯總。例子可參見(jiàn)2.1.2節(jié)。分片混合擴(kuò)展與相關(guān)引用潤(rùn)乾報(bào)表摒棄傳統(tǒng)條帶擴(kuò)展方案而采用單元格擴(kuò)展機(jī)制,可以很容易完成同一報(bào)表中的分片擴(kuò)展(并列或?qū)哟尉桑?,并可?shí)現(xiàn)固定行列與變動(dòng)行列混合編排。各擴(kuò)展片之間還可相互引用數(shù)據(jù)而并非完全無(wú)關(guān)。例子可參見(jiàn)2.1.1節(jié)。靈活快捷的分組匯總潤(rùn)乾報(bào)表可簡(jiǎn)單完成帶有多級(jí)分組與匯總的普通行式報(bào)表,采用單元格分組函數(shù)實(shí)現(xiàn)分組擴(kuò)展,沒(méi)有明顯的分組區(qū)域,從而在增刪分組或改變分組次序時(shí)不必象傳統(tǒng)報(bào)表工具需要重新設(shè)計(jì)分組區(qū)內(nèi)數(shù)據(jù)表達(dá)式。潤(rùn)乾報(bào)表獨(dú)創(chuàng)的主格關(guān)聯(lián)機(jī)制決定了統(tǒng)計(jì)匯總的范圍,匯總表達(dá)式可以擺放在報(bào)表中任何合理的位置(分組上/下邊或在分組明細(xì)同行合并成一個(gè)大格)。帶分組合計(jì)的行式報(bào)表(設(shè)計(jì))潤(rùn)乾報(bào)表的分組采用數(shù)據(jù)集group函數(shù)完成(A4/B4格中的表達(dá)式),沒(méi)有傳統(tǒng)的分組區(qū)域。合計(jì)表達(dá)式(E5/E6/I4/J4)可以放在任何地方(分組下邊或右邊),由主格關(guān)系機(jī)制決定其運(yùn)算范圍,而不是由位置來(lái)控制。還可以實(shí)現(xiàn)跨行組的序號(hào)大排隊(duì)(C4格)。該報(bào)表運(yùn)算結(jié)果如下:帶分組合計(jì)的行式報(bào)表(運(yùn)行)行列對(duì)稱(chēng)的擴(kuò)展機(jī)制潤(rùn)乾報(bào)表行列對(duì)稱(chēng)設(shè)計(jì),無(wú)須專(zhuān)門(mén)的交叉表模型處理列向變動(dòng)的報(bào)表。多層、分片交叉報(bào)表均可輕松實(shí)現(xiàn),并可類(lèi)似行式報(bào)表一樣編寫(xiě)自由的匯總運(yùn)算。多層交叉帶匯總報(bào)表(設(shè)計(jì))上面報(bào)表中,A5/B5格運(yùn)行縱向擴(kuò)展,D3/D4格進(jìn)行橫向擴(kuò)展,雙向擴(kuò)展后即可形成交叉報(bào)表,中間部分的匯總運(yùn)算仍是自由填寫(xiě)的表達(dá)式(其中可引上左/上表頭的單元格值),而不必象傳統(tǒng)工具那樣必須是規(guī)定好的幾種運(yùn)算,充分體現(xiàn)行列對(duì)稱(chēng)的思想。運(yùn)算結(jié)果如下:多層交叉帶匯總報(bào)表(運(yùn)行)層次座標(biāo)潤(rùn)乾報(bào)表發(fā)明的層次坐標(biāo)和位移坐標(biāo)概念能夠?qū)U(kuò)展后單元格/集進(jìn)行命名,從而可以在表達(dá)式中精確描述出對(duì)其它單元格的引用,完美地解決自由格間運(yùn)算。有規(guī)律的單元格跨行組運(yùn)算可輕松實(shí)現(xiàn),對(duì)于無(wú)規(guī)則的任意運(yùn)算,潤(rùn)乾報(bào)表還提供類(lèi)EXCEL式的格間運(yùn)算。層次坐標(biāo)的例子參見(jiàn)2.1.3節(jié)。子報(bào)表潤(rùn)乾報(bào)表支持不限嵌套層數(shù)的子報(bào)表功能。子報(bào)表分為引入式和嵌入式兩種,引入式將子表數(shù)據(jù)和格式依次填報(bào)主表的單元格中,而嵌入式則將整個(gè)子表縮放后嵌入到主表的某個(gè)單元格中。嵌入式主報(bào)表定義子報(bào)表定義嵌入式子報(bào)表運(yùn)行結(jié)果(主子表的格線不對(duì)齊)引入式主報(bào)表定義子報(bào)表1子報(bào)表2子報(bào)表3引入式子報(bào)表運(yùn)行結(jié)果(子表延用主表的格線)統(tǒng)計(jì)圖的定義潤(rùn)乾報(bào)表的統(tǒng)計(jì)圖數(shù)據(jù)來(lái)源于報(bào)表內(nèi)而非重新再設(shè)置數(shù)據(jù)源,因而也可以支持多表多庫(kù)的統(tǒng)計(jì)圖。同一張報(bào)表可繪制多個(gè)統(tǒng)計(jì)圖,甚至可繪制在分組內(nèi),隨著數(shù)據(jù)分組一起擴(kuò)展成多個(gè)。統(tǒng)計(jì)圖數(shù)據(jù)定義圖形特性定義外觀屬性定義時(shí)間狀態(tài)圖定義報(bào)表參數(shù)與宏潤(rùn)乾報(bào)表一般意義的報(bào)表參數(shù)功能。參數(shù)有數(shù)據(jù)類(lèi)型,可以用于報(bào)表的數(shù)據(jù)源(SQL語(yǔ)句)或報(bào)表中的運(yùn)算表達(dá)式中。報(bào)表參數(shù)定義SQL語(yǔ)句中使用參數(shù)除參數(shù)外,潤(rùn)乾報(bào)表還提供特有的宏。宏沒(méi)有數(shù)據(jù)類(lèi)據(jù),僅是簡(jiǎn)單地在語(yǔ)句或表達(dá)式中替換。例如,可以將SQL語(yǔ)句中SELECT的列名或FROM的表名或ORDERBY的方向甚至整句SQL語(yǔ)句都作為宏而臨時(shí)改變,這樣將給使用者提供更加靈活的控制方式。舉例說(shuō)明,如果將一個(gè)SQL語(yǔ)句的WHERE條件中<100改成<200,可以采用普通意義的參數(shù),但若想將<100改成>200,則用參數(shù)就不可能作到了,但采用宏則可輕易完成。帶有參數(shù)和宏的報(bào)表B2格帶有參數(shù)。B6格中帶有宏,可用于替換參數(shù)無(wú)法完成的報(bào)表選出字段。向?qū)c工具潤(rùn)乾報(bào)表軟件提供了強(qiáng)有力的輔助工具,可以幫助用戶(hù)更方便、更高效地進(jìn)行報(bào)表設(shè)計(jì)。報(bào)表設(shè)計(jì)向?qū)?rùn)乾報(bào)表對(duì)于簡(jiǎn)單的行式、分組與交叉報(bào)表提供設(shè)計(jì)向?qū)?,用?hù)只需要選擇相應(yīng)的數(shù)據(jù)表列即可以自動(dòng)生成出報(bào)表。分組報(bào)表定義向?qū)Ы徊鎴?bào)表定義向?qū)Вㄐ辛卸x)交叉報(bào)表定義向?qū)Вㄖ刀x)SQL編輯器潤(rùn)乾報(bào)表提供標(biāo)準(zhǔn)SQL編輯對(duì)話框,用戶(hù)不必記憶數(shù)據(jù)庫(kù)表/字段名稱(chēng),可直接在SQL編輯器中選擇要操作的數(shù)據(jù)元素,設(shè)計(jì)查詢(xún)、排序條件等。同時(shí)潤(rùn)乾報(bào)表也支持直接輸入SQL語(yǔ)句。SQL語(yǔ)句編輯器(字段選擇)SQL語(yǔ)句編輯器(參數(shù)引用)中文語(yǔ)義層/表達(dá)式潤(rùn)乾報(bào)表支持中間語(yǔ)義層機(jī)制,開(kāi)發(fā)人員可將數(shù)據(jù)結(jié)構(gòu)事先以業(yè)務(wù)人員熟悉的術(shù)語(yǔ)進(jìn)行描述,在設(shè)計(jì)報(bào)表時(shí)即可直接采用這些語(yǔ)義信息,而不必直接面向物理數(shù)據(jù)結(jié)構(gòu)。同時(shí),潤(rùn)乾報(bào)表還支持中文表達(dá)式,如可以寫(xiě)類(lèi)似價(jià)格*數(shù)量這樣的表達(dá)式,使報(bào)表設(shè)計(jì)更加通俗易懂。數(shù)據(jù)表與字段的中文描述定義字段外觀預(yù)定義數(shù)據(jù)集字段中文定義公式編輯/函數(shù)幫助潤(rùn)乾報(bào)表提供可視化的表達(dá)式編輯對(duì)話框,用戶(hù)不必記憶系統(tǒng)提供的眾多函數(shù)與需要操作的數(shù)據(jù)集元素,表達(dá)式的大部分都可以簡(jiǎn)單地用鼠標(biāo)點(diǎn)擊出來(lái),而且對(duì)所有系統(tǒng)函數(shù)均有詳細(xì)的在線幫助。公式編輯器函數(shù)幫助報(bào)表展現(xiàn)輸出潤(rùn)乾報(bào)表不需安裝控件,可以實(shí)現(xiàn)純HTML報(bào)表方式,可以支持PDF,EXCEL等輸出,提供了全面的頁(yè)面與打印控制,能很多地滿足Web報(bào)表的展現(xiàn)需要。同時(shí),潤(rùn)乾報(bào)表對(duì)圖表有良好的支持,可以生成柱圖、餅圖、折線圖等二十幾種圖表。報(bào)表元素的外觀屬性潤(rùn)乾報(bào)表對(duì)報(bào)表元素提供非常豐富的外觀屬性,計(jì)有:潤(rùn)乾報(bào)表單元格外觀屬性列表字體、字號(hào)前景色、背景色,均支持調(diào)色板和透明顯示邊框:類(lèi)EXCEL,可設(shè)計(jì)線型線寬對(duì)齊方式:左中右/上中下對(duì)齊,自動(dòng)折行,縮進(jìn)顯示格式:文字、數(shù)值、日期時(shí)間等數(shù)十種風(fēng)格單元格顯示格式定位拉伸:橫向擴(kuò)展表時(shí)保證標(biāo)題居中或居右定位拉伸例子,D2/E2格設(shè)計(jì)了定位規(guī)則,在B2橫向擴(kuò)展時(shí)會(huì)向右靠攏,結(jié)果如下:所有的屬性均可用表達(dá)式控制。含有屬性表達(dá)式的報(bào)表屬性中填寫(xiě)的表達(dá)式運(yùn)算結(jié)果,不及格的下劃線且居中,偶數(shù)行是斜體統(tǒng)計(jì)圖潤(rùn)乾報(bào)表支持如下23種類(lèi)型的統(tǒng)計(jì)圖:柱形圖三維柱形圖三維簇狀柱形圖堆積柱形圖三維堆積柱形圖餅圖三維餅圖折線圖三維折線圖區(qū)域圖三維區(qū)域圖條形圖三維條形圖三維簇狀條形圖堆積條形圖散列圖時(shí)序狀態(tài)圖時(shí)間走勢(shì)圖雙軸柱線圖雙軸折線圖雷達(dá)圖甘特圖儀表盤(pán)針對(duì)不同需要,在瀏覽器上可生成如下三種圖片類(lèi)型GIF:256色,可透明顯示,不失真壓縮JPG:真彩色,不可透明,失真壓縮PNG:真彩色,可透明,不失真壓縮潤(rùn)乾報(bào)表的部分統(tǒng)計(jì)圖頁(yè)面(HTML)輸出潤(rùn)乾報(bào)表可在WEB上生成標(biāo)準(zhǔn)的純HTML輸出格式,對(duì)IE5和Netscape7以及上版本均可支持且效果一致,統(tǒng)計(jì)圖則完成以純HTML圖片形式展現(xiàn),瀏覽器端無(wú)須事先安裝任何插件。潤(rùn)乾報(bào)表在WEB上的展示,可隨意嵌入到網(wǎng)頁(yè)的任何地方除靜態(tài)HTML外,潤(rùn)乾報(bào)表還可生成固定表頭(上/左均可)的可滾動(dòng)報(bào)表以及行式分組可伸縮報(bào)表,大大方便了用戶(hù)的使用。瀏覽器上表頭固定可上下左右滾動(dòng)顯示的報(bào)表文件輸出除標(biāo)準(zhǔn)HTML外,潤(rùn)乾報(bào)表還可將報(bào)表以文件方式導(dǎo)出,例如:EXCEL潤(rùn)乾報(bào)表可輸出完全不失真的EXCEL文件,報(bào)表中的統(tǒng)計(jì)圖也將嵌入其中,并附帶有各種打印屬性,生成的EXCEL可不作任何調(diào)整直接打印而不會(huì)喪失格式信息。還可對(duì)導(dǎo)出的EXCEL進(jìn)行進(jìn)一步的加工處理。PDF潤(rùn)乾報(bào)表可輸出PDF文件,報(bào)表中的統(tǒng)計(jì)圖也將嵌入,并附有紙張打印信息,結(jié)果可直接輸出打印。TEXT潤(rùn)乾報(bào)表可生成專(zhuān)為金融、郵政等行業(yè)字符終端應(yīng)用服務(wù)的帶格式文本,報(bào)表格線由中文表格符拼出,并可在其中設(shè)置Escape碼,可直接在字符打印機(jī)上輸出。RAT文件RAT文件是潤(rùn)乾報(bào)表自有的文件格式,用以保存運(yùn)算后的報(bào)表結(jié)果,其中帶有統(tǒng)計(jì)圖、紙張打印信息等,可由潤(rùn)乾報(bào)表設(shè)計(jì)器打開(kāi)查看以實(shí)現(xiàn)報(bào)表的脫機(jī)瀏覽(不依賴(lài)于第三方軟件且可在UNIX上顯示),并可打印或再次輸出成上述幾種格式的文件。輸出的EXCEL文件,保持所有格式且能將統(tǒng)計(jì)圖一并導(dǎo)出輸出的PDF文件,帶有分頁(yè)信息,并導(dǎo)出了統(tǒng)計(jì)圖獨(dú)有的帶格式文本輸出,可直接輸出在字符中終分頁(yè)與分欄潤(rùn)乾報(bào)表對(duì)報(bào)表頁(yè)面提供了強(qiáng)有力的控制功能:分頁(yè)方案可支持按紙張大小分頁(yè)、按行列數(shù)分頁(yè)、強(qiáng)制分頁(yè)(分組后或固定行列);分頁(yè)方向支持縱向和橫向雙方向分頁(yè),有上表頭、頁(yè)眉、頁(yè)腳、左表頭等功能。上/左表頭信息每頁(yè)均會(huì)合理重復(fù);單元格拆分單一單元格不能被分頁(yè)拆分,當(dāng)合并單元格被拆分時(shí)可選擇其中數(shù)據(jù)是否也分頁(yè)斷開(kāi)顯示;報(bào)表紙張與分頁(yè)屬性定義單元格分頁(yè)屬性定義行分區(qū)類(lèi)型列分區(qū)類(lèi)型分欄及其它支持橫向分欄;支持末頁(yè)補(bǔ)足空行的操作;分欄輸出的報(bào)表打印潤(rùn)乾報(bào)表可通過(guò)采用JavaApplet的方式實(shí)現(xiàn)瀏覽器中的精確打印,可支持如下功能:一紙多頁(yè),實(shí)現(xiàn)小票據(jù)或卡片式打印,可選擇按行排列和按列排列;縮放與定位:打印前的縮放及在紙張中的定位控制頁(yè)碼控制,選擇不同頁(yè)碼打印打印前可控制是否允許再修改數(shù)據(jù)打印預(yù)覽畫(huà)面,支持一紙多頁(yè),可縮放顯示數(shù)據(jù)填報(bào)潤(rùn)乾報(bào)表提供基于動(dòng)態(tài)庫(kù)表關(guān)聯(lián)技術(shù)的填報(bào)功能,完美解決數(shù)據(jù)入庫(kù)的難題,極大提高填報(bào)表單的處理效率,擴(kuò)展了Web報(bào)表工具的應(yīng)用方式。編輯風(fēng)格潤(rùn)乾報(bào)表在瀏覽器端采用純HTML填寫(xiě)方案,可提供如下編輯風(fēng)格:文字編輯框下拉列表框:下拉項(xiàng)目為固定內(nèi)容下拉數(shù)據(jù)框:下拉項(xiàng)目來(lái)自數(shù)據(jù)表,可帶檢索條件復(fù)選框下拉日歷下拉樹(shù):樹(shù)結(jié)點(diǎn)可來(lái)自于數(shù)據(jù)表,并可自動(dòng)循環(huán)文件/圖片上載支持的編輯風(fēng)格下拉數(shù)據(jù)表上載文件編輯下拉樹(shù)編輯填寫(xiě)控制在填報(bào)過(guò)程中,可以進(jìn)行嚴(yán)格的填寫(xiě)控制,包括:可填寫(xiě)控制:該單元格是否可以填寫(xiě),可能屬性表達(dá)式控制自動(dòng)計(jì)算:某些單元格是由其它單元格運(yùn)算而成的,當(dāng)基礎(chǔ)單元格的數(shù)據(jù)被修改時(shí),目標(biāo)單元格的數(shù)據(jù)自動(dòng)跟隨改變,計(jì)算公式在設(shè)計(jì)時(shí)設(shè)定好合法性檢查:考察數(shù)據(jù)填寫(xiě)是否合理,某單元格的數(shù)據(jù)類(lèi)型是否匹配(如在數(shù)字格中填入了非數(shù)字字符),單元格之間必須滿足的數(shù)據(jù)校驗(yàn)關(guān)系(如某格的數(shù)據(jù)必須大于另一格的數(shù)據(jù));對(duì)于輸入錯(cuò)誤的數(shù)據(jù),系統(tǒng)會(huì)給出事先設(shè)置好的提示信息并定位出有錯(cuò)單元格方便輸入者修改錯(cuò)誤;合法性檢查有兩種:即時(shí)檢查:填寫(xiě)當(dāng)前格,輸入焦點(diǎn)離開(kāi)該格時(shí)進(jìn)行檢查,若校驗(yàn)不滿足則不得離開(kāi)焦點(diǎn)提交檢查:全部填完后在提交數(shù)據(jù)前進(jìn)行檢查,校驗(yàn)不滿足則不得提交設(shè)計(jì)者還可以設(shè)置校驗(yàn)不滿足時(shí)的提示信息,以提示用戶(hù)出錯(cuò)的原因。自動(dòng)計(jì)算定義合法性檢查定義多頁(yè)填寫(xiě):潤(rùn)乾報(bào)表提供了多頁(yè)填報(bào)taglib,當(dāng)要填寫(xiě)內(nèi)容很多時(shí),可以組織成多個(gè)tab式的頁(yè)面一齊填寫(xiě),在JSP中可以設(shè)定多頁(yè)表單之間的填寫(xiě)控制關(guān)系。多頁(yè)填報(bào)及相關(guān)的合法性檢查(跨頁(yè))數(shù)據(jù)導(dǎo)入與離線編輯潤(rùn)乾報(bào)表還可支持離線填報(bào)和批量導(dǎo)入數(shù)據(jù)的能力:離線填報(bào)潤(rùn)乾報(bào)表生成的HTML表單可下載成本地文件中,其中保留了JavaScript代碼,因此所有的填寫(xiě)控制均依然有效。用戶(hù)直接用瀏覽器打開(kāi)這些離線HTML即可繼續(xù)填寫(xiě)數(shù)據(jù),填寫(xiě)過(guò)程中可以多次保存而不必與服務(wù)器有網(wǎng)絡(luò)連接,填寫(xiě)完成后再聯(lián)機(jī)上傳即可將數(shù)據(jù)提交到服務(wù)器的數(shù)據(jù)庫(kù)中。離線填報(bào)還可以采用導(dǎo)出或用戶(hù)自行繪制的EXCEL文件進(jìn)行,只要報(bào)表格式一致即可將EXCEL數(shù)據(jù)引入報(bào)表中,這使得許多已采用EXCEL填寫(xiě)數(shù)據(jù)的業(yè)務(wù)系統(tǒng)切換到潤(rùn)乾報(bào)表非常容易。批量導(dǎo)入離線用的HTML(或EXCEL)也可不是從瀏覽器下載而成,而由報(bào)表服務(wù)器批量生成并采用某種方式(EMAIL、軟盤(pán)等)分發(fā)給填報(bào)人,由填報(bào)人填好后再收集回來(lái)。潤(rùn)乾報(bào)表支持文件導(dǎo)入功能,可將收集回的報(bào)表批量導(dǎo)入到數(shù)據(jù)庫(kù)中。離線填寫(xiě)(仍可帶有合法性檢查關(guān)系)庫(kù)表關(guān)聯(lián)潤(rùn)乾報(bào)表支持如下三種基本填報(bào)表樣:自由式表格:整表對(duì)應(yīng)一條記錄,各字段分布在多個(gè)無(wú)規(guī)律的單元格中,如人員的基本情況表;行(列)式表格:數(shù)據(jù)區(qū)每行(列)對(duì)應(yīng)一條記錄,如人員的履歷表,記錄的某些字段(一般是主索引碼的一部分)會(huì)在行外,如人員履歷表中的人員編號(hào),這是最常見(jiàn)的表格式樣;設(shè)計(jì)時(shí)只要設(shè)置一行(列)的數(shù)據(jù)庫(kù)對(duì)應(yīng)屬性,其它行(列)會(huì)由系統(tǒng)自動(dòng)擴(kuò)展。交叉式表格:數(shù)據(jù)區(qū)每格對(duì)應(yīng)一條記錄,如學(xué)生課程成績(jī)表,左邊是學(xué)生,上邊是課程,數(shù)據(jù)區(qū)是成績(jī);設(shè)計(jì)時(shí)只要設(shè)置一格的數(shù)據(jù)庫(kù)對(duì)應(yīng)屬性,其它格會(huì)由系統(tǒng)自動(dòng)擴(kuò)展生成。潤(rùn)乾報(bào)表同時(shí)支持以上三種表樣的混合,如一張?zhí)顖?bào)表的上半部分是自由式表格、下半部分是行式表格。還可以是更復(fù)雜的多頁(yè)混合的填報(bào)表單。一個(gè)單元格的數(shù)據(jù)可以同時(shí)寫(xiě)入多個(gè)數(shù)據(jù)表,并且與其數(shù)據(jù)來(lái)源無(wú)關(guān),從而可以很方便地實(shí)現(xiàn)匯總填報(bào)。潤(rùn)乾報(bào)表更新屬性定義數(shù)據(jù)寫(xiě)入潤(rùn)乾報(bào)表支持同一張?zhí)顚?xiě)表單同時(shí)寫(xiě)入多個(gè)數(shù)據(jù)表/多條記錄的情況,填報(bào)服務(wù)程序會(huì)利用數(shù)據(jù)庫(kù)事務(wù)功能保證其一致性。在設(shè)計(jì)表單模板時(shí)建立了數(shù)據(jù)庫(kù)字段與表單單元格之間的對(duì)應(yīng)關(guān)系。服務(wù)器會(huì)根據(jù)對(duì)應(yīng)關(guān)系生成SQL語(yǔ)句。程序會(huì)自動(dòng)決定生成UPDATE還是INSERT語(yǔ)句,同時(shí)會(huì)自動(dòng)判斷數(shù)據(jù)庫(kù)的類(lèi)型,在SQL語(yǔ)句中添加相關(guān)的數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)(如在ORACLE中的日期常數(shù)要加TO_DATE,而SQLServer則是CONVERT)。示意圖可參見(jiàn)2.2.3節(jié)。交互與OLAP潤(rùn)乾報(bào)表提供了強(qiáng)有力的交互能力和分析能力,能夠支持用戶(hù)進(jìn)行OLAP分析。靈活定義的查詢(xún)和參數(shù)功能在很多情況下,用戶(hù)需要通過(guò)輸入條件,對(duì)數(shù)據(jù)進(jìn)行查詢(xún),并靈活控制顯示的數(shù)據(jù)范圍。潤(rùn)乾報(bào)表通過(guò)參數(shù)模板的功能,可以非常靈活地定義各種查詢(xún)界面和查詢(xún)條件,由用戶(hù)方便地輸入查詢(xún)條件,交互式地控制報(bào)表的內(nèi)容和形式。實(shí)際上,影響一個(gè)報(bào)表的參數(shù)可能有很多項(xiàng),其中部分參數(shù)是應(yīng)用系統(tǒng)或環(huán)境的基本信息,不應(yīng)當(dāng)再由用戶(hù)輸入,如當(dāng)前登錄的用戶(hù)角色、當(dāng)天的日期等。無(wú)須輸入的參數(shù)被稱(chēng)之為系統(tǒng)參數(shù),對(duì)應(yīng)的需要輸入的稱(chēng)為用戶(hù)參數(shù)。潤(rùn)乾報(bào)表提供了強(qiáng)有力的參數(shù)處理機(jī)制,可以分別對(duì)待處理這兩類(lèi)不同情況的參數(shù)。潤(rùn)乾報(bào)表支持如下四種參數(shù)機(jī)制:缺省參數(shù)界面潤(rùn)乾報(bào)表將根據(jù)報(bào)表的參數(shù)信息自動(dòng)生成一個(gè)非常簡(jiǎn)單的參數(shù)輸入界面,直接在taglib中配置就可以選擇是否出現(xiàn)該界面。該界面不能區(qū)分系統(tǒng)參數(shù)和用戶(hù)參數(shù),它將報(bào)表的所有參數(shù)都羅列出來(lái),而且也只能提供最簡(jiǎn)單的文字輸入方案,不能做出下拉選擇等效果。一般這種參數(shù)方式都是用于報(bào)表測(cè)試的,因其業(yè)務(wù)色彩太過(guò)薄弱,在實(shí)際應(yīng)用中很少使用。自寫(xiě)參數(shù)界面由應(yīng)用程序員為每個(gè)報(bào)表專(zhuān)門(mén)編寫(xiě)參數(shù)輸入界面(.JSP),將輸入后的用戶(hù)參數(shù)配合上系統(tǒng)參數(shù)設(shè)置到報(bào)表服務(wù)器,可以直接調(diào)用服務(wù)器的API設(shè)置,也可以在taglib的屬性中設(shè)置。自寫(xiě)參數(shù)可以讓程序員對(duì)報(bào)表查詢(xún)有最深入的控制力度,如可在某個(gè)參數(shù)輸入完成后立即引起頁(yè)面的變動(dòng)而不必等所有參數(shù)全部輸入完畢、某些參數(shù)的選值范圍可能被別一些參數(shù)過(guò)濾等。這樣可以造出更好的交互式效果,但相應(yīng)的工作量也較繁瑣。繪制參數(shù)界面潤(rùn)乾報(bào)表提供可繪制的參數(shù)界面。系統(tǒng)設(shè)計(jì)了一個(gè)專(zhuān)門(mén)的參數(shù)面板taglib,可發(fā)布由用戶(hù)進(jìn)行參數(shù)填寫(xiě)的界面,其中可以支持象下拉選擇等任何編輯風(fēng)格與填寫(xiě)控制方案。報(bào)表設(shè)計(jì)時(shí)并不涉及其參數(shù)界面,一個(gè)報(bào)表可以有多種參數(shù)輸入界面。參數(shù)界面是自行繪制的(利用報(bào)表設(shè)計(jì)器畫(huà)),可以只涉及用戶(hù)參數(shù)。一般在頁(yè)面程序(.JSP)中將參數(shù)界面與報(bào)表展現(xiàn)配合起來(lái),并且在這里將系統(tǒng)參數(shù)與用戶(hù)參數(shù)配合起來(lái)提交給報(bào)表服務(wù)器。與自寫(xiě)參數(shù)界面相比,繪制參數(shù)的方案可以省去許多編寫(xiě)頁(yè)面程序(.JSP)的工作量,也能獲得控制力度略弱但仍很友好的輸入界面,而且也較易于維護(hù),這是最常用的參數(shù)輸入機(jī)制。參數(shù)面板的定義參數(shù)的執(zhí)行生成參數(shù)界面對(duì)于批量較有規(guī)律的報(bào)表,程序員也可以采用生動(dòng)生成參數(shù)界面的方案,這種方案事實(shí)上與潤(rùn)乾報(bào)表自帶的缺省參數(shù)界面類(lèi)似。所不同的是由應(yīng)用程序員根據(jù)業(yè)務(wù)特色編寫(xiě)程序自動(dòng)生成參數(shù)界面,這樣可以帶有較強(qiáng)的業(yè)務(wù)色彩,使其實(shí)用起來(lái)。報(bào)表服務(wù)器提供了讀出報(bào)表參數(shù)的API,同時(shí)可以在報(bào)表設(shè)計(jì)時(shí)設(shè)置參數(shù)的某些自定義屬性,應(yīng)用程序則根據(jù)這些信息自動(dòng)生成相應(yīng)的參數(shù)界面,區(qū)分出系統(tǒng)參數(shù)與用戶(hù)參數(shù),并根據(jù)參數(shù)屬性生成不同的編輯風(fēng)格和填寫(xiě)控制等。通用查詢(xún)潤(rùn)乾報(bào)表還提供通用查詢(xún)功能,設(shè)計(jì)人員可以為每張報(bào)表定義與參數(shù)無(wú)關(guān)的可查詢(xún)指標(biāo)及每個(gè)指標(biāo)對(duì)應(yīng)的條件編輯方案(如某些條件需要下拉出來(lái)),采用潤(rùn)乾報(bào)表提供的通用查詢(xún)標(biāo)簽(taglib)即可在頁(yè)面上生成通用條件設(shè)置界面,用戶(hù)可選擇一個(gè)或多個(gè)指標(biāo)并分別提出對(duì)每個(gè)指標(biāo)的條件,再將這些條件聯(lián)接起來(lái)(AND/OR)形成完整的查詢(xún)條件,直接影響報(bào)表用于取出數(shù)據(jù)的SQL語(yǔ)句。如可以對(duì)人員報(bào)表提出類(lèi)似姓名LIKE“張%”AND(籍貫=“北京”O(jiān)R學(xué)歷>“本科”)的條件,而不必為事先為該報(bào)表設(shè)置好參數(shù)。通用查詢(xún)輸入界面自定義報(bào)表及其變換潤(rùn)乾報(bào)表提供了豐富的API和預(yù)制程序,可以結(jié)合用戶(hù)的元數(shù)據(jù)的語(yǔ)義層定義(這些定義不一定是僅存在于報(bào)表和數(shù)據(jù)分析系統(tǒng),而更應(yīng)該是屬于整個(gè)數(shù)據(jù)體系),實(shí)現(xiàn)靈活的自定義報(bào)表功能。在潤(rùn)乾報(bào)表設(shè)計(jì)器上能做的所有工作均有相應(yīng)的API提供,如設(shè)置單元格屬性、數(shù)據(jù)源定義等。由于產(chǎn)品提供的API非常豐富,表格樣式與EXCEL類(lèi)似而易于理解和單元格定位,對(duì)于不復(fù)雜的自定義報(bào)表可以很容易生成。還可以在用設(shè)計(jì)器繪制的報(bào)表基礎(chǔ)上用API進(jìn)行修改控制使其完成各種變換功能,如改變其排序條件、修改選出列、改變統(tǒng)計(jì)圖類(lèi)型等,使得用戶(hù)在頁(yè)面端能感受到實(shí)際的交互作用。同時(shí),潤(rùn)乾報(bào)表提供了大量預(yù)制的自定義報(bào)表代碼,可以通過(guò)簡(jiǎn)單的修改即與用戶(hù)的元數(shù)據(jù)定義結(jié)合起來(lái),實(shí)現(xiàn)自定義報(bào)表功能。點(diǎn)擊標(biāo)題排序改變統(tǒng)計(jì)圖類(lèi)型鉆取潤(rùn)乾報(bào)表可實(shí)現(xiàn)靈活的鉆取功能,另外對(duì)行式分組報(bào)表提供可收放的展現(xiàn)方案。鏈接鉆取潤(rùn)乾報(bào)表的所有單元格和統(tǒng)計(jì)圖的圖例上都可以加上超鏈接,且可以引當(dāng)前單元格的值和統(tǒng)計(jì)圖圖例對(duì)應(yīng)值作為超鏈接的參數(shù)。這樣,可以將幾張事先做好的報(bào)表通過(guò)鏈接參數(shù)串到一起,實(shí)現(xiàn)對(duì)數(shù)據(jù)的逐級(jí)鉆取。鉆取報(bào)表例子。每個(gè)單元格都可以生成超鏈接進(jìn)行鉆取,統(tǒng)計(jì)圖的圖例也可以生成超鏈接做鉆取。收縮展開(kāi)潤(rùn)乾報(bào)表生成的行向多層統(tǒng)計(jì)報(bào)表可以在網(wǎng)頁(yè)上動(dòng)態(tài)展開(kāi)收縮(由于HTML的限制,列方向目前無(wú)法提供此項(xiàng)功能),類(lèi)似一般的樹(shù)狀結(jié)構(gòu),用戶(hù)可以自由選擇展開(kāi)到哪些項(xiàng)目和展到哪一層次。也可以表現(xiàn)出動(dòng)態(tài)鉆取聚集的效果??墒湛s展開(kāi)的報(bào)表,點(diǎn)擊分類(lèi)左邊的圖標(biāo)即可在頁(yè)面上動(dòng)態(tài)展開(kāi)和收縮報(bào)表,實(shí)現(xiàn)動(dòng)態(tài)分層查看報(bào)表的效果。報(bào)表管理中心潤(rùn)乾報(bào)表提供了報(bào)表管理中心組件,可以進(jìn)行完整的報(bào)表、用戶(hù)及權(quán)限管理。報(bào)表管理中心在用戶(hù)無(wú)條件將報(bào)表應(yīng)用集成到完整的企業(yè)信息平臺(tái)或其他應(yīng)用系統(tǒng)的情況下,提供了方便、簡(jiǎn)捷、高效的解決方案,可以幫助用戶(hù)快速將報(bào)表應(yīng)用投入實(shí)際使用。報(bào)表管理中心采用全B/S方案,管理與應(yīng)用都在WEB上進(jìn)行。用戶(hù)權(quán)限 潤(rùn)乾報(bào)表管理中心提供了高效的用戶(hù)與權(quán)限管理機(jī)制。在報(bào)表管理中心中,可以進(jìn)行用戶(hù)、用戶(hù)組的設(shè)置與管理,并以此做為權(quán)限管理的基礎(chǔ)??梢钥刂撇煌脩?hù)、用戶(hù)組的權(quán)限,從而保證只有用戶(hù)才能看到與自己的相關(guān)的、被授權(quán)的報(bào)表,可靠地保證了企業(yè)的數(shù)據(jù)和信息安全。可以針對(duì)用戶(hù)或用戶(hù)組設(shè)置相應(yīng)的宏或參數(shù)(比如:某個(gè)用戶(hù)組都使用一個(gè)“華北地區(qū)”的參數(shù),則可以很方便地控制他們?cè)诓榭翠N(xiāo)售數(shù)據(jù)時(shí)只能看到華北地區(qū)的數(shù)據(jù),而不需要為不同的用戶(hù)設(shè)置不同的報(bào)表)。樹(shù)形功能組織報(bào)表管理中心模塊提供了樹(shù)形功能組織結(jié)構(gòu),可以建立用戶(hù)自定義的多層次的報(bào)表目錄。在報(bào)表目錄中,不僅可以對(duì)報(bào)表進(jìn)行管理,還可以對(duì)其他超鏈接(URL)進(jìn)行管理,方便用戶(hù)獲取各種信息。報(bào)表目錄的層次沒(méi)有限制,可以多層次展開(kāi)。結(jié)合用戶(hù)及權(quán)限管理功能,可以對(duì)樹(shù)形報(bào)表目錄的每一個(gè)節(jié)點(diǎn)進(jìn)行基于用戶(hù)或用戶(hù)組的權(quán)限控制。同時(shí),在報(bào)表目錄顯示時(shí),會(huì)自動(dòng)根據(jù)用戶(hù)權(quán)限,展現(xiàn)不同的視圖。還可以將宏與參數(shù)直接設(shè)置在目錄樹(shù)的葉節(jié)點(diǎn)上,以實(shí)現(xiàn)最常用查詢(xún)而無(wú)須每次輸入?yún)?shù),如某節(jié)點(diǎn)功能可定義為“本月費(fèi)用統(tǒng)計(jì)”或“去年當(dāng)月費(fèi)用統(tǒng)計(jì)”,點(diǎn)擊這些節(jié)點(diǎn)將自動(dòng)生成相應(yīng)報(bào)表。報(bào)表任務(wù)調(diào)度潤(rùn)乾報(bào)表提供了強(qiáng)有力的報(bào)表任務(wù)調(diào)度功能,可以實(shí)現(xiàn)定時(shí)、批量等報(bào)表自動(dòng)處理和報(bào)表的自動(dòng)分發(fā)。調(diào)度器采用全B/S方案,管理設(shè)置完全在WEB上進(jìn)行。任務(wù)管理與觸發(fā)潤(rùn)乾報(bào)表調(diào)度器允許把多個(gè)同等條件觸發(fā)的報(bào)表調(diào)度工作組合成一個(gè)任務(wù)。每個(gè)任務(wù)均有確定的時(shí)間觸發(fā)條件,目前提供如下幾種:每隔n分鐘執(zhí)行;每天x點(diǎn)執(zhí)行;每周x日?qǐng)?zhí)行;每月x日?qǐng)?zhí)行;每季x日?qǐng)?zhí)行;每半年x日?qǐng)?zhí)行;每年x日?qǐng)?zhí)行;自定義條件:可由用戶(hù)根據(jù)自已業(yè)務(wù)情況組合出更復(fù)雜的條件,如果每月的第二個(gè)星期二下午5點(diǎn)等,還可以臨時(shí)決定該任務(wù)是否需要啟動(dòng)。參數(shù)循環(huán)報(bào)表運(yùn)算可能有各種參數(shù),需要設(shè)置相應(yīng)的參數(shù)循環(huán)才能完成報(bào)表任務(wù)的運(yùn)算調(diào)度工作(如計(jì)算某月每天的交易匯總、計(jì)算某省所有地區(qū)的業(yè)務(wù)統(tǒng)計(jì)表),潤(rùn)乾報(bào)表調(diào)度器提供如下的參數(shù)循環(huán)機(jī)制:固定序列,如計(jì)算某幾個(gè)確定地區(qū)的報(bào)表,將地區(qū)編碼寫(xiě)成固定序列函數(shù)表達(dá)式,如1to12以觸發(fā)計(jì)算1月到12月的報(bào)表SQL語(yǔ)句,從數(shù)據(jù)庫(kù)表中取出需要循環(huán)的參數(shù)自定義:由程序員自行編寫(xiě)代碼生成的參數(shù)列表分發(fā)控制生成完的報(bào)表還需要完善的分發(fā)機(jī)制,潤(rùn)乾報(bào)表調(diào)度器可生成TEXT、HTML、EXCEL、PDF、RAT等多種運(yùn)算結(jié)果(可組合),并可根據(jù)任務(wù)的分發(fā)設(shè)置決定生成結(jié)果的去向,計(jì)有:存入本地文件系統(tǒng):將結(jié)果按規(guī)定的目錄體系存入調(diào)度器所在的本地文件系統(tǒng);FTP:通用FTP協(xié)議將結(jié)果上載到指定服務(wù)器;EMAIL:通過(guò)EMAIL將結(jié)果發(fā)送給指定EMAIL帳號(hào),可讓相關(guān)人通過(guò)郵件及時(shí)收到報(bào)表運(yùn)算結(jié)果;自定義:由程序員自行處理報(bào)表運(yùn)算的結(jié)果,如可寫(xiě)入數(shù)據(jù)庫(kù)等;部署與應(yīng)用方案報(bào)表設(shè)計(jì)模式潤(rùn)乾報(bào)表提供了本地設(shè)計(jì)和集成(遠(yuǎn)程)設(shè)計(jì)兩種模式,可以靈活地進(jìn)行報(bào)表設(shè)計(jì)。本地設(shè)計(jì)(獨(dú)立應(yīng)用)本地設(shè)計(jì)指報(bào)表模板文件存于本地文件系統(tǒng)中且數(shù)據(jù)庫(kù)是直連的(JDBC或其它自定義方式),這時(shí)潤(rùn)乾報(bào)表設(shè)計(jì)器可作為一個(gè)獨(dú)立的應(yīng)用程序使用,用于繪制和輸出各種統(tǒng)計(jì)報(bào)表,其應(yīng)用結(jié)構(gòu)如下圖:數(shù)據(jù)庫(kù)報(bào)表文件數(shù)據(jù)庫(kù)報(bào)表文件語(yǔ)義層定義打印機(jī)或輸出文檔發(fā)布報(bào)表設(shè)計(jì)器用戶(hù)通過(guò)報(bào)表設(shè)計(jì)器連上數(shù)據(jù)源(一般是數(shù)據(jù)庫(kù))后可以直接繪制各種報(bào)表,將執(zhí)行結(jié)果打印輸出或生成各種公共的文件格式(HTML、EXCEL、PDF等)提交給其他人閱讀。在繪制報(bào)表時(shí)可由應(yīng)用開(kāi)發(fā)人員事先設(shè)計(jì)好語(yǔ)義層定義,這樣,報(bào)表設(shè)計(jì)人員看到的將都是經(jīng)過(guò)業(yè)務(wù)描述過(guò)的數(shù)據(jù)視圖(其中表和字段名都可有中文描述),可以更加方便制作報(bào)表并降低使用難度(報(bào)表中的表達(dá)式也可寫(xiě)成中文)。數(shù)據(jù)源也可以不是數(shù)據(jù)庫(kù),而是一些數(shù)據(jù)文件甚至是一段程序(但必須是JAVA寫(xiě)的),由應(yīng)用開(kāi)發(fā)人員事先編寫(xiě)并定義好數(shù)據(jù)源,業(yè)務(wù)人員就可以直接使用于制作報(bào)表。集成(遠(yuǎn)程)設(shè)計(jì)基于可選的集成(遠(yuǎn)程)設(shè)計(jì)支持包,潤(rùn)乾報(bào)表設(shè)計(jì)器可被集成于用戶(hù)的統(tǒng)一門(mén)戶(hù)管理之下(B/S或C/S均可,B/S下需采用WebStart機(jī)制啟動(dòng)設(shè)計(jì)器),報(bào)表模板文件可送交遠(yuǎn)程的資源管理服務(wù)自行處理,而不是必須在本地存取,同時(shí)可通過(guò)支持包中附帶的-JDBC接口連接遠(yuǎn)程的數(shù)據(jù)庫(kù)進(jìn)行報(bào)表設(shè)計(jì)和預(yù)覽,而非直連到數(shù)據(jù)庫(kù)上(在WEB端設(shè)計(jì)時(shí)原則上根本就不允許直接到數(shù)據(jù)源上),從而保證文件(資源)與數(shù)據(jù)都能夠接受統(tǒng)一的門(mén)戶(hù)權(quán)限管理。數(shù)據(jù)庫(kù)文件服務(wù)管理數(shù)據(jù)庫(kù)文件服務(wù)管理發(fā)布HTTP-JDBC接口發(fā)布報(bào)表模板/語(yǔ)義層配置報(bào)表設(shè)計(jì)器瀏覽器或用戶(hù)門(mén)戶(hù)WebServer報(bào)表應(yīng)用部署方式潤(rùn)乾報(bào)表可以支持多種不同應(yīng)用環(huán)境下的部署。J2EE的B/S應(yīng)用潤(rùn)乾報(bào)表服務(wù)器以JAVA類(lèi)包(jar)形式提交,非常適合在J2EE下集成。WebServer數(shù)據(jù)源WebServer數(shù)據(jù)源報(bào)表模板瀏覽器報(bào)表服務(wù)器用戶(hù)應(yīng)用系統(tǒng)(JSP/servlet)潤(rùn)乾報(bào)表服務(wù)器是個(gè)邏輯概念,并沒(méi)有一個(gè)物理的服務(wù)器在運(yùn)行。它是作為應(yīng)用服務(wù)器上的一個(gè)應(yīng)用提交的,或者直接向應(yīng)用程序員提交JAR包。應(yīng)用程序在JSP中使用tablib或直接調(diào)用開(kāi)放的JAVAAPI就可以方便應(yīng)用潤(rùn)乾報(bào)表的各項(xiàng)功能、對(duì)報(bào)表進(jìn)行廣泛深入的控制,而且可以達(dá)到最高的運(yùn)行效率,同時(shí)還能夠與應(yīng)用程序共享應(yīng)用服務(wù)器的連接池管理或進(jìn)行集成與負(fù)載均衡,并可與應(yīng)用程序一起統(tǒng)一部署。統(tǒng)計(jì)圖等BLOB類(lèi)數(shù)據(jù)輸出采用流式服務(wù),不會(huì)在文件系統(tǒng)中產(chǎn)生任何臨時(shí)文件。非J2EE的B/S應(yīng)用非J2EE機(jī)制的WEB應(yīng)用集成潤(rùn)乾報(bào)表一般采用WebService的方式,JavaWebServer報(bào)表模板JavaWebServer報(bào)表模板報(bào)表服務(wù)器數(shù)據(jù)源WEB應(yīng)用系統(tǒng)在應(yīng)用系統(tǒng)的后臺(tái)運(yùn)行報(bào)表服務(wù)器,向其它WEB應(yīng)用提供WebService,通過(guò)URL訪問(wèn)機(jī)制傳遞參數(shù)并獲得運(yùn)算完成的HTML結(jié)果流(或EXCEL、PDF流),然后再由該應(yīng)用發(fā)布到瀏覽器上。特別地,在MicrosoftIIS下,可采用專(zhuān)門(mén)的WEB服務(wù)轉(zhuǎn)發(fā)程序,潤(rùn)乾報(bào)表除JAVAAPI外的各項(xiàng)功能均能夠與IIS的透明集成。Windows下的GUI應(yīng)用采用可選的Windows展現(xiàn)控件可將潤(rùn)乾報(bào)表應(yīng)用于WindowsGUI程序中(如Delphi、VB編寫(xiě)的C/S程序)。還可以將報(bào)表生成成EXCEL/PDF流再采用第三方控件展現(xiàn)在GUI應(yīng)用畫(huà)面中。WebServer報(bào)表模板WebServer報(bào)表模板數(shù)據(jù)源報(bào)表服務(wù)器展現(xiàn)控件(JSP或servlet)GUI主程序(JSP或servlet)EXCEL/PDFDLL(JSP或servlet)UNIX下字符終端應(yīng)用面對(duì)運(yùn)行在UNIX下,由C/C++編寫(xiě),前端輸出是字符終端的應(yīng)用系統(tǒng),潤(rùn)乾報(bào)表仍可以順利應(yīng)用。采用UNIX的C接口包可將潤(rùn)乾報(bào)表特有的字符終端報(bào)表解決方案應(yīng)用于這類(lèi)程序中。通常情況下,報(bào)表服務(wù)器和C接口以及業(yè)務(wù)程序都物理上運(yùn)行在同一臺(tái)機(jī)器上,數(shù)據(jù)則即可能是直接從后臺(tái)數(shù)據(jù)源(一般都是數(shù)據(jù)庫(kù))中讀出,也可能是由業(yè)務(wù)程序?qū)懗龅奶囟ǜ袷降奈募?。此時(shí),從報(bào)表服務(wù)器輸出的結(jié)果應(yīng)是表格符拼出的文本,通過(guò)C接口提交給業(yè)務(wù)程序進(jìn)行下一步的輸出打印。潤(rùn)乾報(bào)表的C接口在UNIX下以源碼形式提交,即向程序員提供.H和.C文件,由應(yīng)用程序員與其業(yè)務(wù)程序一起編譯。報(bào)表模板數(shù)據(jù)源報(bào)表模板數(shù)據(jù)源報(bào)表服務(wù)器C接口(JSP或servlet)數(shù)據(jù)文件業(yè)務(wù)程序(JSP或servlet)JavaApplication在JavaApplication中集成潤(rùn)乾報(bào)表與在J2EE機(jī)制下的WEB應(yīng)用類(lèi)似,可直接調(diào)用報(bào)表服務(wù)器提供的API接口。同時(shí),產(chǎn)品還提供了用于展現(xiàn)的swing控件,可以直接嵌入到JavaApplication的圖形界面中。此時(shí),報(bào)表參數(shù)需要用API設(shè)置。報(bào)表模板數(shù)據(jù)源報(bào)表模板數(shù)據(jù)源JavaApplication主程序報(bào)表服務(wù)器展現(xiàn)控件數(shù)據(jù)報(bào)送應(yīng)用方式除了統(tǒng)計(jì)匯總外,潤(rùn)乾報(bào)表還可以用于數(shù)據(jù)采集,即在WEB上填寫(xiě)數(shù)據(jù)報(bào)送到中央服務(wù)器。潤(rùn)乾報(bào)表支持聯(lián)機(jī)填報(bào)、脫機(jī)填報(bào)和批量導(dǎo)入等多種方式,可以良好地以持多級(jí)匯總填報(bào)。填報(bào)功能只能被集成到應(yīng)用系統(tǒng)中,而不能單獨(dú)運(yùn)行。填報(bào)能力可以運(yùn)行在基于J2EE和的B/S應(yīng)用和WindowsGUI應(yīng)用中,而不能支持其它形式B/S應(yīng)用和UNIX字符終端應(yīng)用。聯(lián)機(jī)填報(bào)數(shù)據(jù)源報(bào)表模板數(shù)據(jù)源報(bào)表模板報(bào)表服務(wù)器用戶(hù)應(yīng)用系統(tǒng)(JSP/servlet)HTML填報(bào)表瀏覽器WebServer潤(rùn)乾報(bào)表服務(wù)器程序在后臺(tái)根據(jù)繪制好的報(bào)表文件生成可以填寫(xiě)的HTML表單,用戶(hù)直接在瀏覽器中填寫(xiě)表格,提交后再由潤(rùn)乾報(bào)表服務(wù)器根據(jù)填寫(xiě)內(nèi)容和報(bào)表文件模板生成相應(yīng)的SQL語(yǔ)句,將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。這時(shí)要求數(shù)據(jù)源有可寫(xiě)的能力,所以必須是數(shù)據(jù)庫(kù)。填報(bào)表單的模板報(bào)表文件仍然采用報(bào)表設(shè)計(jì)器繪制,和普通的統(tǒng)計(jì)報(bào)表不同,填報(bào)表單增加了一些與之相關(guān)的屬性。在生成的HTML表單中同時(shí)加入了用于處理填寫(xiě)控制的JavaScript代碼,這些代碼是根據(jù)設(shè)計(jì)時(shí)的填報(bào)屬性自動(dòng)生成的。在JSP中還可以自行編寫(xiě)代碼地填寫(xiě)活動(dòng)進(jìn)行更深入的控制,表單的單元格名稱(chēng)即是HTML中對(duì)象的名稱(chēng)。基于這種方式,潤(rùn)乾報(bào)表提供了多頁(yè)填報(bào)taglib,當(dāng)要填寫(xiě)內(nèi)容很多時(shí),可以組織成多個(gè)tab式的頁(yè)面一齊填寫(xiě),在JSP中可以設(shè)定多頁(yè)表單之間的填寫(xiě)控制關(guān)系。脫機(jī)填報(bào)和批量導(dǎo)入潤(rùn)乾報(bào)表生成的HTML表單可以被下載到本地文件系統(tǒng)中,從而支持離線填報(bào)。下載出來(lái)的表單中保留了JavaScript代碼,因此其中所有的填寫(xiě)控制均依然有效,多頁(yè)填報(bào)時(shí)所有頁(yè)及其相關(guān)關(guān)系也一體地保存起來(lái)了。用戶(hù)直接用瀏覽器打開(kāi)保存下來(lái)的離線HTML即可繼續(xù)填寫(xiě)數(shù)據(jù),填寫(xiě)過(guò)程中可以多次保存而不必與服務(wù)器有網(wǎng)絡(luò)連接,填寫(xiě)完成后再聯(lián)機(jī)上傳即可將數(shù)據(jù)提交到服務(wù)器的數(shù)據(jù)庫(kù)中。離線填報(bào)時(shí)不支持圖片和文件的上載。離線填寫(xiě)也可以采用EXCEL文件進(jìn)行,但要保證該EXCEL文件樣式與填報(bào)用的表單是完全一樣的。潤(rùn)乾報(bào)表可以上載EXCEL文件被將其中數(shù)據(jù)讀出并對(duì)應(yīng)地填入填報(bào)表單中再提交到數(shù)據(jù)庫(kù)。相對(duì)于EXCEL,采用HTML離線填報(bào)的優(yōu)勢(shì)在于表樣不容易被修改,且填寫(xiě)控制也更豐富一些,而EXCEL則很可能被填寫(xiě)人誤操作修改(如加刪行列),這樣會(huì)導(dǎo)致表格樣式不一致而增加入庫(kù)工作的復(fù)雜度。因此,建議不采用EXCEL作為填報(bào)文件。但以往用過(guò)的EXCEL填報(bào)文件則可以被讀入將其中數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。WebServer數(shù)據(jù)源WebServer數(shù)據(jù)源報(bào)表模板報(bào)表服務(wù)器用戶(hù)應(yīng)用系統(tǒng)(JSP/servlet)HTML填報(bào)表瀏覽器離線EXCEL離線HTML表離線用的HTML(或EXCEL)也可不是從瀏覽器下載而成,而由報(bào)表服務(wù)器批量生成并采用某種方式(EMAIL、軟盤(pán)等)分發(fā)給填報(bào)人,由填報(bào)人填好后再收集回來(lái)。潤(rùn)乾報(bào)表支持批量數(shù)據(jù)文件導(dǎo)入的功能,可將收集回的報(bào)表批量分析將其數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中。多級(jí)匯總填報(bào)填報(bào)業(yè)務(wù)常常會(huì)是多級(jí)的,除最底級(jí)是面對(duì)原始空表填寫(xiě)外,其它各級(jí)都是將下級(jí)的數(shù)據(jù)匯總之后再填報(bào)給上級(jí)。潤(rùn)乾報(bào)表支持這種匯總填報(bào),填報(bào)表首先是一個(gè)統(tǒng)計(jì)匯總表,然后再在其上定義填報(bào)屬性。統(tǒng)計(jì)匯總的數(shù)據(jù)來(lái)源可以和填報(bào)的數(shù)據(jù)目標(biāo)可以是沒(méi)有任何關(guān)系的,兩者可以分別來(lái)自完全不同的一些數(shù)據(jù)表,甚至是不同的數(shù)據(jù)庫(kù)!系統(tǒng)可以從本級(jí)的數(shù)據(jù)庫(kù)(表)中匯總出一個(gè)統(tǒng)計(jì)表,然后發(fā)布出來(lái)填寫(xiě),用戶(hù)可以修改統(tǒng)計(jì)結(jié)果或填入一些原統(tǒng)計(jì)結(jié)果中沒(méi)有的信息,然后再提交寫(xiě)入上級(jí)的數(shù)據(jù)庫(kù)中。原始填報(bào)表匯總填報(bào)表原始填報(bào)表匯總填報(bào)表統(tǒng)計(jì)匯總表上級(jí)數(shù)據(jù)庫(kù)下級(jí)數(shù)據(jù)庫(kù)報(bào)表服務(wù)器如果匯總出來(lái)的統(tǒng)計(jì)表中沒(méi)有可以填寫(xiě)的項(xiàng)目,則可以用作匯總數(shù)據(jù)的合法性檢查,在提交檢查時(shí),系統(tǒng)并不關(guān)心是否有信息被填寫(xiě)過(guò),而只是簡(jiǎn)單地在表格中應(yīng)用各項(xiàng)合法性檢查規(guī)則,這樣,可以在統(tǒng)計(jì)報(bào)表上定義一些規(guī)則用以檢查從各個(gè)口徑下統(tǒng)計(jì)上來(lái)的數(shù)據(jù)是否有誤。支持環(huán)境潤(rùn)乾報(bào)表采用純JAVA開(kāi)發(fā),報(bào)表設(shè)計(jì)器使用了swing圖形類(lèi)包,要求JDK1.4.1及以上版本。WEB發(fā)布包要求JDK1.3及以上版本。潤(rùn)乾報(bào)表支持提供上述JDK環(huán)境的所有操作系統(tǒng),如Windows系列、Linux、Solaris、AIX、HPUX等。對(duì)UNIX操作系統(tǒng)下若其JDK版本在1.4及以下,則需要有XWindows環(huán)境。潤(rùn)乾報(bào)表支持所有提供JDBC2.0及以上版本的關(guān)系數(shù)據(jù)庫(kù)。如Oracle、MSSQLServer、SybaseSQLServer、IBMDB2、IBMInformix等。潤(rùn)乾報(bào)表支持提供JSP1.1及以上版本、servlet2.3及以上版本的所有J2EE機(jī)制的Web服務(wù)器,如Tomcat、Resin、BEAWebLogic、IBMWebSphere、OracleApplicationServer、SunOne等。潤(rùn)乾報(bào)表在前端瀏覽器采用標(biāo)準(zhǔn)純HTML,精確打印需要JavaApplet,統(tǒng)計(jì)圖采用純HTML圖片形式展現(xiàn),瀏覽器端無(wú)須安裝任何控件,IE5及Netscape7以上均支持且效果一致。性能指標(biāo)與控制性能分析決定運(yùn)算速度的關(guān)鍵對(duì)于報(bào)表工具而言,決定運(yùn)算速度的關(guān)鍵是數(shù)據(jù)源運(yùn)算。除了極特殊的情況外(下文另有說(shuō)明),一般情況下都是源數(shù)據(jù)量遠(yuǎn)遠(yuǎn)大于報(bào)表中顯示出來(lái)的數(shù)據(jù)量,源數(shù)據(jù)可能有幾百萬(wàn)、幾千萬(wàn)條,顯示出來(lái)的可能是幾十條、一兩百條。傳統(tǒng)工具的數(shù)據(jù)源運(yùn)算一般交由數(shù)據(jù)庫(kù)完成,通過(guò)復(fù)雜的SQL或者存儲(chǔ)過(guò)程進(jìn)行。潤(rùn)乾報(bào)表也完全支持這種模式,因此潤(rùn)乾報(bào)表的總體運(yùn)算性能至少可以做到與其它傳統(tǒng)工具基本相當(dāng)。但是,數(shù)據(jù)源運(yùn)算交由數(shù)據(jù)庫(kù)完成有一定的缺陷。首先,這樣就要求數(shù)據(jù)源有運(yùn)算能力,幾乎必須是數(shù)據(jù)庫(kù),比如我們不能讓兩個(gè)文件進(jìn)行叉乘連接;其次,各種數(shù)據(jù)庫(kù)的運(yùn)算函數(shù)和語(yǔ)句規(guī)則相差很大,很難做到報(bào)表在異構(gòu)數(shù)據(jù)庫(kù)之間移植。除利用數(shù)據(jù)庫(kù)運(yùn)算外,潤(rùn)乾報(bào)表還支持自行進(jìn)行數(shù)據(jù)源運(yùn)算,在多源報(bào)表(中國(guó)報(bào)表中最常見(jiàn)的多源情況)且數(shù)據(jù)量較大時(shí)性能會(huì)明顯優(yōu)于數(shù)據(jù)庫(kù)運(yùn)算。傳統(tǒng)工具的數(shù)據(jù)源運(yùn)算處理這種報(bào)表都是采用多數(shù)據(jù)表JOIN的方案,其運(yùn)算速度度嚴(yán)重依賴(lài)于SQL書(shū)寫(xiě)的優(yōu)化程度與數(shù)據(jù)庫(kù)的智能水平,連接條件復(fù)雜時(shí)其計(jì)算復(fù)雜度將是O(Nk),其中k是涉及到的數(shù)據(jù)表數(shù),國(guó)內(nèi)報(bào)表中這個(gè)k值常常大于5。而潤(rùn)乾報(bào)表的運(yùn)算則是將數(shù)據(jù)集取出后,一般只是多個(gè)兩表連接,最多是三表連接(交叉表),其計(jì)算復(fù)雜度為O(N2)或O(N3)。當(dāng)數(shù)據(jù)量大和表多時(shí),運(yùn)算速度將有明顯的優(yōu)勢(shì)。并發(fā)數(shù)量潤(rùn)乾報(bào)表采用純J2EE體系架構(gòu),可以直接嵌入應(yīng)用系統(tǒng),可以在應(yīng)用服務(wù)器上集群部署。相對(duì)于其他采用J2EE的報(bào)表工具,在應(yīng)用服務(wù)器層面潤(rùn)乾與其沒(méi)有什么差別,但由于潤(rùn)乾的報(bào)表模型的優(yōu)勢(shì),因此在使用數(shù)據(jù)庫(kù)的強(qiáng)度上要低于其他報(bào)表工具,從而在單機(jī)并發(fā)數(shù)量上具有優(yōu)勢(shì)。而相對(duì)于采用獨(dú)立服務(wù)器方式的報(bào)表工具,由于潤(rùn)乾可以直接嵌入到應(yīng)用服務(wù)器中,因此不需要經(jīng)過(guò)應(yīng)用服務(wù)器與報(bào)表服務(wù)器的基于網(wǎng)絡(luò)層的傳輸環(huán)節(jié),因此效率大大提高。并且,潤(rùn)乾作為JAVA報(bào)表產(chǎn)品,可以很容易地在應(yīng)用服務(wù)器集群下部署,從而大大提高并發(fā)能力。實(shí)測(cè)指標(biāo)實(shí)測(cè)指標(biāo)與用于測(cè)試的報(bào)表本身有很大的相關(guān)性(表達(dá)式復(fù)雜度等),其測(cè)試結(jié)果常常不具有可比性。為簡(jiǎn)化和提高可對(duì)比性,這里的測(cè)試都采用最簡(jiǎn)單的行式(分組)報(bào)表。容量潤(rùn)乾報(bào)表3.5版的實(shí)測(cè)結(jié)果是2G內(nèi)存下可支持到約300萬(wàn)單元格。事實(shí)上,樣式和運(yùn)算復(fù)雜的統(tǒng)計(jì)報(bào)表,其單元格數(shù)一般不會(huì)很大,一般單元格數(shù)在幾千的數(shù)量級(jí),這類(lèi)報(bào)表可以被輕松處理。顯示數(shù)據(jù)量大的報(bào)表,往往是數(shù)據(jù)記錄很多的簡(jiǎn)單明細(xì)報(bào)表,按一行20格、一頁(yè)25行計(jì)算,300萬(wàn)格可以支持6000頁(yè)。在絕大多數(shù)情況下,這個(gè)指標(biāo)是完全可以實(shí)用的。響應(yīng)實(shí)測(cè)結(jié)果,P4/2G/512M的PC機(jī)上,源數(shù)據(jù)有100萬(wàn)條記錄顯示結(jié)果約10萬(wàn)格的分組報(bào)表在10分鐘內(nèi)可以運(yùn)算并輸出完畢,其中2/3左右的時(shí)間被用在JDBC讀數(shù)上。并發(fā)實(shí)測(cè)結(jié)果,在512M內(nèi)存的機(jī)器上,每用戶(hù)生成5000單元格的報(bào)表,支持70個(gè)以上并發(fā)數(shù),在P42G芯片上的平均響應(yīng)時(shí)間是2秒左右??刂剖侄螖?shù)據(jù)集緩存與索引對(duì)于超大數(shù)據(jù)量的源數(shù)據(jù)集,潤(rùn)乾報(bào)表提供了數(shù)據(jù)集緩存機(jī)制,數(shù)據(jù)量大并不會(huì)影響運(yùn)算的正常進(jìn)行。同時(shí),潤(rùn)乾報(bào)表還為數(shù)據(jù)集提供了索引功能,使對(duì)數(shù)據(jù)集的查找計(jì)算采用二叉樹(shù)的方案進(jìn)行,較大地提高計(jì)算性能。數(shù)據(jù)集索引設(shè)置并發(fā)限制對(duì)于輸出結(jié)果很大的報(bào)表,如果并發(fā)較多,可能會(huì)導(dǎo)致內(nèi)存消耗過(guò)多從而使系統(tǒng)效率急劇下降。潤(rùn)乾報(bào)表為此類(lèi)大容量報(bào)表設(shè)定了并發(fā)限制控制,將其并發(fā)數(shù)量控制在預(yù)定的范圍內(nèi),超出的并發(fā)數(shù)都被轉(zhuǎn)成串行處理,以確保服務(wù)器的其它各項(xiàng)服務(wù)以及其它報(bào)表的運(yùn)算能正常進(jìn)行下去。頁(yè)面緩存潤(rùn)乾報(bào)表提供HTML頁(yè)面的緩存機(jī)制,同參數(shù)的報(bào)表在指定的時(shí)間內(nèi)只會(huì)計(jì)算一次,不必重復(fù)計(jì)算以提高響應(yīng)速度。集成接口潤(rùn)乾報(bào)表為二次開(kāi)發(fā)提供了豐富的集成接口,可以很容易將其無(wú)縫嵌入到用戶(hù)的各種應(yīng)用程序中。數(shù)據(jù)源潤(rùn)乾報(bào)表運(yùn)算時(shí)的數(shù)據(jù)來(lái)源可以是標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫(kù)、OLAPServer、數(shù)據(jù)文件以及用戶(hù)自定義程序。JDBC潤(rùn)乾報(bào)表直接支持所有提供JDBC2.0及以上版本接口的關(guān)系數(shù)據(jù)庫(kù)。在設(shè)計(jì)器和服務(wù)器相應(yīng)的配置中設(shè)置好JDBC數(shù)據(jù)源的Driver和URL信息后即可使用。在設(shè)計(jì)階段,潤(rùn)乾報(bào)表能讀出數(shù)據(jù)庫(kù)的元數(shù)據(jù)信息以輔助SQL語(yǔ)句的編輯;運(yùn)行時(shí)除支持一般的SQL查詢(xún)外,還可支持存儲(chǔ)過(guò)程返回的結(jié)果集。除可與一般數(shù)據(jù)庫(kù)自帶的JDBC接口連接外,潤(rùn)乾報(bào)表的可選組件中實(shí)現(xiàn)提供了基于標(biāo)準(zhǔn)協(xié)議的遠(yuǎn)程JDBC接口,采用該-JDBC接口,可使?jié)櫱瑘?bào)表實(shí)現(xiàn)集成(遠(yuǎn)程)設(shè)計(jì)。OLAPServer由于絕大多數(shù)OLAPServer都提供有標(biāo)準(zhǔn)JDBC接口,故可被潤(rùn)乾報(bào)表作為普通的關(guān)系數(shù)據(jù)庫(kù)支持,如Oracle、NCRTeradata等。HyperionEssbase是業(yè)界應(yīng)用較廣的OLAPServer,但未提供有JDBC接口。潤(rùn)乾報(bào)表為之特制了連接程序,使報(bào)表數(shù)據(jù)可以來(lái)自Essbase,同時(shí)可讀出Essbase中的CUBE結(jié)構(gòu)以供用戶(hù)進(jìn)行數(shù)據(jù)集設(shè)計(jì)。在潤(rùn)乾報(bào)表3.x的小版本升級(jí)中,將逐步完成對(duì)其它無(wú)標(biāo)準(zhǔn)JDBC接口的OLAPServer的支持,如Microsoft。潤(rùn)乾報(bào)表從Essbase中獲取數(shù)據(jù)數(shù)據(jù)文件和自定義數(shù)據(jù)源由于許多行業(yè)應(yīng)用的報(bào)表源數(shù)據(jù)以文件形式存放或業(yè)務(wù)數(shù)據(jù)庫(kù)不可直接被訪問(wèn)(以金融業(yè)較為常見(jiàn)),潤(rùn)乾報(bào)表的數(shù)據(jù)源可以來(lái)自指定格式的文本文件和XML文件。特別地,潤(rùn)乾報(bào)表還支持用戶(hù)自定義數(shù)據(jù)源,即由應(yīng)用程序員自行準(zhǔn)備數(shù)據(jù)。用戶(hù)自定義數(shù)據(jù)集畫(huà)面潤(rùn)乾報(bào)表定義了一個(gè)數(shù)據(jù)集接口類(lèi),可由程序員自行實(shí)現(xiàn)。在設(shè)計(jì)器中可以設(shè)定某個(gè)數(shù)據(jù)集對(duì)應(yīng)的自定義來(lái)源類(lèi)及參數(shù),報(bào)表運(yùn)算器即會(huì)在獲取該數(shù)據(jù)集數(shù)據(jù)時(shí)調(diào)用該接口,從而實(shí)現(xiàn)由應(yīng)用程序自行獲得數(shù)據(jù)。JAVAAPI對(duì)于JAVA程序員,潤(rùn)乾報(bào)表提供豐富的API調(diào)用,可以對(duì)報(bào)表服務(wù)器進(jìn)行深入完全的控制。下圖是報(bào)表服務(wù)器提供的JAVAAPI結(jié)構(gòu)圖。API在結(jié)構(gòu)上分成了三層:數(shù)據(jù)層、運(yùn)算層和展現(xiàn)層;每個(gè)層面都有開(kāi)放的接口允許程序員進(jìn)行調(diào)用或重載。圖中橢圓圈中的名字都是實(shí)際的JAVA類(lèi)名,而圓角矩形中的都是類(lèi)的函數(shù)名。數(shù)據(jù)源與連接池?cái)?shù)據(jù)層負(fù)責(zé)獲得數(shù)據(jù),一般情況下報(bào)表的數(shù)據(jù)來(lái)自數(shù)據(jù)庫(kù)或規(guī)定格式的數(shù)據(jù)文件,但有時(shí)可能由應(yīng)用程序自行組織數(shù)據(jù)或其它格式的數(shù)據(jù)文件,這時(shí)程序員可將數(shù)據(jù)填入DataSet類(lèi),再傳給下一級(jí)的運(yùn)算程序。另外,數(shù)據(jù)庫(kù)連接也可以是應(yīng)用程序自行管理的。在缺省的大多數(shù)情況下,潤(rùn)乾報(bào)表將從應(yīng)用服務(wù)器的連接池中獲得數(shù)據(jù)庫(kù)連接(按名字訪問(wèn)),但個(gè)別情況下,應(yīng)用程序可能自行接管連接池的管理。這時(shí),程序員可以通用API直接將指定名字的數(shù)據(jù)庫(kù)連接送入報(bào)表服務(wù)器,報(bào)表服務(wù)器則不再向應(yīng)用服務(wù)器獲取連接。運(yùn)算與展現(xiàn)在運(yùn)算層有API可向相應(yīng)報(bào)表模板傳入報(bào)表參數(shù)(宏)并令其計(jì)算,計(jì)算結(jié)果將保存于Report類(lèi)中,此時(shí)可以通用程序去修改某些屬性再進(jìn)行輸出,如修改某單元格的值、增加刪除某些行列等。潤(rùn)乾報(bào)表對(duì)各種格式的結(jié)果均采用流式的輸出方法,如ExportToHTML將返回生成的HTML文本串,而ExportToExcel則返回Excel文件流。這樣,輸出的結(jié)果也可由程序員自行控制,如生成HTML發(fā)布到網(wǎng)頁(yè)上、生成EXCEL/PDF保存到文件系統(tǒng)或數(shù)據(jù)庫(kù)中等。還可以由程序員自行編寫(xiě)輸出結(jié)果的方案,如XML等。報(bào)表模板特別地,潤(rùn)乾報(bào)表的報(bào)表模板(RAQ文件)具有可編程接口(ReportDefine類(lèi))。一般情況下,報(bào)表是由設(shè)計(jì)器繪制而成的,但同時(shí)提供了對(duì)報(bào)表模板的訪問(wèn)接口,應(yīng)用程序員可以用程序?qū)?bào)表模板進(jìn)行少許修改后再傳入運(yùn)算引擎計(jì)算,如改變某些單元格中的表達(dá)式;甚至可以完成由程序自行“畫(huà)”出一個(gè)報(bào)表,基于這些API,可以較容易實(shí)現(xiàn)出根據(jù)業(yè)務(wù)規(guī)則自行生成報(bào)表模板的功能。前端接口潤(rùn)乾報(bào)表提供了多種方式、方便易用的前端接口,可以使用戶(hù)很容易地在應(yīng)用系統(tǒng)中結(jié)合報(bào)表的展現(xiàn)。JSP/HTMLTaglib嵌入潤(rùn)乾報(bào)表提供了一個(gè)報(bào)表發(fā)布的taglib,在JSP中直接使用該標(biāo)記即可發(fā)布報(bào)表,在標(biāo)記中填入報(bào)表文件名及及相關(guān)參數(shù)即可。報(bào)表服務(wù)器將直接到應(yīng)用服務(wù)器的連接池中去獲取數(shù)據(jù)庫(kù)

溫馨提示

  • 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)論