<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ù)!
    主站蜘蛛池模板: 亚洲国产成人在线视频| 国产亚洲午夜精品| 永久免费视频v片www| 一级成人生活片免费看| 亚洲精品电影天堂网| 国产免费私拍一区二区三区| a级黄色毛片免费播放视频| 亚洲国产电影在线观看| 亚洲一区二区三区在线播放| 久久久久久曰本AV免费免费| 美女露隐私全部免费直播| 亚洲免费精彩视频在线观看| 国产成人涩涩涩视频在线观看免费| av永久免费网站在线观看| 亚洲日韩AV一区二区三区四区 | 亚洲国产精品尤物YW在线观看| 四虎成人精品永久免费AV| 精品女同一区二区三区免费播放 | jizz日本免费| 亚洲综合无码无在线观看| 亚洲va中文字幕无码久久不卡| 色www永久免费视频| 99re免费99re在线视频手机版| 免费无码国产V片在线观看| 亚洲国产精品成人综合色在线婷婷 | 亚洲国产日韩在线视频| 日韩一区二区三区免费体验| 久久久久久成人毛片免费看| 四虎精品免费永久免费视频| 亚洲五月丁香综合视频| 亚洲AV日韩AV高潮无码专区| 亚洲精品无码日韩国产不卡?V| 午夜一级免费视频| 午夜国产精品免费观看 | 四虎精品免费永久免费视频| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲高清无在码在线电影不卡| 国产aⅴ无码专区亚洲av麻豆| 免费国产成人高清在线观看麻豆| 色窝窝免费一区二区三区| 在线观看www日本免费网站|