接下來就是處理業(yè)務規(guī)則的代碼了。在列表D中,我用一個指針在表格中迭代,該表格中的記錄都保存著元數(shù)據(jù)。當可以用一種不同的循環(huán)結構來完成同一個邏輯時,用指針要簡單一些。不管是怎么樣完成的,都需要用某種類型的迭代循環(huán)和執(zhí)行所需要的業(yè)務程序。運行這個代碼將執(zhí)行每一個文章前面所定義的四個存儲過程。
在列表D中,有兩個主要引人注意的地方。第一個就是用來從表格中檢索記錄的select語句,所檢索的記錄中包含了處理業(yè)務規(guī)則的信息。從這個簡單的查詢中,我可以為任何類型的業(yè)務處理從BusinessLogic表中返回行。我還能保證規(guī)則是活動的,并且按照它們需要執(zhí)行的順序返回。
第二個就是執(zhí)行業(yè)務規(guī)則的方式。當指針迭代時,它從BusinessLogic表中檢索將要被執(zhí)行的存儲過程的名稱,然后將其儲存在一個邏輯變量中。EXECUTE命令允許用戶執(zhí)行存儲過程,即使該存儲過程的名稱被儲存在一個變量中。在這種方式下,調(diào)用存儲過程還使得我能夠向存儲過程中輸入所需的參數(shù)。
這使我回到了先前關于業(yè)務程序具有相同數(shù)量的輸入?yún)?shù)這一點。我能夠以一種相當動態(tài)的方式運行業(yè)務程序,這取決于在程序運行時BusinessLogic表中儲存了什么。但是,現(xiàn)在我還沒有一種方法可以動態(tài)地向業(yè)務程序輸入?yún)?shù)。
一種簡單的解決辦法就是保證所有的業(yè)務程序接受相同數(shù)量的參數(shù),不管用不用它們。這種技術保證我們始終為業(yè)務程序提供所需的參數(shù)。也有其他的方法可以實現(xiàn)這些所需參數(shù)的輸入,但是那些不是這篇文章所要討論的。
扼要重述
如果您的應用程序在數(shù)據(jù)庫中儲存它的任何一個或全部業(yè)務邏輯,那么有可能它就是被我稱作業(yè)務規(guī)則鏈接的一個候選者。這種方法允許存儲過程在數(shù)據(jù)庫中依次運行,并且讓您能夠在需要的時候打開或終止這些業(yè)務規(guī)則。使用這種方法的一些潛在缺陷包括數(shù)據(jù)安全(執(zhí)行業(yè)務程序的數(shù)據(jù)儲存在一個表格中),和向業(yè)務邏輯程序輸入?yún)?shù)的非動態(tài)性。如果您覺得對于您的業(yè)務問題來說,這種方法利大于弊的話,我鼓勵您嘗試一下這種方法。