規則引擎集成數據庫操作

在一般項目開發中,用的最多的是基於數據庫管理系統,雖說現在對關係型數據庫出來了很多的替代方案,但是在實際正式的項目中,我們基本上還是使用關係型數據庫來進行開發。
    在項目開發的過程中,我們主要是抓住幾個關鍵的地方。一個就是數據庫結構的設計,以及操作該數據庫的SQL語句。雖說現在Hibernate等可以不用再書寫SQL語句來進行開發,但是對於高級設計人員來說,SQL語句還是最簡潔和快速的開發方法。書寫一個複雜一些的SQL語句,可以極大的提高性能和減少開發工作量。
     第二個關鍵的地方是對數據的處理邏輯,現在做系統喜歡組件化、服務化。就是說我一個服務,或者說一個數據處理邏輯,我可以開放不同的接口供不同來源的客戶端調用。比如可以通過HTTP提交的方式來調用,可以通過SOAP的服務來調用,可以通過Ajax的提交來調用,可以通過SOCKET通訊來調用等等。因此保證數據處理邏輯的正確穩定,是最關鍵的,這個涉及的系統的安全性和穩定性。
     第三個關鍵的地方就是用戶操作界面,用戶操作界面目前用的最多的還是DHTML和Javascript,當然有些應用中用到Flex等技術,但相對應用還是比較少。用戶操作界面的改進要求,表面上看是最不重要的,但是確實用戶最關心的,也是用戶意見最大的地方,也是最消耗程序員工作量的地方。
    現在的系統開發,不希望重複製造輪子,因此有很多現有的技術可以用。比如在數據庫層,用了Hibernate或者IBatis等,在業務邏輯層,用到Spring,Struts等,在前端界面層用到了Ext,JQuery等。
     但這些只是一些底層的框架,在此基礎上,還需要在封裝一些平臺或者組件。現在主流的就是工作流平臺。目前的工作流很多時候,已經不完全是專門爲工作流服務的了,都或多或少帶了一些快速開發平臺的功能。因爲在做工作流的過程中,除了處理了核心的流程控制、權限控制、表單設計、數據結構之外,都會覺得其實大部分的應用開發,都可以採用工作流的這些表單設計以及流程控制來走。因此就在此基礎上,擴展了相應的功能。
    但是由於工作流主要側重在於流程的控制,當很多應用都通過工作流引擎來處理時,發現性能是個很大的瓶頸。或者說有些功能,工作流實現起來非常麻煩,又要擴展工作流,使得功能變得太複雜,難以維護。
    因此在工作流平臺的實現中,就會希望將一些非流程控制的部分,和流程控制部分分離出來。這就是規則引擎的初衷,希望規則引擎能單獨處理非流程控制部分,並且處理好性能。
    但是目前主流的一些規則引擎其初衷並不是去處理這些部分,而是管理複雜、雷同、數據結構穩定的業務規則。因此只有在規則引擎中集成了數據庫操作,才能滿足工作流引擎中,處理非流程控制部分。
    要實現在規則引擎中集成數據庫操作,首先必須使得數據庫層是動態的。比如像現有的Hibernate等就不能支持動態的特性,因爲Hibernate需要根據XML說明需要重新生成Java類,而這些類的應用必須重新啓動服務器。因此首先需要開發一批能夠動態變更的數據庫層。在此基礎上,在規則編輯器中,增加對數據庫結構的動態獲取支持,也就是說可以直接去讀取數據庫中的表結構等,對應的得到相應的數據庫層。
    只有在這兩個基礎上,規則引擎集成數據庫層才真正有用。規則引擎來實現業務邏輯控制時,才真正的體現出大量的節約的開發工作量,也使得業務邏輯層的實現變得簡單。
    這樣,就可以將更多的精力集中在數據庫結構的設計以及用戶操作界面的改進。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章