通信專業(yè)計費規(guī)則引擎的運用

時間:2022-08-16 09:54:11

導語:通信專業(yè)計費規(guī)則引擎的運用一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

通信專業(yè)計費規(guī)則引擎的運用

通信業(yè)高速發(fā)展的今天,新業(yè)務層出不窮,各業(yè)務的處理邏輯、流程五花八門。譬如,語音業(yè)務包括市話、長途、漫游、可視通話等;短信包括短信、彩信等;數(shù)據(jù)業(yè)務包括手機上網(wǎng)、無線上網(wǎng)卡業(yè)務等;增值業(yè)務包括手機電視、手機音樂等。使用這些業(yè)務所產(chǎn)生的使用事件類型更是多種多樣,譬如長途事件可分為省內(nèi)長途、國內(nèi)長途、港澳臺長途、國際長途等。批價或賬務模塊需要確定、區(qū)分這些使用事件類型,針對不同業(yè)務采用不同的方法處理。如果在代碼中列出目前所有的事件因素,然后根據(jù)不同情況來分別判斷,這樣雖然可以滿足現(xiàn)狀,但程序就沒有了擴展性。如果新增一項業(yè)務、其所需的事件因素又不同于已有數(shù)據(jù),這樣程序就需升級,否則就不能開展此業(yè)務?;谏鲜銮闆r,專業(yè)計費軟件必須對各項業(yè)務進行分析,抽象出其本質(zhì)屬性,使用通用的算法和基于事件驅(qū)動的模式,才能實現(xiàn)支撐全業(yè)務融合計費的目標,更有力地支撐、推動業(yè)務發(fā)展。規(guī)則引擎算法可以滿足這一要求。

1規(guī)則引擎算法的通用性

規(guī)則引擎算法,是根據(jù)輸入對象的屬性,依次將屬性值與預期結(jié)果進行比較,通過則進行下一個屬性的判斷,不通過則比較另一個預期結(jié)果,如此形成一個遞歸,直至能確定一個唯一的輸出對象。根據(jù)上述思路,由屬性來驅(qū)動下一步判斷,算法可以不對輸入對象和輸出對象做限定;并且是遞歸處理,不限制屬性間是“且”還是“或”的關(guān)系,屬性和預期結(jié)果都是在數(shù)據(jù)庫配置,對象的屬性和個數(shù)不必固定。至此,其實現(xiàn)了不區(qū)分業(yè)務的通用性。比如在新增3G可視電話業(yè)務時,配置完相應的參數(shù)后,可以使用規(guī)則引擎算法確定一張詳單的使用事件類型。如圖1所示,首先從詳單文件中取出一條話單,判斷該話單的交換機屬性(即字段)的值:若等于1則表示為固網(wǎng)交換機產(chǎn)生的話單,若等于2則為2G語音交換機產(chǎn)生的話單,若等于3則為3G語音交換機產(chǎn)生的話單。假設此值等于3,說明該話單為3G語音通話,接下來判斷其中的可視標識屬性:若該屬性值為0,表示該話單是3G語音非可視通話;為1,則為3G語音可視通話。接下來判斷呼叫類型。根據(jù)詳單中的各屬性值可最終確定此詳單是3G可視主叫通話還是3G可視被叫通話事件。通過上圖的簡單說明,可以發(fā)現(xiàn)規(guī)則引擎算法易用、通用,不但適用于判斷事件類型,而且只要是這種復雜的業(yè)務流程判斷,配置一下參數(shù)即可使用。

2規(guī)則引擎算法采用事件驅(qū)動機制

