<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 176, comments - 240, trackbacks - 0, articles - 7
       傳統(tǒng)上報(bào)表引擎主要完成兩項(xiàng)工作:結(jié)構(gòu)描述和結(jié)構(gòu)轉(zhuǎn)換。一般報(bào)表設(shè)計(jì)人員通過(guò)可視化設(shè)計(jì)工具完成對(duì)報(bào)表結(jié)構(gòu)的描述,然后報(bào)表引擎根據(jù)這些描述生成不同格式的報(bào)表文件,如PDF格式,XLS格式等。這一圖景中報(bào)表設(shè)計(jì)工具扮演著關(guān)鍵角色,因?yàn)樗粌H僅是向用戶提供一個(gè)直觀的界面,更重要的是配置過(guò)程本身就是一種分步驟的結(jié)構(gòu)構(gòu)造過(guò)程。理想的情況是用戶指定報(bào)表中具體有哪些單元格,表格具體有哪些列,而在運(yùn)行期報(bào)表引擎負(fù)責(zé)向單元格中填充數(shù)據(jù)。但是對(duì)于設(shè)計(jì)期只能進(jìn)行動(dòng)態(tài)描述,無(wú)法預(yù)先確定所有結(jié)構(gòu)元素的報(bào)表(例如交叉表的列只能在執(zhí)行時(shí)確定),這種報(bào)表模型就會(huì)出現(xiàn)問(wèn)題。一般處理方式都是在報(bào)表引擎中內(nèi)置所有可能的動(dòng)態(tài)報(bào)表模型。無(wú)論設(shè)計(jì)工具多么復(fù)雜,其內(nèi)置的原理如果是基于靜態(tài)結(jié)構(gòu)模型,就無(wú)法建立一種抽象機(jī)制,這樣我們就只能通過(guò)重復(fù)勞動(dòng)來(lái)應(yīng)對(duì)眾多結(jié)構(gòu)類似但是略有不同的報(bào)表。
       Witrix平臺(tái)的報(bào)表引擎是對(duì)程序友好的,它引入了編譯期結(jié)構(gòu)運(yùn)算,在報(bào)表編譯時(shí)可以通過(guò)程序吸收大部分結(jié)構(gòu)差異性。在Witrix平臺(tái)中,報(bào)表制作分為三個(gè)階段:設(shè)計(jì)期 -> 編譯期 -> 運(yùn)行期。報(bào)表引擎負(fù)責(zé)完成三種工作:結(jié)構(gòu)描述,結(jié)構(gòu)生成和結(jié)構(gòu)轉(zhuǎn)換。具體實(shí)現(xiàn)動(dòng)態(tài)結(jié)構(gòu)生成的過(guò)程其實(shí)非常簡(jiǎn)單。目前所有的Witrix配置文件都通過(guò)基礎(chǔ)配置引擎進(jìn)行解析,它定義了統(tǒng)一的dynamic和extends元機(jī)制。
       <report dynamic="true">
    定義了dynamic="true"的報(bào)表定義文件首先作為tpl模板文件來(lái)運(yùn)行,其運(yùn)行結(jié)果再作為報(bào)表格式解析。在這種模型下,報(bào)表引擎并沒(méi)有內(nèi)置如何把動(dòng)態(tài)結(jié)構(gòu)拼接出來(lái)的知識(shí),這些知識(shí)存在于編譯期,而tpl標(biāo)簽的抽象能力使得我們可以把復(fù)雜的報(bào)表結(jié)構(gòu)生成過(guò)程抽象成簡(jiǎn)單的標(biāo)簽調(diào)用形式。
       <report dynamic="true">
          <body>
            <table>
             <thead>
                <c:forEach var="_h" items="${cols}">
                 ....
            </table>
          </body>
       </report>

    ==>
       <report dynamic="true">
          <body>
             <rpt:GenCrossTable tableMeta="${tableMeta}" loopVar="tableData" />
          </body>
       </report>

       在編譯期通過(guò)tpl封裝可以解決大部分結(jié)構(gòu)生成問(wèn)題,在運(yùn)行期報(bào)表引擎主要負(fù)責(zé)的結(jié)構(gòu)問(wèn)題就簡(jiǎn)化為數(shù)據(jù)行展開和單元格合并等確定操作。
       Witrix報(bào)表引擎的另一個(gè)特點(diǎn)是運(yùn)行期結(jié)構(gòu)生成過(guò)程和結(jié)構(gòu)轉(zhuǎn)換過(guò)程同時(shí)進(jìn)行,因此不需要在內(nèi)存中構(gòu)造一個(gè)完整的報(bào)表數(shù)據(jù)對(duì)象,大大減輕了內(nèi)存壓力。Witrix報(bào)表引擎輸出的文件格式目前有html, XML格式的Word文件和XML格式的Excel文件等。每一種輸出格式相當(dāng)于定義了一種渲染模型,它們都是對(duì)報(bào)表模型的一種展現(xiàn)方式。從某種程度上說(shuō)這些模型的結(jié)構(gòu)都是等價(jià)的,但是完成模型轉(zhuǎn)換所需要的操作往往不是局域化的。例如在html的table中某一單元格具體對(duì)應(yīng)哪一列是受到其他單元格的rowspan和colspan屬性影響的, 在Excel中則需要明確指定列的index屬性。為了簡(jiǎn)化運(yùn)行期邏輯,內(nèi)置的報(bào)表模型必須提供一些冗余結(jié)構(gòu),從而兼容多種渲染模型。

    Feedback

    # re: 報(bào)表引擎:結(jié)構(gòu)生成與結(jié)構(gòu)轉(zhuǎn)換  回復(fù)  更多評(píng)論   

    2007-09-10 16:57 by pfind365
    dalu0756.cn網(wǎng)上開店系統(tǒng),QQ:495198971

    大路購(gòu)物系統(tǒng)網(wǎng)站:http://www.dalu0756.cn/

    無(wú)需專業(yè)知識(shí)就可以輕松管理建設(shè)自己獨(dú)立的網(wǎng)絡(luò)銷售平臺(tái)!

    只要您會(huì)打字,就可以方便的建立自己的網(wǎng)上商店,開展業(yè)務(wù)!
    主站蜘蛛池模板: 四虎亚洲国产成人久久精品| 13一14周岁毛片免费| 亚洲av日韩av欧v在线天堂| 亚洲精品国产精品| 免费一级一片一毛片| 在线观看国产一区亚洲bd| 日本牲交大片免费观看| 国产精品亚洲专区无码不卡| 免费成人在线观看| h片在线播放免费高清| 一本色道久久综合亚洲精品高清| 一级人做人爰a全过程免费视频| 亚洲 日韩经典 中文字幕| 中文无码日韩欧免费视频| 亚洲熟妇av一区二区三区| 精品亚洲AV无码一区二区三区| 桃子视频在线观看高清免费完整| 国产亚洲精品久久久久秋霞 | 亚洲成AV人片久久| 四虎在线成人免费网站| 亚洲欧洲日本在线| 97无码人妻福利免费公开在线视频 | 两个人看的www视频免费完整版| 亚洲欧洲美洲无码精品VA| 91免费国产精品| 久久乐国产精品亚洲综合| 一区二区三区四区免费视频| 最新亚洲精品国偷自产在线| 亚洲AⅤ无码一区二区三区在线| 永久免费av无码入口国语片| 久久乐国产综合亚洲精品| 免费吃奶摸下激烈视频| 日本免费中文视频| 亚洲国产精品无码观看久久| 亚洲中文字幕无码永久在线| xxxx日本免费| 成人免费无码H在线观看不卡| 亚洲国产成人久久三区| 亚洲国产婷婷综合在线精品| 国产成人免费高清激情明星| 特a级免费高清黄色片|