業務規則引擎的實現方法及系統與流程
2023-05-20 00:34:11
本發明涉及計算機技術領域,特別涉及一種業務規則引擎的實現方法及系統。
背景技術:
業務規則引擎是一項在線運行業務規則的服務。通過將業務規則執行代碼與業務流程管理系統的其他代碼分開,使業務人員通過規則編輯器靈活編輯、調整業務規則邏輯。
然而,目前的業務規則引擎通常是使用開源的drools工具而實現的。drools工具是基於java程序運行的,而由於java程序自身的並發處理限制,在一定的javaweb伺服器資源下,業務規則引擎對多進程的響應時間較長,大大影響了業務規則引擎的處理效率。
技術實現要素:
為了解決相關技術中實現業務規則引擎多進程的響應時間較長的技術問題,本發明提供了一種業務規則引擎的實現方法及系統。
本發明實施例提供了一種業務規則引擎的實現方法,包括:
監聽專用web平臺的運行,確定新收事件;
針對業務規則庫中的每一個業務規則,對所述新收事件與所述業務規則中的規則條件進行匹配運算,確定與所述新收事件匹配的規則條件;
對所述規則條件對應的規則動作進行多進程執行。
另外,本發明實施例提供了一種業務規則引擎的實現系統,包括:
新收事件確定模塊,用於監聽專用web平臺的運行,確定新收事件;
規則條件確定模塊,用於針對業務規則庫中的每一個業務規則,對所述新收事件與所述業務規則中的規則條件進行匹配運算,確定與所述新收事件匹配的規則條件;
動作執行模塊,用於對所述規則條件對應的規則動作進行多進程執行。
此外,本發明實施例還提供了一種系統,包括:
處理器;
用於存儲處理器可執行指令的存儲器;
其中,所述處理器被配置為執行:
監聽專用web平臺的運行,確定新收事件;
針對業務規則庫中的每一個業務規則,對所述新收事件與所述業務規則中的規則條件進行匹配運算,確定與所述新收事件匹配的規則條件;
對所述規則條件對應的規則動作進行多進程執行。
本發明的實施例提供的技術方案可以包括以下有益效果:
在業務規則引擎的實現過程中,監聽專用web平臺的運行,確定新收事件,針對業務規則庫中的每一個業務規則,對所述新收事件與所述業務規則中的規則條件進行匹配運算,確定與所述新收事件匹配的規則條件,對所述規則條件對應的規則動作進行多進程執行,從而通過專用web平臺實現業務規則引擎中的多進程執行,減短了多進程的響應時間,大大影響了業務規則引擎的處理效率。
應當理解的是,以上的一般描述和後文的細節描述僅是示例性的,並不能限制本發明。
附圖說明
此處的附圖被併入說明書中並構成本說明書的一部分,示出了符合本發明的實施例,並與說明書一起用於解釋本發明的原理。
圖1是根據一示例性實施例示出的一種業務規則引擎的實現方法流程圖。
圖2是根據圖1對應實施例示出的另一種業務規則引擎的實現方法流程圖。
圖3是根據圖2對應實施例示出的另一種業務規則引擎的實現方法流程圖。
圖4是圖1對應實施例示出的分布式分配方法中步驟s130的一種具體實現流程圖。
圖5是圖4對應實施例示出的分布式分配方法中步驟s132的一種具體實現流程圖。
圖6是根據一示例性實施例示出的一種業務規則引擎的實現系統框圖。
圖7是根據圖6對應實施例示出的另一種業務規則引擎的實現系統框圖。
圖8是根據圖7對應實施例示出的另一種業務規則引擎的實現系統框圖。
圖9是圖6對應實施例示出的業務規則引擎的實現系統中動作執行模塊130的框圖。
圖10是圖9對應實施例示出的業務規則引擎的實現系統中函數對象執行子模塊132的框圖。
圖11是根據一示例性實施例示出的一種系統的結構框圖。
具體實施方式
這裡將詳細地對示例性實施例執行說明,其示例表示在附圖中。以下示例性實施例中所描述的實施方式並不代表與本發明相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本發明的一些方面相一致的裝置和方法的例子。
圖1是根據一示例性實施例示出的一種業務規則引擎的實現方法流程圖。如圖1所示,該業務規則引擎的實現方法可以包括以下步驟。
在步驟s110中,監聽專用web平臺的運行,確定新收事件。
專用web平臺是進行web開發的專業平臺。通過專用web平臺,實現軟體的二次開發。
專用web平臺採用非編碼的方式或者是極少編碼的方式,實現資源的共享,從而節約開發成本、提高開發效率、縮短開發周期。
在一具體的示例性實施例中,專用web平臺為openresty平臺。openresty平臺是一個基於nginx與lua的高性能web平臺,其內部集成了大量精良的lua庫、第三方模塊以及大多數的依賴項。用於方便地搭建能夠處理超高並發、擴展性極高的動態web應用、web服務和動態網關。
openresty平臺為開源的專用web平臺,參考https://openresty.org/cn/getting-started.html學習如何從最簡單的helloworld開始使用openresty開發http業務,或前往https://openresty.org/cn/download.html直接獲取openresty的原始碼包開始體驗。
openresty是國內註冊商標,註冊人為章亦春,商標專用期為2016年4月7日至2026年4月6日。
事件可以為專用web平臺接收到的執行指令,也可以為其它類型的操作指示。
專用web平臺中,根據新收事件,當存在規則條件滿足該新收事件時,執行對應的規則動作。
在一具體的示例性實施例中,通過監聽openresty平臺中的消息總線,確定openresty平臺中新接收的事件。
在步驟s120中,針對業務規則庫中的每一個業務規則,對新收事件與業務規則中的規則條件進行匹配運算,確定與新收事件匹配的規則條件。
業務規則庫是預先構建的,業務規則庫中存儲了多種業務規則。
業務規則是與業務相關的操作規範、管理章程、規章制度、行業標準等。業務規則描述了業務過程中重要的且值得記錄的對象、關係和活動。其中包括業務操作中的流程、規範與策略。業務規則保證了業務能滿足其目標和義務。
業務規則包括規則條件與規則動作等。
規則條件是規則動作觸發執行的條件。
業務規則中,規則條件是與規則動作相對應的。當業務規則中的規則條件滿足時,則觸發執行相應的規則動作。
在步驟s130中,對規則條件對應的規則動作進行多進程執行。
openresty平臺中,基於lua(一種腳本語言)實現規則動作的多進程執行。lua能提供了10k以上的多進程執行,而java能夠提供的最大多進程數為500,從而通過lua大大提高了業務規則引擎的處理能力。
通過如上所述的方法,在openresty平臺中,基於lua實現業務規則引擎中的多進程執行,減短了多進程的響應時間,大大影響了業務規則引擎的處理效率。
圖2是根據一示例性實施例示出的一種業務規則引擎的實現方法流程圖。如圖2所示,在圖1對應實施例中的步驟s120之前,該業務規則引擎的實現方法還可以包括以下步驟。
在步驟s210中,接收業務規則的界面化編輯。
界面化編輯是在終端顯示界面進行的業務規則編輯。
在用戶層面,其可通過界面中預置的按鈕及輸入框,接收輸入的相關編輯內容。
在步驟s220中,根據界面化編輯,生成業務規則對應的業務規則代碼。
可以理解的是,界面化編輯是面向對象的。
根據面向對象的界面化編輯,利用程序語言將編輯內容映射成相應的業務規則代碼。
通過界面化編輯,使業務規則的創建者或維護者無需了解程序語言,就能實現業務規則代碼的生成,大大降低了業務規則引擎的使用門檻。
在一具體的示例性實施例中,業務規則代碼是業務規則對應的lua語言代碼。
在步驟s230中,將業務規則代碼以業務規則為標識存儲於業務規則庫中。
利用如上所述的方法,通過界面化編輯進行業務規則的創建並存儲於業務規則庫,大大降低了業務規則引擎的創建及使用門檻,提高了業務規則引擎的使用效率。
圖3是根據一示例性實施例示出的一種業務規則引擎的實現方法流程圖。如圖3所示,在圖2對應實施例中的步驟s230之前,該業務規則引擎的實現方法還可以包括以下步驟。
在步驟s310中,接收業務規則庫中的更新指令。
可以理解的是,根據實際需要對業務規則庫中的業務規則進行更新,從而更好的滿足業務需求。
輸入更新指令的方式有多種,例如通過界面化編輯輸入相應的更新指令,又例如,通過對業務規則對應的代碼進行編輯觸發輸入相應的更新指令。
在步驟s320中,根據規則更新,對相應的業務規則進行代碼更新。
利用如上所述的方法,通過接收更新指令對相應的業務規則進行更新,從而使業務規則更加適應實際業務需求,大大提高了業務規則引擎的處理效率。
圖4是根據一示例性實施例示出的對步驟s130進一步的細節的描述。該步驟s130可以包括以下步驟。
在步驟s131中,針對每一個與新收事件匹配的規則條件,將規則條件對應的業務規則解析生成對應的函數對象,並存儲於內存中。
解析是對業務規則進行語法分析。
函數對象是類對象,表現出一個函數的特徵。
函數對象可以定義跨越多次調用的可持久的部分(類似靜態局部變量),同時又能從對象的外面進行初始化和檢查(和靜態局部變量不同),從而通過將業務規則解析生成函數對象,更方便地執行業務規則。
在步驟s132中,對內存中的函數對象進行多進程執行。
由於函數對象存儲於內存中,在專用web平臺的運行中執行業務規則時,無需頻繁地訪問磁碟,避免引起磁碟的性能瓶頸,大大提高了利用專用web平實現業務規則引擎的開發效率。
圖5根據一示例性實施例示出的對圖4中步驟s132進一步的細節描述。業務規則配置有優先級,該步驟s132可以包括以下步驟。
在步驟s1321中,獲取內存中每一個函數對象對應的優先級。
優先級是業務規則的執行優先順序。
業務規則配置有優先級時,在業務規則被解析成函數對象後,該業務規則對應的函數對象將配置相應的優先級。
例如,業務規則a配置的優先級為1,業務規則b配置的優先級為1。將業務規則a解析成函數對象a1、a2、a3,將業務規則b解析成函數對象b1、b2,則函數對象a1、a2、a3對應的優先級為1,而函數對象b1、b2對應的優先級為2。
在步驟s1322中,按照優先級的順序,進行函數對象的多進程執行。
例如,業務規則a配置的優先級為1,業務規則b配置的優先級為1。將業務規則a解析成函數對象a1、a2、a3,將業務規則b解析成函數對象b1、b2,則函數對象a1、a2、a3對應的優先級為1,而函數對象b1、b2對應的優先級為2。對函數對象a1、a2、a3和函數對象b1、b2執行時,根據優先級順序,在執行完函數對象a1、a2、a3後,再執行函數對象b1、b2。
利用如上所述的方法,通過獲取各函數對象的優先級,並根據優先級順序進行函數對象的多進程執行,從而更靈活地進行業務規則處理,大大提高了實現業務規則引擎的開發性能。
下述為本發明系統實施例,可以用於執行上述業務規則引擎的實現方法實施例。對於本發明系統實施例中未披露的細節,請參照本發明業務規則引擎的實現方法實施例。
圖6是根據一示例性實施例示出的一種業務規則引擎的實現系統框圖,該系統包括但不限於:新收事件確定模塊110、規則條件確定模塊120及動作執行模塊130。
新收事件確定模塊110,用於監聽專用web平臺的運行,確定新收事件;
規則條件確定模塊120,用於針對業務規則庫中的每一個業務規則,對所述新收事件與所述業務規則中的規則條件進行匹配運算,確定與所述新收事件匹配的規則條件;
動作執行模塊130,用於對所述規則條件對應的規則動作進行多進程執行。
上述系統中各個模塊的功能和作用的實現過程具體詳見上述業務規則引擎的實現方法中對應步驟的實現過程,在此不再贅述。
圖7是根據圖6對應實施例示出的一種業務規則引擎的實現系統框圖,該系統還包括但不限於:編輯接收模塊210、代碼生成模塊220及規則存儲模塊230。
編輯接收模塊210,用於接收業務規則的界面化編輯;
代碼生成模塊220,用於根據所述界面化編輯,生成所述業務規則對應的業務規則代碼;
規則存儲模塊230,用於將所述業務規則代碼以所述業務規則為標識存儲於所述業務規則庫中。
圖8是根據圖7對應實施例示出的一種業務規則引擎的實現系統框圖,該系統還包括但不限於:更新指令接收模塊310及規則更新模塊320。
更新指令接收模塊310,用於接收所述業務規則庫中的更新指令;
規則更新模塊320,用於根據所述更新指令,對相應的業務規則進行更新。
可選的,如圖9所示,圖6中的動作執行模塊130包括但不限於:規則解析子模塊131和函數對象執行子模塊132。
規則解析子模塊131,用於針對每一個與所述新收事件匹配的規則條件,將所述規則條件對應的業務規則解析生成對應的函數對象,並存儲於內存中;
函數對象執行子模塊132,用於對所述內存中的函數對象進行多進程執行。
可選的,如圖10所示,圖9中的函數對象執行子模塊132包括但不限於:優先級獲取單元1321和函數對象執行單元1322。
優先級獲取單元1321,用於獲取所述內存中每一個函數對象對應的優先級;
函數對象執行單元1322,用於按照所述優先級的順序,進行函數對象的多進程執行。
圖11是根據一示例性實施例示出的一種系統100的框圖。參考圖11,系統100可以包括以下一個或者多個組件:處理組件101,存儲器102,電源組件103,多媒體組件104,音頻組件105,傳感器組件107以及通信組件108。其中,上述組件並不全是必須的,系統100可以根據自身功能需求增加其他組件或減少某些組件,本實施例不作限定。
處理組件101通常控制系統100的整體操作,諸如與顯示,電話呼叫,數據通信,相機操作以及記錄操作相關聯的操作等。處理組件101可以包括一個或多個處理器109來執行指令,以完成上述操作的全部或部分步驟。此外,處理組件101可以包括一個或多個模塊,便於處理組件101和其他組件之間的交互。例如,處理組件101可以包括多媒體模塊,以方便多媒體組件104和處理組件101之間的交互。
存儲器102被配置為存儲各種類型的數據以支持在系統100的操作。這些數據的示例包括用於在系統100上操作的任何應用程式或方法的指令。存儲器102可以由任何類型的易失性或非易失性存儲設備或者它們的組合實現,如sram(staticrandomaccessmemory,靜態隨機存取存儲器),eeprom(electricallyerasableprogrammableread-onlymemory,電可擦除可編程只讀存儲器),eprom(erasableprogrammablereadonlymemory,可擦除可編程只讀存儲器),prom(programmableread-onlymemory,可編程只讀存儲器),rom(read-onlymemory,只讀存儲器),磁存儲器,快閃記憶體,磁碟或光碟。存儲器102中還存儲有一個或多個模塊,該一個或多個模塊被配置成由該一個或多個處理器109執行,以完成圖1、圖2、圖3、圖4和圖5任一所示方法中的全部或者部分步驟。
電源組件103為系統100的各種組件提供電力。電源組件103可以包括電源管理系統,一個或多個電源,及其他與為系統100生成、管理和分配電力相關聯的組件。
多媒體組件104包括在所述系統100和用戶之間的提供一個輸出接口的屏幕。在一些實施例中,屏幕可以包括lcd(liquidcrystaldisplay,液晶顯示器)和tp(touchpanel,觸摸面板)。如果屏幕包括觸摸面板,屏幕可以被實現為觸控螢幕,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與所述觸摸或滑動操作相關的持續時間和壓力。
音頻組件105被配置為輸出和/或輸入音頻信號。例如,音頻組件105包括一個麥克風,當系統100處於操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器102或經由通信組件108發送。在一些實施例中,音頻組件105還包括一個揚聲器,用於輸出音頻信號。
傳感器組件107包括一個或多個傳感器,用於為系統100提供各個方面的狀態評估。例如,傳感器組件107可以檢測到系統100的打開/關閉狀態,組件的相對定位,傳感器組件107還可以檢測系統100或系統100一個組件的位置改變以及系統100的溫度變化。在一些實施例中,該傳感器組件107還可以包括磁傳感器,壓力傳感器或溫度傳感器。
通信組件108被配置為便於系統100和其他設備之間有線或無線方式的通信。系統100可以接入基於通信標準的無線網絡,如wifi(wireless-fidelity,無線網絡),2g或3g,或它們的組合。在一個示例性實施例中,通信組件108經由廣播信道接收來自外部廣播管理系統的廣播信號或廣播相關信息。在一個示例性實施例中,所述通信組件108還包括nfc(nearfieldcommunication,近場通信)模塊,以促進短程通信。例如,在nfc模塊可基於rfid(radiofrequencyidentification,射頻識別)技術,irda(infrareddataassociation,紅外數據協會)技術,uwb(ultra-wideband,超寬帶)技術,bt(bluetooth,藍牙)技術和其他技術來實現。
在示例性實施例中,系統100可以被一個或多個asic(applicationspecificintegratedcircuit,應用專用集成電路)、dsp(digitalsignalprocessing,數位訊號處理器)、pld(programmablelogicdevice,可編程邏輯器件)、fpga(field-programmablegatearray,現場可編程門陣列)、控制器、微控制器、微處理器或其他電子元件實現,用於執行上述方法。
該實施例中的系統的處理器執行操作的具體方式已經在有關該業務規則引擎的實現方法的實施例中執行了詳細描述,此處將不再做詳細闡述說明。
可選的,本發明還提供一種系統,執行圖1、圖2、圖3、圖4和圖5任一所示的業務規則引擎的實現方法的全部或者部分步驟。所述系統包括:
處理器;
用於存儲處理器可執行指令的存儲器;
其中,所述處理器被配置為執行:
監聽專用web平臺的運行,確定新收事件;
針對業務規則庫中的每一個業務規則,對所述新收事件與所述業務規則中的規則條件進行匹配運算,確定與所述新收事件匹配的規則條件;
對所述規則條件對應的規則動作進行多進程執行。
該實施例中的系統的處理器執行操作的具體方式已經在有關該業務規則引擎的實現方法的實施例中執行了詳細描述,此處將不做詳細闡述說明。
在示例性實施例中,還提供了一種存儲介質,該存儲介質為計算機可讀存儲介質,例如可以為包括指令的臨時性和非臨時性計算機可讀存儲介質。該存儲介質例如包括指令的存儲器102,上述指令可由系統100的處理器109執行以完成上述業務規則引擎的實現方法。
應當理解的是,本發明並不局限於上面已經描述並在附圖中示出的精確結構,本領域技術人員可以在不脫離其範圍執行各種修改和改變。本發明的範圍僅由所附的權利要求來限制。