業務應用的需求總是隨著業務環境的變化趨勢而不斷地改變。決策很少是一成不變的,并且競爭壓力要求業務邏輯的設計和實現具有靈活性,以快速地適應不斷變化的需求。通常,對業務邏輯的更改必須由開發人員來完成,然后進行多次徹底的測試,而這將是一個很耗時的過程。在應用程序的修改工作完成后,需要將其重新部署到服務器,需要留出預定的停機時間,以防應用程序對用戶不可用。
對于這個問題,更好的解決方案是通過應用程序之外的一組規則來實現某些業務決策。這些規則并沒有被編譯到應用程序中,而是在運行時讀取并應用。通過這種方式,無需更改代碼或者停止正在運行的應用程序就可以改變這些規則。
WebLogic Portal包括一個基本的規則引擎,用于使WebLogic Platform應用程序從規則獲益。盡管該引擎不是功能完備的產品,但我們將展示如何將其與WebLogic Integration Business PRocesses (JPDs)一起使用來為業務邏輯提供一種靈活且動態的實現機制,從而無需只為了修改規則而重新部署應用程序。
首先我們來看一下將在全文中使用的示例應用程序,然后介紹如何將規則引擎注入到WLI流程中以實現業務邏輯。然后,我們將更仔細地研究這些規則本身以及如何為業務邏輯定義這些規則,最后將描述在運行中的系統中更改業務規則所使用的機制。
我們將開發一個示例交易應用程序作為在業務流程中使用規則的例子。該交易應用程序是一個金融交易流程的簡化版本,該流程使用調用規則引擎的JPD業務流程而構建。該示例應用程序采用了不同的有價證券交易集合,并根據一組由業務定義的規則將其分組成交易塊以便執行,或許是為了減少傭金。當然,這里給出的應用程序并不完整,但它已經足以展示如何在現實世界應用程序中使用規則引擎。有完整的源代碼可供下載,其中的readme文件提供了構建和運行該應用程序的說明。
在解釋如何開發這樣的應用程序之前,我們先通過對門戶規則引擎的一些特性的簡要概括來了解其工作方式。這里假定讀者熟悉一般的規則技術。
圖1說明了規則引擎的基本情況。該引擎根據一組規則來處理初始的事實集,而這些規則由引擎從外部庫中獲得。初始事實用于為該引擎填充工作內存。由規則來對工作內存中的事實進行評估,假如滿足某條規則的條件,則將執行對應的動作。通常,一個規則動作將向工作內存中添加一條新的事實,并重復該流程直到應用完所有的規則。然后通過可選的過濾器來選擇特定類的對象以返回給調用方??梢酝ㄟ^Controls界面訪問規則引擎,還可以用它來設置屬性(比如規則集文件的位置)。
圖1:該規則引擎是一個由控件包裝的EJB。儲存庫中的規則反復地應用于工作內存中的事實,以獲得新的事實。在無法進行繼續推理的情況下,對工作內存進行過濾以返回感愛好的項目。
讓我們從被實現為JPD的交易業務流程開始,來看看如何添加對規則引擎的調用。要在WLI流程中添加規則,可以使用作為WebLogic Portal的一部分而提供的Rules Executor Control(規則執行器控件)。對于本例,我們只使用該控件中所提供的方法和特性的一個子集。關于規則控件的附加說明文檔可以在參考資料部分找到。
此處假定開發人員使用WebLogic Workshop集成開發環境來創建新的流程應用程序。然后可在該應用程序中創建一個流程項目。因為默認情況下門戶控件在流程項目中不可用,所以需要將這些控件和規則引擎的EJB導入到應用程序。然后,將控件輸入和輸出插入到JPD中。在WLI流程中使用門戶規則引擎的基本步驟如下:
后面我們將更具體地討論其中的每一個步驟。
規則引擎包含在下面的文件中:
/weblogic81/p13n/lib/p13n_ejb.jar
要在應用程序中包含該引擎,請右擊Workshop集成開發環境中的Modules文件夾,并選擇Add Module。導航到該jar文件,并選擇Open。
要使得門戶規則控件在應用程序中可用,請右擊Workshop集成開發環境中的Libraries文件夾,并選擇Add Library。該控件位于:
</weblogic81/p13n/lib/p13n_controls.jar
導航到此文件,單擊 Open 按鈕。
這里使用的Rules Executor控件方法需要一個對象數組作為輸入并返回一個結果的迭代器。在Workshop集成開發環境中為這些值創建變量,這樣我們就可以在下一步中通過圖形用戶界面來創建控件。要完成該任務,請為Data Palette中的變量單擊Add按鈕,鍵入輸入變量的名稱,并鍵入Java類型java.lang.Object[]。使用同樣的方式創建Java類型為java.util.Iterator的輸出變量。
要創建規則控件,請單擊Data Palette中控件的Add按鈕。從菜單中選擇Portal Controls -> Rules Executor。為控件鍵入名稱,并按下Create按鈕。
新聞熱點
疑難解答