摘 要: 本文提出並實現了一種資料驅動的命令介面產生方案,以一致的方式產生所有命令的介面元素,能方便靈活地適應命令的修改變化。
關鍵詞: 資料驅動;命令; Java
在典型的公司專屬應用程式軟體中,應用一般會提供一組命令作為使用者與應用程式之間的介面。隨著企業需求的變化和技術的發展,要求對原來的命令需要做出調整,比如增加命令,修改命令參數等,這可能需要修改應用程式,以產生調整後的命令介面。本文提出並實現了一種資料驅動的命令介面產生方案,該方案以一致的方式來處理所有命令,最大限度地保證命令的增加、刪除、修改,不需要或很少需要修改應用程式。
1 資料驅動方案的提出和思想
通常情況下,應用程式根據自己的商務邏輯進行介面設計,對於一條具體的命令,開發人員需要編寫介面產生代碼以產生該命令的介面元素,如功能表項目、參數輸入對話方塊等.在應用的命令數量不大時,這是比較直接的做法.但當應用程式套件含有成百上千條命令時,還要逐一地為每條命令產生介面元素,無疑是件繁瑣的事情。此外,隨著應用的升級,可能要求對原有的命令系統做出修改,這又要求修改代碼以產生修改後的命令介面元素。我們希望能有一種實現方法可以方便靈活產生命令的介面元素並適應命令將來調整的需要,而對我們程式的影響最小。
考察應用的所有命令可發現,雖然各命令的功能意義不同,但命令組成形式卻有很大的相似性,都包括命令標識和零個或多個參數,而且為每條命令編寫的介面產生代碼也非常近似。因此我們可以以一種統一的方法來處理所有命令。資料驅動的命令介面產生方案的主要思想正基於此,以某種方式對應用的所有命令統一進行描述,通過描述資料來驅動所有命令的介面元素產生。本文使用資料庫表完成對所有命令的原始描述。
參數的性質是通過其資料類型來反映的,只需根據實際應用,定義本應用中參數可能的各種資料類型.而資料類型的種類總是有限的,通過對每一種資料類型給出其處理辦法,就可以實現對為數眾多的參數的處理轉為對有限種的資料類型的處理。
2 命令的資料庫表描述
以資料庫表中對命令的描述為出發點,以後命令的增加、刪除、修改及命令參數的變動只需修改描述表中的相關項目.命令一般包括命令標識和參數,但為更有效地對命令進行組織管理和適應更複雜應用的需要,對命令的描述通過定義命令類型描述表、命令描述表、命令參數描述表、枚舉描述表四級結構來完成.命令類型欄位和命令欄位聯合確定一條唯一的命令,提供直觀的名字字元和數值編碼兩種方式以適應不同需要。參數表中定義了參數類型和取值要求,枚舉表是為特殊的參數類型設定的,其取值是在一些選擇項中選取。各級表除了給出本表定義對象的基本屬性外,如果有下級元素,還給出了下級元素的個數及其在下級表中的位置,通過這種方式將一條命令的各構成部分關聯起來.下面給出這種表結構的一個簡單樣本。
· 命令類型描述表:描述命令的分類.
| 唯一標誌 |
編號 |
名字 |
命令的個數 |
命令描述位置 |
| ct_00010 |
248 |
系統管理類 |
2 |
c_00010 |
表1 命令類型描述
· 命令描述表: 描述具體命令
| 唯一標誌 |
編號 |
名字 |
參數的個數 |
參數描述位置 |
| c_00010 |
1 |
系統聯絡請求 |
1 |
p_00010 |
| c_00011 |
2 |
系統複位 |
0 |
|
表2 命令描述表
· 命令參數描述表: 描述各命令的參數.參數的值是在使用者調用命令時設定的,事先無法確定.我們只是對參數的性質做出一些約束。資料類型的種類視具體應用而定,應用可以為每種類型指定一數值編號,在表中填寫參數資料類型的編號值。參數的最大值最小值給出了參數的取值範圍或長度限制。
| 唯一標誌 |
名字 |
資料類型 |
最大值 |
最小值 |
枚舉的個數 |
枚舉描述位置 |
| p_00010 |
是否要求響應 |
9 |
|
|
2 |
e_00010 |
| p_00020 |
源檔案名稱 |
13 |
32 |
|
0 |
|
表3 命令參數描述表
· 枚舉描述表:給出枚舉型別參數的枚舉項
| 唯一標誌 |
枚舉名 |
枚舉值 |
| e_00010 |
要求響應 |
1 |
| e_00011 |
不要求響應 |
0 |
表4:枚舉描述表
以上表1隻表4的內容僅提供一般性的示範,實際應用可根據商務邏輯的需要定義自己的命令內容,命令的規模不受限制.