<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/

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

    只要您會打字,就可以方便的建立自己的網上商店,開展業務!
    主站蜘蛛池模板: 哒哒哒免费视频观看在线www | 国产一级一片免费播放i| 国产在线精品观看免费观看| 一本天堂ⅴ无码亚洲道久久| 亚洲成A∨人片在线观看不卡| 国产精品无码素人福利免费| 成人浮力影院免费看| 你是我的城池营垒免费看| 狼人大香伊蕉国产WWW亚洲| 亚洲视频国产精品| 亚洲国产一二三精品无码| 国产成人精品免费视频软件| 97视频热人人精品免费| 日本免费大黄在线观看| 精品人妻系列无码人妻免费视频| 亚洲欧洲专线一区| 亚洲另类精品xxxx人妖| 亚洲精品天天影视综合网| 亚洲人成色77777| 久久精品亚洲乱码伦伦中文| 免费一级毛片女人图片| 日本免费高清一本视频| 无码人妻精品一二三区免费| 91在线视频免费播放| 男女免费观看在线爽爽爽视频| 在线美女免费观看网站h| 国产免费网站看v片在线| 9久热精品免费观看视频| 午夜免费国产体验区免费的| 免费亚洲视频在线观看| 美女免费视频一区二区| 老司机亚洲精品影院在线观看| 亚洲AV永久无码天堂影院| 亚洲欧美成人av在线观看| 亚洲日韩精品无码专区加勒比☆ | 美女无遮挡拍拍拍免费视频| 一级黄色免费毛片| 香蕉免费一级视频在线观看| 牛牛在线精品观看免费正| 无码人妻一区二区三区免费视频| 曰批免费视频播放免费|