全業(yè)務運營情況下,業(yè)務復雜多樣,新業(yè)務層出不窮。下面介紹一下計費系統(tǒng)使用規(guī)則引擎算法、采用事件驅(qū)動技術(shù)來解決這類問題。采用事件驅(qū)動機制,可以有效解決各業(yè)務的處理邏輯變更和新增業(yè)務流程的情況。比如同樣是交通工具,公共汽車主要是流程驅(qū)動的,其路線已預先設定;出租車主要是事件驅(qū)動的,其路線是由隨機搭載的乘客所決定的。很顯然出租車更加靈活。同時,事件驅(qū)動極大提高了事件處理效率,減少了不必要的步驟。規(guī)則引擎算法采用了類似于windows操作系統(tǒng)的事件驅(qū)動機制,利用動態(tài)鏈接庫技術(shù),可為不同的輸入事件配置不同的處理步驟。事件類型決定了此業(yè)務的后續(xù)處理流程,不同業(yè)務的事件類型不一樣,所走的批價路徑也就不同。即事件類型相當于乘客,規(guī)則引擎相當于出租車,批價路徑相當于出租車行駛路線,這樣就實現(xiàn)了事件驅(qū)動的功能。如果按照公共汽車模式,使用一個批價路徑,即該批價路徑需要處理所有的業(yè)務,勢必所有的業(yè)務都必須經(jīng)過一些不必要的步驟,既浪費時間且不具擴展性,容易出現(xiàn)無法支撐業(yè)務的情況。將規(guī)則引擎算法應用在批價向?qū)е校鞒倘鐖D2所示。如圖2所示,根據(jù)輸入的使用事件,對使用事件屬性進行有效性規(guī)則檢查。然后根據(jù)事件屬性,找出使用事件的類型、業(yè)務、號段歸屬、用戶資料等信息。未能通過有效性檢查和信息查找及標準化的使用事件被拋出,成為異常事件。通過檢查后,根據(jù)用戶的號碼歸屬信息進行判斷:如果不是本省用戶,則進入漫游用戶使用事件處理流程;對本省用戶進行查找,有用戶資料的進入本省用戶使用事件處理流程,無用戶資料的進入無主使用事件處理流程。當然,具體實現(xiàn)比圖2復雜得多。若將上述各步驟配置在規(guī)則引擎算法里,則能大大降低流程變更及新增流程的風險,使批價向?qū)У奶幚砹鞒谈屿`活。

3規(guī)則引擎算法的性能

規(guī)則引擎算法是通過屬性判斷以決定下一步的動作,因此,影響其性能的關(guān)鍵點在于屬性值和預期值的比較上。如何才能快速地找到與屬性匹配的預期值?經(jīng)過試驗,哈希算法和二分法是比較有效的兩種方式。在所有屬性的預期值都較少的情況下,比如每個都不超過5個,程序通過遍歷的方式來匹配預期值也可達到理想效果。但若一個屬性的預期值有幾十個或上百成千個,遍歷的性能則非常低。使用哈希算法,程序動態(tài)地根據(jù)每個屬性的預期值的個數(shù),分別選擇合適的哈希值,可有效降低比較次數(shù),根據(jù)屬性值快速定位預期值。根據(jù)預期值的規(guī)律選擇合適的哈希算法,和根據(jù)預期值的個數(shù)選擇合適的哈希值,其時間復雜度是O(1),可見性能較高。當屬性預期值數(shù)據(jù)量很大時,適宜采用二分法。采用二分法查找時,數(shù)據(jù)需是排好序的。因此,程序運行時會將預期值進行排序,之后可使用二分法比較。其時間復雜度為O(nlog2n),最大的查找次數(shù)是O(log2n?。?,最小的次數(shù)為1。規(guī)則引擎算法支持上述算法,可根據(jù)不同情況(預期值的個數(shù))選擇遍歷、二分法或哈希算法來定位預期值。

4結(jié)束語

規(guī)則引擎算法簡化了復雜的流程判斷,增強了程序擴展性和易維護性,極大地減少了全業(yè)務配置、新增業(yè)務、新增流程所產(chǎn)生的工作量。算法思路簡單,容易使用,適用性廣,且效率高,可廣泛應用于通信專業(yè)計費軟件中,靈活判斷、高效處理,能更好地支撐業(yè)務發(fā)展。