<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

    報表引擎:結構生成與結構轉換

    Posted on 2007-09-02 09:45 canonical 閱讀(1677) 評論(1)  編輯  收藏 所屬分類: Witrix開發平臺
       傳統上報表引擎主要完成兩項工作:結構描述和結構轉換。一般報表設計人員通過可視化設計工具完成對報表結構的描述,然后報表引擎根據這些描述生成不同格式的報表文件,如PDF格式,XLS格式等。這一圖景中報表設計工具扮演著關鍵角色,因為它不僅僅是向用戶提供一個直觀的界面,更重要的是配置過程本身就是一種分步驟的結構構造過程。理想的情況是用戶指定報表中具體有哪些單元格,表格具體有哪些列,而在運行期報表引擎負責向單元格中填充數據。但是對于設計期只能進行動態描述,無法預先確定所有結構元素的報表(例如交叉表的列只能在執行時確定),這種報表模型就會出現問題。一般處理方式都是在報表引擎中內置所有可能的動態報表模型。無論設計工具多么復雜,其內置的原理如果是基于靜態結構模型,就無法建立一種抽象機制,這樣我們就只能通過重復勞動來應對眾多結構類似但是略有不同的報表。
       Witrix平臺的報表引擎是對程序友好的,它引入了編譯期結構運算,在報表編譯時可以通過程序吸收大部分結構差異性。在Witrix平臺中,報表制作分為三個階段:設計期 -> 編譯期 -> 運行期。報表引擎負責完成三種工作:結構描述,結構生成和結構轉換。具體實現動態結構生成的過程其實非常簡單。目前所有的Witrix配置文件都通過基礎配置引擎進行解析,它定義了統一的dynamic和extends元機制。
       <report dynamic="true">
    定義了dynamic="true"的報表定義文件首先作為tpl模板文件來運行,其運行結果再作為報表格式解析。在這種模型下,報表引擎并沒有內置如何把動態結構拼接出來的知識,這些知識存在于編譯期,而tpl標簽的抽象能力使得我們可以把復雜的報表結構生成過程抽象成簡單的標簽調用形式。
       <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>

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

    Feedback

    # re: 報表引擎:結構生成與結構轉換  回復  更多評論   

    2007-09-10 16:57 by pfind365
    dalu0756.cn網上開店系統,QQ:495198971

    大路購物系統網站:http://www.dalu0756.cn/

    無需專業知識就可以輕松管理建設自己獨立的網絡銷售平臺!

    只要您會打字,就可以方便的建立自己的網上商店,開展業務!
    主站蜘蛛池模板: 成人免费福利电影| 午夜无遮挡羞羞漫画免费| 亚洲人成影院在线无码按摩店| 国产亚洲日韩在线a不卡| 日本免费电影一区| 亚洲av成人一区二区三区在线播放| 在线观看视频免费完整版| 亚洲天堂中文字幕在线观看| 在线观看免费视频资源| 亚洲成年人免费网站| 黄色免费网站网址| 亚洲中文字幕无码爆乳app| 欧美a级成人网站免费| 亚洲日韩av无码中文| 免费国内精品久久久久影院| 全部在线播放免费毛片| 亚洲日韩精品射精日| 一区二区免费视频| 亚洲成a人片在线看| 免费无码黄网站在线观看| 老司机午夜性生免费福利 | 亚洲av日韩av天堂影片精品| 亚洲视频免费播放| 亚洲日本一线产区和二线产区对比| 热99re久久精品精品免费| 国产高潮久久免费观看| 亚洲国产一区国产亚洲| 免费观看成人毛片a片2008| 国产成人va亚洲电影| 久久亚洲国产精品五月天| 日本zzzzwww大片免费| 亚洲国产精品无码久久98| 国产AV无码专区亚洲AV漫画| 亚洲精品视频在线免费| 国产偷国产偷亚洲清高APP| 亚洲中文字幕不卡无码| 毛片免费观看网址| 久久免费香蕉视频| 亚洲无码一区二区三区| 亚洲人成网亚洲欧洲无码久久| 无人在线观看完整免费版视频|