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

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

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

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

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

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

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

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

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

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

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

4結(jié)束語

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