數(shù)據(jù)驅(qū)動開發(fā)框架實現(xiàn)簡述

          數(shù)據(jù)驅(qū)動在大部分中小型系統(tǒng),尤其是MIS系統(tǒng)中是最為適合的一種開發(fā)方式,在之后我也會寫一篇基于數(shù)據(jù)驅(qū)動提升形成的對于業(yè)務(wù)系統(tǒng)的支持方式的文章,數(shù)據(jù)驅(qū)動也就是說基于持久層的設(shè)計來完成整個模塊開發(fā)的過程。
          MS對于數(shù)據(jù)驅(qū)動的支持無疑非常優(yōu)秀,從以前的VB到現(xiàn)在的ASP.net 2.0都支持的非常好,而Java界在這方面也是引起了重視,比如由此推出的bstek,就是在java方面的數(shù)據(jù)驅(qū)動上做到了實現(xiàn)。
          看看數(shù)據(jù)驅(qū)動的開發(fā)方式,通常來說,數(shù)據(jù)驅(qū)動的開發(fā)由定義持久層(數(shù)據(jù)表或持久層對象)、創(chuàng)建數(shù)據(jù)集(查詢語句)以及綁定數(shù)據(jù)集至相應的表現(xiàn)層組件(樹、表格)三個步驟來完成,此時基于此數(shù)據(jù)集的顯示、維護、查詢等均得到了實現(xiàn),可見這樣的一個開發(fā)過程對于數(shù)據(jù)型的應用來說確實是非常高效的。
          根據(jù)開發(fā)步驟和實現(xiàn)的功能,怎么樣才能滿足數(shù)據(jù)驅(qū)動呢?將其歸納為三方面去看:
          1、定義數(shù)據(jù)集
                對于數(shù)據(jù)集而已,變化的為不同的查詢語句,相同的為根據(jù)查詢語句查詢形成的統(tǒng)一的數(shù)據(jù)集模型。
          2、使用數(shù)據(jù)集
                主要又可分為數(shù)據(jù)集的顯示、查詢和統(tǒng)計分析三個方面。
                數(shù)據(jù)集的顯示
                數(shù)據(jù)集的顯示通常來說為兩種:樹和表格。其中樹又有多種的顯示形式,如單選樹、多選樹等;表格也有多種的顯示形式,如單選表格(用于下拉選擇)、多選表格等,同時還需要支持表格上的豐富的交互(如列排序、行排序等)。
                 數(shù)據(jù)集的查詢
                 數(shù)據(jù)集的查詢最需要的為自定義形式的查詢,也就是說用戶可自定義查詢的條件構(gòu)成一個查詢模板,之后用戶即可根據(jù)此模板對數(shù)據(jù)集進行查詢。
                 數(shù)據(jù)集的統(tǒng)計分析
                 通常來說需要支持用戶可自定義根據(jù)數(shù)據(jù)集的列來進行統(tǒng)計分析,圖表化的顯示形式也是必須的。
          3、維護數(shù)據(jù)集(增/刪/改)
                對于數(shù)據(jù)集的維護,其實主要就兩種形式:單表形式的數(shù)據(jù)集維護以及關(guān)聯(lián)形式的數(shù)據(jù)集維護。
                關(guān)聯(lián)形式上主要有:一對多、多對一、多對多以及一對一。
          附上一張圖也許能表達的更清楚:
          數(shù)據(jù)驅(qū)動.jpg
          對于支持數(shù)據(jù)驅(qū)動的開發(fā)框架而已,最重要的無非就是將通用的部分進行實現(xiàn),同時將變化或框架無法得知的部分交由開發(fā)人員自行實現(xiàn),對之上的三方面進行分析,可以得知對于框架而言無法得知的為數(shù)據(jù)集所對應的查詢語句,這就是要開發(fā)人員自行實現(xiàn)的,而其他的則均可做到通用,但通用也得考慮用戶怎么樣去控制,如采用表格顯示數(shù)據(jù)集時,需要控制顯示的列、顯示的列的順序等。
          在實現(xiàn)了這些之后,基于數(shù)據(jù)驅(qū)動的開發(fā)就變得可行了。
          通過這樣的分析后,得到了設(shè)計需要解決的問題就是之上的三個方面,只要對之上的三個方面求解成功,就可實現(xiàn)數(shù)據(jù)驅(qū)動的開發(fā)框架。
          對三個方面分別做分析:
          1、定義數(shù)據(jù)集
                不可知的數(shù)據(jù)集綁定的查詢語句部分交由開發(fā)人員自行完成,此處的需要的為一個統(tǒng)一的數(shù)據(jù)集模型。
                統(tǒng)一的數(shù)據(jù)集模型如何形成呢,這個和數(shù)據(jù)集的使用以及維護有直接的關(guān)系,數(shù)據(jù)集的使用以及維護的需要可產(chǎn)生出此數(shù)據(jù)集模型。
          2、使用數(shù)據(jù)集
                數(shù)據(jù)集的顯示
                根據(jù)開發(fā)步驟,開發(fā)人員將數(shù)據(jù)集綁定至相應的表現(xiàn)層組件即可完成數(shù)據(jù)集的顯示,這個時候在開發(fā)框架中就要實現(xiàn)將數(shù)據(jù)集進行展示,對于表現(xiàn)層組件(樹、表格等)而言需要的為將數(shù)據(jù)集查詢出來的數(shù)據(jù)進行展示,這個時候每個組件的需求是不同的,如樹組件就需要知道數(shù)據(jù)集中數(shù)據(jù)的父子關(guān)聯(lián)關(guān)系,這樣才能形成樹,而表格組件則比較簡單,只需要按照數(shù)據(jù)行進行展示即可;表現(xiàn)層組件的不同點交由各表現(xiàn)層組件自己完成,共性的部分進行抽象構(gòu)成數(shù)據(jù)集模型,表現(xiàn)層組件就按照數(shù)據(jù)集模型以及結(jié)合自己的一些特性來完成數(shù)據(jù)集的顯示。
                 數(shù)據(jù)集的查詢
                 需要提供用戶自定義的查詢模板,這個時候在實現(xiàn)角度來說要做的就是根據(jù)用戶自定義的查詢模板同時結(jié)合數(shù)據(jù)集綁定的查詢語句組裝形成新的查詢語句,由查詢模板中的各查詢字段自行形成查詢語句的block,最后在提交時將各查詢語句的block進行拼裝即可完成查詢語句的組裝工作。
                 數(shù)據(jù)集的統(tǒng)計分析
                 和查詢有些類似,需要根據(jù)用戶的統(tǒng)計條件并結(jié)合現(xiàn)有的數(shù)據(jù)集綁定的查詢語句組裝形成新的查詢語句,將查詢的結(jié)果以圖形化的方式進行顯示即可。
          3、維護數(shù)據(jù)集
                對數(shù)據(jù)集的維護進行分析,可以知道在增/刪/改的時候都是對應著一個持久層對象,只是可能同時會涉及該持久層對象的關(guān)聯(lián)對象的維護,這個時候最重要的就是完全得到該持久層對象的元信息(每個持久屬性的名稱、類型、長度、是否主鍵、是否唯一、是否關(guān)聯(lián)屬性、關(guān)聯(lián)對象的名稱等),在擁有了這些元信息后數(shù)據(jù)集的維護就不難了,根據(jù)這些元信息即可組裝出維護的數(shù)據(jù)集的對象,將對象進行相應的持久動作(保存、更新或刪除)即可。

          ^_^,上面說的都比較簡單,只是提了一個大概的實現(xiàn)思路,目前我的實現(xiàn)是基于DWR+Spring+Hibernate,在查詢方面做到了可發(fā)散式的查詢,也就是比如現(xiàn)在查詢的是用戶,由于用戶和組織機構(gòu)關(guān)聯(lián),則可根據(jù)關(guān)聯(lián)的組織機構(gòu)的信息來查找這個用戶,同樣的道理在統(tǒng)計分析上也是如此,可以一直發(fā)散下去(其實原理很簡單,就是根據(jù)關(guān)聯(lián)對象這點)。

          posted on 2006-02-08 11:51 BlueDavy 閱讀(3172) 評論(0)  編輯  收藏 所屬分類: Java

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011

          統(tǒng)計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 那曲县| 循化| 中宁县| 旌德县| 沂水县| 京山县| 嘉鱼县| 青河县| 太保市| 莱西市| 蒙自县| 龙山县| 北川| 光泽县| 牟定县| 长春市| 方城县| 铜梁县| 霍州市| 福州市| 宁海县| 徐汇区| 梅河口市| 阳春市| 岑溪市| 招远市| 微山县| 烟台市| 旬阳县| 南岸区| 手游| 雷州市| 平湖市| 江川县| 舞钢市| 突泉县| 雷波县| 尼勒克县| 武定县| 临潭县| 兴和县|