數據驅動在大部分中小型系統,尤其是MIS系統中是最為適合的一種開發方式,在之后我也會寫一篇基于數據驅動提升形成的對于業務系統的支持方式的文章,數據驅動也就是說基于持久層的設計來完成整個模塊開發的過程。
MS對于數據驅動的支持無疑非常優秀,從以前的VB到現在的ASP.net 2.0都支持的非常好,而Java界在這方面也是引起了重視,比如由此推出的bstek,就是在java方面的數據驅動上做到了實現。
看看數據驅動的開發方式,通常來說,數據驅動的開發由定義持久層(數據表或持久層對象)、創建數據集(查詢語句)以及綁定數據集至相應的表現層組件(樹、表格)三個步驟來完成,此時基于此數據集的顯示、維護、查詢等均得到了實現,可見這樣的一個開發過程對于數據型的應用來說確實是非常高效的。
根據開發步驟和實現的功能,怎么樣才能滿足數據驅動呢?將其歸納為三方面去看:
1、定義數據集
對于數據集而已,變化的為不同的查詢語句,相同的為根據查詢語句查詢形成的統一的數據集模型。
2、使用數據集 主要又可分為數據集的顯示、查詢和統計分析三個方面。
數據集的顯示 數據集的顯示通常來說為兩種:樹和表格。其中樹又有多種的顯示形式,如單選樹、多選樹等;表格也有多種的顯示形式,如單選表格(用于下拉選擇)、多選表格等,同時還需要支持表格上的豐富的交互(如列排序、行排序等)。
數據集的查詢 數據集的查詢最需要的為自定義形式的查詢,也就是說用戶可自定義查詢的條件構成一個查詢模板,之后用戶即可根據此模板對數據集進行查詢。
數據集的統計分析 通常來說需要支持用戶可自定義根據數據集的列來進行統計分析,圖表化的顯示形式也是必須的。
3、維護數據集(增/刪/改)
對于數據集的維護,其實主要就兩種形式:單表形式的數據集維護以及關聯形式的數據集維護。
關聯形式上主要有:一對多、多對一、多對多以及一對一。
附上一張圖也許能表達的更清楚:

對于支持數據驅動的開發框架而已,最重要的無非就是將通用的部分進行實現,同時將變化或框架無法得知的部分交由開發人員自行實現,對之上的三方面進行分析,可以得知對于框架而言無法得知的為數據集所對應的查詢語句,這就是要開發人員自行實現的,而其他的則均可做到通用,但通用也得考慮用戶怎么樣去控制,如采用表格顯示數據集時,需要控制顯示的列、顯示的列的順序等。
在實現了這些之后,基于數據驅動的開發就變得可行了。
通過這樣的分析后,得到了設計需要解決的問題就是之上的三個方面,只要對之上的三個方面求解成功,就可實現數據驅動的開發框架。
對三個方面分別做分析:
1、定義數據集 不可知的數據集綁定的查詢語句部分交由開發人員自行完成,此處的需要的為一個統一的數據集模型。
統一的數據集模型如何形成呢,這個和數據集的使用以及維護有直接的關系,數據集的使用以及維護的需要可產生出此數據集模型。
2、使用數據集
數據集的顯示
根據開發步驟,開發人員將數據集綁定至相應的表現層組件即可完成數據集的顯示,這個時候在開發框架中就要實現將數據集進行展示,對于表現層組件(樹、表格等)而言需要的為將數據集查詢出來的數據進行展示,這個時候每個組件的需求是不同的,如樹組件就需要知道數據集中數據的父子關聯關系,這樣才能形成樹,而表格組件則比較簡單,只需要按照數據行進行展示即可;表現層組件的不同點交由各表現層組件自己完成,共性的部分進行抽象構成數據集模型,表現層組件就按照數據集模型以及結合自己的一些特性來完成數據集的顯示。
數據集的查詢 需要提供用戶自定義的查詢模板,這個時候在實現角度來說要做的就是根據用戶自定義的查詢模板同時結合數據集綁定的查詢語句組裝形成新的查詢語句,由查詢模板中的各查詢字段自行形成查詢語句的block,最后在提交時將各查詢語句的block進行拼裝即可完成查詢語句的組裝工作。
數據集的統計分析
和查詢有些類似,需要根據用戶的統計條件并結合現有的數據集綁定的查詢語句組裝形成新的查詢語句,將查詢的結果以圖形化的方式進行顯示即可。
3、維護數據集
對數據集的維護進行分析,可以知道在增/刪/改的時候都是對應著一個持久層對象,只是可能同時會涉及該持久層對象的關聯對象的維護,這個時候最重要的就是完全得到該持久層對象的元信息(每個持久屬性的名稱、類型、長度、是否主鍵、是否唯一、是否關聯屬性、關聯對象的名稱等),在擁有了這些元信息后數據集的維護就不難了,根據這些元信息即可組裝出維護的數據集的對象,將對象進行相應的持久動作(保存、更新或刪除)即可。
^_^,上面說的都比較簡單,只是提了一個大概的實現思路,目前我的實現是基于DWR+Spring+Hibernate,在查詢方面做到了可發散式的查詢,也就是比如現在查詢的是用戶,由于用戶和組織機構關聯,則可根據關聯的組織機構的信息來查找這個用戶,同樣的道理在統計分析上也是如此,可以一直發散下去(其實原理很簡單,就是根據關聯對象這點)。