時間:2005-07-19 作者: 瀏覽次數(shù): 4032 本文關(guān)鍵字:業(yè)務(wù)規(guī)則, Portal, 平臺 |
|
面向服務(wù)的架構(gòu)(SOA)能提供調(diào)整業(yè)務(wù)流程和技術(shù)實(shí)現(xiàn)過程中所需的靈活性。此處對帶有封裝的功能的服務(wù)進(jìn)行了定義,這些服務(wù)通過標(biāo)準(zhǔn)化的接口和協(xié)議(如SOAP、WSDL、UDDI或J2EE連接器架構(gòu))訪問各種系統(tǒng)(可能包括現(xiàn)存的系統(tǒng))的功能。通過將服務(wù)封送或“編排”進(jìn)可執(zhí)行的業(yè)務(wù)流程中,SOA可參考業(yè)務(wù)用戶的觀點(diǎn)對技術(shù)觀點(diǎn)進(jìn)行調(diào)整。目前,業(yè)務(wù)流程建模是基于所謂的“工作流管理系統(tǒng)”完成的。在建模過程中,會將業(yè)務(wù)流程映射為描述語言(已標(biāo)準(zhǔn)化或正在標(biāo)準(zhǔn)化)。利用這一點(diǎn),無需“硬編碼”即可對業(yè)務(wù)流程進(jìn)行調(diào)整,從而在運(yùn)行時即時滿足各種新要求。在《BIT》雜志的“銀行業(yè)與信息技術(shù)”(2004年第2卷第3期)中,討論了此架構(gòu)在銀行中與各種工作流符號(如eEPK、UML活動圖、BPEL、XPDL以及JPD)結(jié)合的一個實(shí)現(xiàn)。
為了提高業(yè)務(wù)流程實(shí)現(xiàn)的抽象層次和靈活性,業(yè)務(wù)規(guī)則引擎可以部署在SOA框架內(nèi)。這些規(guī)則引擎將業(yè)務(wù)流程內(nèi)的決策從用編程語言完成的實(shí)際實(shí)現(xiàn)隔離開來。
業(yè)務(wù)規(guī)則與企業(yè)平臺
在分析例子之前,有必要了解一下“業(yè)務(wù)規(guī)則”這個術(shù)語的含義以及此領(lǐng)域已有的標(biāo)準(zhǔn)。
業(yè)務(wù)規(guī)則
對于銀行而言,管理機(jī)構(gòu)、競爭對手、客戶和整個市場情況不斷帶來各種變更,必須將這些變更作為業(yè)務(wù)規(guī)則。業(yè)務(wù)規(guī)則專家組 (BRG) 規(guī)定了業(yè)務(wù)規(guī)則的兩個定義。第一個定義與業(yè)務(wù)觀點(diǎn)相關(guān),而第二個定義與IT相關(guān):
運(yùn)行時,規(guī)則引擎 必須對這些業(yè)務(wù)規(guī)則進(jìn)行解釋??梢詫⒁?guī)則引擎理解為一種高性能的專用解釋程序,其中包含if-then命令,可根據(jù)預(yù)先定義的規(guī)則對轉(zhuǎn)換的值和對象進(jìn)行分析,然后返回修改后的值和對象,或直接執(zhí)行操作。因此,大多數(shù)規(guī)則引擎使用“Rete” 算法,并支持演繹和歸納。
為了彌合業(yè)務(wù)觀點(diǎn)和IT觀點(diǎn)間的差距,就產(chǎn)生了對業(yè)務(wù)規(guī)則管理系統(tǒng)(BRMS)的需求。在BRMS中,會將公司使用的策略和過程進(jìn)行結(jié)合,以管理業(yè)務(wù)規(guī)則的整個生命周期。因此,受影響的部門和非IT人員必須能夠?qū)崟r地修改IT基礎(chǔ)架構(gòu),以適應(yīng)一般條件和策略。
企業(yè)平臺
企業(yè)平臺(EP)可以看作SOA集成開發(fā)與運(yùn)行時環(huán)境,這個環(huán)境涵蓋了全公司范圍的IT基礎(chǔ)架構(gòu)。此類平臺的功能分布在三個層次:門戶層、集成層和應(yīng)用程序服務(wù)器層。
門戶層實(shí)現(xiàn)所有相關(guān)的信息和應(yīng)用程序“單點(diǎn)訪問”,保證真正單點(diǎn)實(shí)現(xiàn)客戶、業(yè)務(wù)合作伙伴及員工訪問。門戶和有關(guān)資源的訪問權(quán)由用戶角色決定,以方便內(nèi)容管理和實(shí)現(xiàn)個性化。
集成層提供所有需要的服務(wù),用于連接應(yīng)用程序、業(yè)務(wù)流程和業(yè)務(wù)合作伙伴,以及在各種應(yīng)用程序間進(jìn)行數(shù)據(jù)集成和數(shù)據(jù)轉(zhuǎn)換。
應(yīng)用程序服務(wù)器層是企業(yè)平臺的基礎(chǔ)。應(yīng)用程序服務(wù)器必須滿足與(全局)事務(wù)的實(shí)現(xiàn)、管理和協(xié)調(diào)有關(guān)的所有要求,并提供高性能、高可用性和可伸縮性。
標(biāo)準(zhǔn)
廣泛使用異構(gòu)計(jì)算機(jī)系統(tǒng),則意味著要采用標(biāo)準(zhǔn),以達(dá)到必要的互操作水平。通常將互操作性理解為通信和協(xié)作的能力,可允許一個系統(tǒng)內(nèi)的應(yīng)用程序訪問另一個系統(tǒng)內(nèi)的數(shù)據(jù)或程序。使用標(biāo)準(zhǔn)的另一個目的是定義通用接口,以支持對互操作進(jìn)行編程。
Java Specification Request (JSR) 94描述了軟件工程師如何通過API將規(guī)則引擎集成到應(yīng)用程序中,以及規(guī)則引擎供應(yīng)商必須如何實(shí)現(xiàn)此類API。
不過,JSR 94沒有提供描述業(yè)務(wù)規(guī)則的定義。JSR 94的目標(biāo)是在不確定規(guī)則引擎供應(yīng)商的情況下幫助把規(guī)則引擎集成到Java 應(yīng)用程序中。JSR 94沒有為任何類型的業(yè)務(wù)規(guī)則(如,基于XML的、基于統(tǒng)一數(shù)據(jù)的或基于對象模型的)指定描述語言。
規(guī)則集的實(shí)驗(yàn)性實(shí)現(xiàn)
現(xiàn)在把我們的注意力轉(zhuǎn)向規(guī)則集的一個實(shí)驗(yàn)。我們將首先研究實(shí)驗(yàn)本身,然后再分析其在WebLogic Portal 8.1和ILOG Jrules中的實(shí)現(xiàn)。
場景
我們的實(shí)驗(yàn)解決兩個問題。首先是采用“push 概念”的方式進(jìn)行面向事件的客戶處理,即根據(jù)其在EP門戶內(nèi)的需求主動處理客戶。在面向事件的客戶處理的上下文中,會利用基于用戶給定的事件的業(yè)務(wù)規(guī)則,向已登錄的用戶顯示個性化的內(nèi)容。此類規(guī)則與以下所示類似:
如果用戶具有影響信用額度的“change of house”事件,而此事件尚未發(fā)生,則將向年滿18歲或18歲以上的用戶顯示一個信用額度啟事。
該規(guī)則轉(zhuǎn)換為ECAA符號(Event, Condition, Action, Alternative Action)如下所示:
ON | Change of house |
IF | Customer credit-worthy AND above 18 AND not yet addressed |
DO | Show credit advertisement |
ELSE | --- |
其次,是在集成層內(nèi)將規(guī)則引擎(各個業(yè)務(wù)規(guī)則)集成到業(yè)務(wù)流程的建模和運(yùn)行庫中。這是基于在線貸款業(yè)務(wù)流程實(shí)現(xiàn)的,此流程中具有自動信用確定功能和后臺辦公流程(在此處通過規(guī)則引擎進(jìn)行決策)。
我們的目標(biāo)是在WebLogic Platform 8.1和ILOG JRules中實(shí)現(xiàn)所有這些問題。
利用BEA WebLogic 8.1 Service Pack 3進(jìn)行實(shí)現(xiàn)
門戶規(guī)則服務(wù)屬于Weblogic Portal 8.1,用于在門戶應(yīng)用程序中實(shí)現(xiàn)個性化。它的實(shí)現(xiàn)需要借助不同組件:
user segments、campaigns、content selectors以及Java Server Pages (JSP)內(nèi)的個性化標(biāo)簽。
WebLogic Workshop 8.1具有合適的用戶界面,利用此界面,可以在很高的抽象層次上更改這些組件。更重要的是,2004年發(fā)布的Service Pack 3能提供對附加組件的API訪問,可直接訪問基礎(chǔ)規(guī)則引擎。這就是規(guī)則控件和“RulesManager” Enterprise JavaBean (EJB)。
WebLogic Portal 8.1規(guī)則包含稱為規(guī)則集的XML文檔。規(guī)則集的基本設(shè)置如下所示:
<ruleset><rule><condition>Left Hand Side expression: Event (ON) and Condition (IF)</condition><action>Right Hand Side expression: Action (DO)</action></rule></ruleset>
所有的規(guī)則都以ruleset元素內(nèi)的rule元素的形式出現(xiàn)。此處映射左邊(LHS)表達(dá)式,即Event (ON) and Condition (IF)。單獨(dú)的元素是condition,在此元素內(nèi)可以將條件與邏輯運(yùn)算符鏈接。如果LHS為true,則將執(zhí)行RHS(位于action元素內(nèi))的Action (DO)。也可以在工作內(nèi)存中對轉(zhuǎn)換過的對象進(jìn)行操作,或在其中創(chuàng)建新對象。不過,可能對象的列表(類型映射)僅限于小部分的類型。
可以從WebLogic Platform 8.1的所有主要組件訪問規(guī)則引擎,特別是集成層和門戶層。
由于規(guī)則引擎的對象類型數(shù)據(jù)有限,故而不可能實(shí)現(xiàn)在線貸款流程。因此必須將ILOG的規(guī)則引擎作為插件安裝。
利用ILOG JRules 4.6進(jìn)行實(shí)現(xiàn)
ILOG JRules 4.6是一套完整的BRMS,可以將其視為目前業(yè)務(wù)規(guī)則領(lǐng)域的行業(yè)標(biāo)準(zhǔn)。圖2演示了如何將BRMS集成到Java 2 Enterprise Edition (J2EE)架構(gòu)中。
圖2摘自ILOG JRules 4.6白皮書。在JRules 4.6中可以使用全部應(yīng)用程序?qū)ο竽P?,包括所有XML架構(gòu)。Java和XML對象被組合為一個業(yè)務(wù)對象模型 (BOM)。利用BOM,可以將對象及其方法轉(zhuǎn)換為自然語言的短語。因此,例如將對象Customer分配給短語“the customer”,將方法getAge分配給“the age of”。則抽象為自然語言的示例規(guī)則如下所示:
If the age of the customer is greater than 18 And ... Then ...
其中,粗體部分顯示的是Rule Builder的既定元素,下劃線部分顯示的是BOM中的翻譯,而斜體部分顯示的是Rule Builder內(nèi)的用戶輸入。
也可以采用規(guī)則集的方式組織這些規(guī)則。對象(Java 和 XML)加載到內(nèi)存中后,就可以根據(jù)這些規(guī)則集進(jìn)行運(yùn)行。然后規(guī)則可以操縱或創(chuàng)建任何的對象。規(guī)則集和BOM保存在規(guī)則庫中。因此,規(guī)則管理程序和管理員可以根據(jù)其角色對規(guī)則進(jìn)行訪問、更新和部署,從而涵蓋業(yè)務(wù)規(guī)則的整個生命周期(創(chuàng)建、部署、更新、刪除)。
比較
WebLogic Portal 8.1提供了業(yè)務(wù)規(guī)則功能,但到目前為止,此功能只是用于WebLogic Platform 8.1內(nèi)的活動管理和用戶分段。Service Pack 3 通過提供API增強(qiáng)了規(guī)則引擎的功能。不過,其使用仍然僅限于進(jìn)行個性化。ILOG JRules 4.6具有無限制的規(guī)則引擎,是一套完整的BRMS。
實(shí)現(xiàn)的結(jié)果表明WebLogic Portal 8.1的規(guī)則功能適用于較為簡單的個性化和活動管理任務(wù)。創(chuàng)建和更新活動和用戶分段已集成到WebLogic Workshop 8.1 IDE中,能在高抽象層次執(zhí)行這些任務(wù),且只能由具有適當(dāng)權(quán)限的人員執(zhí)行此類任務(wù)。不過,只能在WebLogic Platform 8.1環(huán)境中部署規(guī)則引擎,不能在任何其他供應(yīng)商的平臺上使用。
對于更復(fù)雜的個性化規(guī)則(通過結(jié)合AND和OR語句),可以使用規(guī)則服務(wù)定義XML格式的規(guī)則集。不過,必須在本機(jī)XML中創(chuàng)建和編輯規(guī)則。XML編輯器還不足以涵蓋相應(yīng)的抽象層次,而且,相對于Java代碼映射而言,具有多于三個條件的規(guī)則和包含兩個以上規(guī)則的規(guī)則集都更加復(fù)雜化,更加容易混淆。
ILOG JRules 4.6本身就是一個靈活的BRMS,涵蓋了業(yè)務(wù)規(guī)則的整個生命周期。ILOG JRules 4.6內(nèi)的規(guī)則引擎是J2EE應(yīng)用程序,可以部署到任何J2EE項(xiàng)目。另外,ILOG能輕松集成到IDE環(huán)境中,可以利用Java控件調(diào)用規(guī)則引擎。對于較大規(guī)模的項(xiàng)目來說,集成和使用ILOG JRules 4.6一類的規(guī)則管理系統(tǒng)是可能的,也是值得這樣做的。最后,結(jié)果表明,對于面向事件的客戶處理和銀行業(yè)務(wù)流程工業(yè)化二者的實(shí)現(xiàn)而言,ILOG JRules 4.6這樣的BRMS是絕對必不可少的。
結(jié)束語
如其他行業(yè)早期一樣,銀行正面臨將推動該行業(yè)進(jìn)一步發(fā)展的結(jié)構(gòu)變更。在這種情況下,銀行業(yè)關(guān)心的主要問題是業(yè)務(wù)的劃分、全球跨行業(yè)務(wù)往來,技術(shù)集成以及持續(xù)的數(shù)字化進(jìn)程。
為了應(yīng)對即將來臨的變更,業(yè)務(wù)流程(從技術(shù)觀點(diǎn)出發(fā))必須不斷靈活且迅速地處理好新的挑戰(zhàn)。解決此問題的可能方法之一就是使用EP和EAI。為了讓相關(guān)部門獲得更強(qiáng)的業(yè)務(wù)處理能力,必須進(jìn)一步將業(yè)務(wù)邏輯從IT和實(shí)現(xiàn)端分離。利用業(yè)務(wù)規(guī)則和BRMS可以做到這一點(diǎn)。ILOG等BRMS可以輕松與BEA WebLogic Platform和WebLogic Workshop IDE實(shí)現(xiàn)集成。對于想在銀行業(yè)以贏家身份出現(xiàn)的企業(yè)而言,將這些工具結(jié)合在一起使用可以獲得明顯的競爭優(yōu)勢。
參考資料
Daniel Jobst在德國的雷根斯堡大學(xué)ibi研究中心工作,該中心專門致力于研究銀行業(yè)IT與技術(shù)革新。其研究的主要領(lǐng)域是企業(yè)平臺、集成方案和業(yè)務(wù)規(guī)則管理系統(tǒng)。除了進(jìn)行研究工作外,Daniel還為數(shù)家銀行提供集成和規(guī)則項(xiàng)目咨詢。
Rainer von Ammon自2002年起在上奧地利州應(yīng)用科學(xué)技術(shù)大學(xué)擔(dān)任軟件工程教授,專門研究電子商務(wù)基礎(chǔ)架構(gòu)和分布式系統(tǒng)。他還擔(dān)任德國雷根斯堡大學(xué)銀行情報(bào)學(xué)院研究中心的主任。
Benjamin Gebauer在德國的雷根斯堡大學(xué)ibi研究中心工作,該中心專門致力于研究銀行業(yè)IT與技術(shù)革新。其研究的主要領(lǐng)域是企業(yè)平臺、集成方案和業(yè)務(wù)規(guī)則管理系統(tǒng)。除了進(jìn)行研究工作外,Benjamin還為數(shù)家銀行提供集成和規(guī)則項(xiàng)目咨詢。
原文出處
http://dev2dev.bea.com/pub/a/2005/04/business_rules_engines.html
聯(lián)系客服