趙志偉
?
智能化規(guī)則引擎技術研究
趙志偉
(星環(huán)眾志科技(北京)有限公司,北京 100044)
在今天這個急劇變化的市場上,高效的業(yè)務決策可以帶來重要的競爭優(yōu)勢。對業(yè)務進行有效的規(guī)則管理就是決策者通過制定規(guī)則采用適合于本企業(yè)的決策模式,以達到企業(yè)管理的一種管理方法。本文闡述了智能化規(guī)則引擎產生的需求背景,詳細介紹了規(guī)則引擎的定義、實現(xiàn)原理。描述了業(yè)務規(guī)則定義,決策矩陣和決策樹的配置原則。以及規(guī)則引擎在與外部業(yè)務系統(tǒng)進行交互的情況下,如何進行有效的測試和系統(tǒng)調用。
規(guī)則引擎;業(yè)務規(guī)則;控制器;決策矩陣;決策樹;邏輯校驗
在很多行業(yè)的企業(yè)級項目應用中,比如銀行、保險領域的業(yè)務規(guī)則往往非常復雜,并且規(guī)則處于不斷更新變化中。而現(xiàn)有很多系統(tǒng)的做法基本上都是將業(yè)務規(guī)則綁定在程序代碼中,整個系統(tǒng)呈現(xiàn)出的業(yè)務規(guī)則與實現(xiàn)程序的緊耦合狀態(tài)非常明顯。
企業(yè)為適應市場的多變性,導致業(yè)務邏輯也必然是多變的。理想情況下,業(yè)務邏輯的改變應該能夠實時的反映在企業(yè)信息系統(tǒng)中。但是傳統(tǒng)的方法往往會使這種反映出現(xiàn)滯后,進而可能使企業(yè)錯過市場機遇。
在企業(yè)IT系統(tǒng)建設過程中如果能夠建立一套規(guī)則引擎[1],將業(yè)務規(guī)則從技術實現(xiàn)中提取出來,實現(xiàn)技術和業(yè)務分離。業(yè)務分析人員定義業(yè)務規(guī)則、開發(fā)人員處理技術實現(xiàn),各自做自己所擅長的事情,將是一種非常好的解決方案。
本文主要研究基于動態(tài)業(yè)務環(huán)境中,業(yè)務人員驅動整個企業(yè)過程的最佳實踐-智能化規(guī)則引擎的原理與實現(xiàn)思路[2-3]。
規(guī)則引擎是一種嵌入在應用程序中的組件,其主要思想是將應用程序中隨著時間、空間動態(tài)易變的業(yè)務決策部分從應用程序代碼中分離出來,使用預定義的語義模塊編寫業(yè)務決策。由用戶或開發(fā)者在需要時進行配置、管理,接受業(yè)務系統(tǒng)的數據輸入,解釋業(yè)務規(guī)則,并根據規(guī)則做出業(yè)務決策的引擎。
業(yè)務系統(tǒng)根據自身需求提供業(yè)務編號和相應的業(yè)務接口信息,將請求信息發(fā)送到規(guī)則管理系統(tǒng)。規(guī)則管理系統(tǒng)接收到業(yè)務系統(tǒng)的請求后,將該請求轉發(fā)到規(guī)則引擎。規(guī)則引擎根據業(yè)務編號再將該請求信息分配到相應的業(yè)務處理模塊進行準入判斷:如果業(yè)務信息觸發(fā)了該筆業(yè)務的準入或者拒絕的條件,則系統(tǒng)不對接口信息判斷直接給出決策結果;如果該請求沒有觸發(fā)準入或者拒絕條件,則進行業(yè)務信息的規(guī)則處理,最終給出決策結果,并將結果響應回業(yè)務系統(tǒng)。
圖1 規(guī)則管理系統(tǒng)業(yè)務處理流程流程
業(yè)務規(guī)則是指對業(yè)務定義和約束的描述[4-5],用于維持業(yè)務結構或控制和影響業(yè)務的行為。業(yè)務規(guī)則描述了業(yè)務過程中重要的且值得記錄的對象、關系和活動。其中包括業(yè)務操作中的流程、規(guī)范與策略等。
業(yè)務規(guī)則技術的基本思想是:將系統(tǒng)處理的業(yè)務邏輯從程序代碼中抽取出來,將其轉變?yōu)楹唵蔚臉I(yè)務規(guī)則,以結構化的業(yè)務規(guī)則數據來表示業(yè)務行為,采用類自然語言來描述,并集中存儲在規(guī)則庫中。
業(yè)務規(guī)則技術的理論基礎是:設置一個或多個最細粒度的事實條件到一個規(guī)則上,當滿足這些條件集合時會觸發(fā)一個或多個操作。以規(guī)則形式捕捉策略語句能提供極大的靈活性和良好的適應性,是企業(yè)保持競爭優(yōu)勢的決定性因素。在市場驅動的情況下,系統(tǒng)架構和模型必須對客戶、競爭對手、合作伙伴和整個市場情況的各種變更及時響應,同時將這些變更產生的需求作為業(yè)務規(guī)則體現(xiàn)到系統(tǒng)中去。
規(guī)則引擎可由用戶根據業(yè)務要求進行單個業(yè)務規(guī)則的創(chuàng)建、編輯和刪除操作,在創(chuàng)建規(guī)則時可以使用系統(tǒng)中已有的決策變量,也可以使用由用戶定義的衍生變量。每個規(guī)則應有對應的原因碼,原因碼可由用戶自行設置。用戶可以設置規(guī)則的觸發(fā)條件(滿足規(guī)則/不滿足規(guī)則時觸發(fā)),在觸發(fā)規(guī)則后系統(tǒng)可按照規(guī)則設置的優(yōu)先級返回觸發(fā)規(guī)則的原因碼。業(yè)務規(guī)則是可以分組管理的,在每個分組中可以設置規(guī)則之間的優(yōu)先級,同時對于不同的規(guī)則分組,也可以設置優(yōu)先級。
以某學校評選學生獎學金為例,根據專業(yè)課平均分和英語四級成績分別評選:
(1)專業(yè)課平均分高于85分,且通過英語四級考試,可評一等獎學金。
(2)專業(yè)課平均分高于85分,沒有通過英語四級考試,可評二等獎學金。
(3)專業(yè)課平均分在75分和85分之間,且通過英語四級考試,可評二等獎學金。
(4)專業(yè)課平均分在75分和85分之間,沒有通過英語四級考試,可評三等獎學金。
根據上述獎學金評選規(guī)則可將規(guī)則梳理成下表形式,每條規(guī)則中的條件可以設置優(yōu)先級判斷,也可以設置成相同的優(yōu)先級并行計算判斷,如表1所示。
根據上面表格內容可在在規(guī)則引擎中繪制4條業(yè)務規(guī)則組件,如圖2所示。
決策矩陣是一種呈表格狀的圖形工具,適用于描述判斷條件較多,各條件又相互組合、有多種決策方案的情況。精確而簡潔的描述復雜邏輯的方式,將多個條件與這些條件滿足后要執(zhí)行的動作相對應。不同于傳統(tǒng)程序語言中的控制語句,決策矩陣能將多個獨立的條件和多個動作直接的聯(lián)系清晰的表示出來。
表1 業(yè)務規(guī)則
Tab.1 Business rules
圖2 規(guī)則列表
決策矩陣能羅列出所有的可能情況,并清晰的指出相應的處理方式,用戶不需要考慮其中的邏輯關系就能看出其中什么樣的動作對應什么樣的情況,相較于程序語言中層層嵌套的邏輯語句具有更加直觀的效果。而所有可能情況的平面羅列,也能避免在程序語言編寫中因為邏輯上的層層嵌套而產生遺漏,尤其在if-then-else結構中else部分是可選的情況下。
根據上一章節(jié)中的業(yè)務規(guī)則列表可編寫如表2所示,決策矩陣。
表2 決策矩陣
Tab.2 Decision matrix
決策樹[6]是一種業(yè)務規(guī)則設定方式,以樹型圖的方式使業(yè)務用戶將一組彼此相關的業(yè)務規(guī)則設定在一起。通過決策樹,業(yè)務用戶可以設定觸發(fā)條件和執(zhí)行結果:樹干部分是各個條件的具體分叉值,樹葉即節(jié)點部分則是各個條件的執(zhí)行結果。從樹根到樹葉,每一條分支都是一條完整的規(guī)則。根據業(yè)務系統(tǒng)需求,規(guī)則引擎支持多種類型的決策結果(包括數值、策略表、政策規(guī)則集、衍生數據腳本、評分模型等)。
規(guī)則引擎配置決策樹過程中,所有的條件和結果都可以由業(yè)務用戶獨立維護。業(yè)務用戶只需要從相關的業(yè)務規(guī)則列表中選擇需要的細分,即可通過拖拽的方式將業(yè)務規(guī)則直接應用于決策樹中。系統(tǒng)添加決策樹分支簡單易行,可以支持分支的拖拽復制功能。也即可以將決策樹中某個節(jié)點之后的內容整體復制后,通過粘貼的方式就可以創(chuàng)建新的分支。每個非葉子節(jié)點的條件均可以提供展開和折疊的功能,使其所屬的所有節(jié)點可以根據要求靈活的調整,以便于用戶維護復雜的決策樹。在對決策樹進行調整的時候,可以通過顯示調整前和調整后的決策樹,讓業(yè)務用戶直觀地觀察到策略樹的變化。
將學校獎學金決策矩陣在規(guī)則引擎中配置成決策樹的形式,展現(xiàn)如圖3所示。
規(guī)則引擎在決策組件繪制完成保存時可自動進行校驗,能夠對所有的業(yè)務規(guī)則、決策矩陣、決策樹組件進行邏輯判斷。檢測組件是否存在異常邏輯,或是否存在差異、重疊、沖突、互斥、冗余、閉環(huán)等問題,以保證流程圖配置的正確性。
系統(tǒng)發(fā)現(xiàn)邏輯錯誤后,可給出警告信息并生成錯誤報告,便于用戶迅速發(fā)現(xiàn)問題所在。
檢測系統(tǒng)是否存在異常,所有的檢驗需提供三種類型的結果輸出:
圖3 決策樹
正常:無需修復,不會影響系統(tǒng)部署和運行。
警告:可以保留,不會影響系統(tǒng)部署和運行。
錯誤:必須修復,否則系統(tǒng)無法部署和運行。
系統(tǒng)可以針對業(yè)務規(guī)則、決策矩陣和決策樹進行不同粒度的測試。
系統(tǒng)支持交互式測試,即系統(tǒng)可根據所選組件自動生成專門的信息錄入頁面,測試所需數據由測試人員手工輸入,同時支持文件導入方式進行多條業(yè)務數據測試。
系統(tǒng)還支持從其他數據源(數據庫、數據文件、數據集合)導入測試數據,進行線下批量測試。
系統(tǒng)同時支持模擬測試,點擊測試按鈕能夠方便快速給出預算結果,但預算結果并不作為真正意義上的決策結果進行存儲,只提供結果預覽功能,供用戶檢查業(yè)務邏輯和結果預期。
系統(tǒng)測試結果可以直觀的形式顯示給用戶,可以隨時查詢歷史測試結果,并可以將測試結果保存到文件中,供后續(xù)分析使用。
試點測試指在測試環(huán)境或生產環(huán)境中隨機選取一部分業(yè)務請求,使用新的策略模型,對其效果與原策略模型進行比較。如果新策略模型效果超過舊策略模型,則將新策略模型運用到更大的業(yè)務群中,從而使效益不斷得到優(yōu)化和改善。
規(guī)則引擎對于試點測試的支持需求如下:
(1)對于不同的法人、機構、業(yè)務部門、用戶級別都可以進行獨立的測試。
(2)新策略模型被引入后,可通過策略報表功能對新舊策略模型的各項指標進行對比,以衡量其有效性。
(3)對執(zhí)行新舊策略模型的執(zhí)行周期具備控制功能:業(yè)務用戶可對策略模型定義一個周期,在定義的周期內同一個業(yè)務不可以既執(zhí)行舊策略模型又執(zhí)行新策略模型。
(4)系統(tǒng)可自行設置新舊策略模型的抽樣比例,并對抽樣比例進行有效性控制。
(5)在策略組件的不同層面上(業(yè)務規(guī)則、決策矩陣、決策樹)均可進行試點測試。對于策略流程的所有節(jié)點,包括所有的葉子節(jié)點和上層的父節(jié)點,也應支持試點測試。
實時調用是指業(yè)務系統(tǒng)與規(guī)則引擎間的數據交互采用實時方式:業(yè)務系統(tǒng)將請求數據發(fā)送給規(guī)則引擎,規(guī)則引擎接收請求信息進行規(guī)則計算,然后將計算結果及時反饋給業(yè)務系統(tǒng)。對于實時決策,規(guī)則引擎所使用的數據由業(yè)務系統(tǒng)提供,因此規(guī)則引擎應具備與業(yè)務系統(tǒng)的實時交互功能。
規(guī)則引擎對于業(yè)務系統(tǒng)的決策請求,應支持分布式的接口調用方式,并具有平臺無關性。實時接口可直接來源于業(yè)務流程系統(tǒng),也可從數據倉庫、數據集市中獲取數據,但是否獲取數據要根據相應的決策要求來確定。
在實時接口中規(guī)則引擎可進行決策變量的匯總、計算、邏輯判斷等,并將處理結果以決策輸出的方式展現(xiàn)給用戶,最終響應到業(yè)務系統(tǒng)。
規(guī)則引擎不僅要對業(yè)務系統(tǒng)提供決策服務,同時也需要調用其他應用系統(tǒng)獲取服務[7]。此時,規(guī)則引擎作為業(yè)務請求的發(fā)起端,也需要具備接收其他應用系統(tǒng)實時反饋響應信息并及時處理的能力。
批量調用也稱非實時交互,是指當天日終批量處理時,規(guī)則引擎,通過數據平臺完成相關數據信息的采集進行離線計算。
對于批量決策,規(guī)則引擎所調用的數據可來源于各業(yè)務系統(tǒng)或ODS系統(tǒng)、數據倉庫、數據集市等。因此規(guī)則引擎應支持與相關系統(tǒng)的批量接口定義,滿足業(yè)務系統(tǒng)的策略實施。
規(guī)則引擎對于批量接口支持數據庫連接、數據文件處理、遠程接口調用。批量策略既可以按照周期的方式自動運行,也可以由業(yè)務用戶手工執(zhí)行。批量調用策略模型后,決策結果信息需響應給業(yè)務系統(tǒng)并保存到本地數據庫。
在業(yè)務用戶進行策略配置時會有調用外部系統(tǒng)數據(人行征信信息、法院失信信息、工商經營異常信息、行政處罰信息、公司關聯(lián)方信息、芝麻信用、金融機構黑名單等)進行對比、校驗,然后根據外部系統(tǒng)的返回結果確定下一策略分支流向的需求。規(guī)則引擎同樣支持外部系統(tǒng)的請求響應,提供權限允許范圍內的各種服務。
規(guī)則引擎作為客戶端或服務端應支持多種協(xié)議的配置,比如soap協(xié)議、socket協(xié)議、webservice,還可以調用外部系統(tǒng)執(zhí)行相關代碼如SAS、SQL、bat、shell、produce等,并接收響應結果進行計算。
規(guī)則引擎是使用在大規(guī)模復雜業(yè)務場景下必備的業(yè)務框架技術[8-10],使用這門技術搭建起來的系統(tǒng)能夠很好的梳理清楚業(yè)務邏輯,并且能夠方便快速的修改業(yè)務邏輯,甚至可以做到需求的實時生效。業(yè)務系統(tǒng)中引入規(guī)則引擎具有如下優(yōu)勢:
(1)分離商業(yè)決策者的商業(yè)決策邏輯和應用開發(fā)者的技術決策。
(2)實現(xiàn)業(yè)務規(guī)則的集中管理,從而快速響應業(yè)務系統(tǒng)的需求變更,加強業(yè)務處理的透明度。
(3)能有效的提高實現(xiàn)復雜邏輯代碼的可維護性。
(4)應付特殊狀況,將客戶一開始沒有提到的業(yè)務邏輯考慮在內。
(5)符合組織對敏捷或迭代開發(fā)過程的使用,提高軟件系統(tǒng)的柔性和適應性。
(6)業(yè)務規(guī)則能作為知識被保留下來,不會隨著關鍵人員的流失而流失。
(7)簡化業(yè)務系統(tǒng)架構,優(yōu)化業(yè)務應用,減少業(yè)務系統(tǒng)中對IT人員的依賴程度。
(8)降低系統(tǒng)的維護成本,方便系統(tǒng)的整合,減少編寫硬代碼業(yè)務規(guī)則的成本和風險。
[1] 陶曉俊, 朱敏. 基于規(guī)則引擎的企業(yè)服務開發(fā)模式[M]. 計算機技術與發(fā)展, 2008, 18(2): 115-118.
[2] 朱思遠, 張雷. 一種分布式規(guī)則引擎的實現(xiàn)方法[J]. 軟件, 2015, 36(12): 158-161.
[3] 王旭峰, 王智立. 基于SOA 的業(yè)務動態(tài)定制的網絡管理系統(tǒng)設計與實現(xiàn)[J]. 軟件, 2015, 36(1): 100-103.
[4] Managing the Business Rules Engine - How to Build a Business Rules Engine - 22 [J]. How to Build A Business Rules Engine, 2004: 1-7.
[5] Wiley Ian Graham.Business Rules Management and Service Oriented Architecture[J]. Whitepaper, 2005
[6] 趙力衡. 基于決策樹的手寫數字識別的應用研究[J]. 軟件, 201, 39(3): 90-94.
[7] 郭晉舟, 詹舒波. 呼叫中心業(yè)務管理系統(tǒng)的研究與設計[J].軟件, 2016, 37(2): 54-57.
[8] (美)伽瑪著, 李英軍, 等譯. 設計模式[M]. 機械工業(yè)出版社, 2000.
[9] 程杰. 大話設計模式[M]. 清華大學出版社, 2007.
[10] (美)迪達著, 李宏東, 等譯. 模式分類(原書第2版)[M]. 機械工業(yè)出版社, 2003-09.
The Research on Intelligent Rule Engine Technology
ZHAO Zhi-wei
(Transwarp Zhongzhi Technology (Beijing) Inc. Beijing 100044)
In today's rapidly changing market, efficient business decisions can bring important competitive advantages. The effective rule management of the business is a management method for the decision makers to adopt the decision-making pattern suitable for the enterprise through the formulation of rules and to achieve the management of the enterprise. This paper elaborates the background of the requirements generated by the rule engine, and introduces the definition and implementation principle of the rule engine in detail. The configuration principles of business rule definition, decision matrix and decision tree are described. And how the rules engine can effectively test and invoke when interacting with an external business system.
Rule engine; Business rules; Controller; Decision matrix; Decision tree; Logic check
TP319
J
10.3969/j.issn.1003-6970.2018.08.014
趙志偉(1982-),男,高級工程師,主要研究方向:內部評級系統(tǒng)、大數據、人工智能、云計算。
本文著錄格式:趙志偉. 智能化規(guī)則引擎技術研究[J]. 軟件,2018,39(8):65-69