通信專(zhuān)業(yè)計(jì)費(fèi)規(guī)則引擎的運(yùn)用
時(shí)間:2022-08-16 09:54:11
導(dǎo)語(yǔ):通信專(zhuān)業(yè)計(jì)費(fèi)規(guī)則引擎的運(yùn)用一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
在通信業(yè)高速發(fā)展的今天,新業(yè)務(wù)層出不窮,各業(yè)務(wù)的處理邏輯、流程五花八門(mén)。譬如,語(yǔ)音業(yè)務(wù)包括市話、長(zhǎng)途、漫游、可視通話等;短信包括短信、彩信等;數(shù)據(jù)業(yè)務(wù)包括手機(jī)上網(wǎng)、無(wú)線上網(wǎng)卡業(yè)務(wù)等;增值業(yè)務(wù)包括手機(jī)電視、手機(jī)音樂(lè)等。使用這些業(yè)務(wù)所產(chǎn)生的使用事件類(lèi)型更是多種多樣,譬如長(zhǎng)途事件可分為省內(nèi)長(zhǎng)途、國(guó)內(nèi)長(zhǎng)途、港澳臺(tái)長(zhǎng)途、國(guó)際長(zhǎng)途等。批價(jià)或賬務(wù)模塊需要確定、區(qū)分這些使用事件類(lèi)型,針對(duì)不同業(yè)務(wù)采用不同的方法處理。如果在代碼中列出目前所有的事件因素,然后根據(jù)不同情況來(lái)分別判斷,這樣雖然可以滿足現(xiàn)狀,但程序就沒(méi)有了擴(kuò)展性。如果新增一項(xiàng)業(yè)務(wù)、其所需的事件因素又不同于已有數(shù)據(jù),這樣程序就需升級(jí),否則就不能開(kāi)展此業(yè)務(wù)?;谏鲜銮闆r,專(zhuān)業(yè)計(jì)費(fèi)軟件必須對(duì)各項(xiàng)業(yè)務(wù)進(jìn)行分析,抽象出其本質(zhì)屬性,使用通用的算法和基于事件驅(qū)動(dòng)的模式,才能實(shí)現(xiàn)支撐全業(yè)務(wù)融合計(jì)費(fèi)的目標(biāo),更有力地支撐、推動(dòng)業(yè)務(wù)發(fā)展。規(guī)則引擎算法可以滿足這一要求。
1規(guī)則引擎算法的通用性
規(guī)則引擎算法,是根據(jù)輸入對(duì)象的屬性,依次將屬性值與預(yù)期結(jié)果進(jìn)行比較,通過(guò)則進(jìn)行下一個(gè)屬性的判斷,不通過(guò)則比較另一個(gè)預(yù)期結(jié)果,如此形成一個(gè)遞歸,直至能確定一個(gè)唯一的輸出對(duì)象。根據(jù)上述思路,由屬性來(lái)驅(qū)動(dòng)下一步判斷,算法可以不對(duì)輸入對(duì)象和輸出對(duì)象做限定;并且是遞歸處理,不限制屬性間是“且”還是“或”的關(guān)系,屬性和預(yù)期結(jié)果都是在數(shù)據(jù)庫(kù)配置,對(duì)象的屬性和個(gè)數(shù)不必固定。至此,其實(shí)現(xiàn)了不區(qū)分業(yè)務(wù)的通用性。比如在新增3G可視電話業(yè)務(wù)時(shí),配置完相應(yīng)的參數(shù)后,可以使用規(guī)則引擎算法確定一張?jiān)攩蔚氖褂檬录?lèi)型。如圖1所示,首先從詳單文件中取出一條話單,判斷該話單的交換機(jī)屬性(即字段)的值:若等于1則表示為固網(wǎng)交換機(jī)產(chǎn)生的話單,若等于2則為2G語(yǔ)音交換機(jī)產(chǎn)生的話單,若等于3則為3G語(yǔ)音交換機(jī)產(chǎn)生的話單。假設(shè)此值等于3,說(shuō)明該話單為3G語(yǔ)音通話,接下來(lái)判斷其中的可視標(biāo)識(shí)屬性:若該屬性值為0,表示該話單是3G語(yǔ)音非可視通話;為1,則為3G語(yǔ)音可視通話。接下來(lái)判斷呼叫類(lèi)型。根據(jù)詳單中的各屬性值可最終確定此詳單是3G可視主叫通話還是3G可視被叫通話事件。通過(guò)上圖的簡(jiǎn)單說(shuō)明,可以發(fā)現(xiàn)規(guī)則引擎算法易用、通用,不但適用于判斷事件類(lèi)型,而且只要是這種復(fù)雜的業(yè)務(wù)流程判斷,配置一下參數(shù)即可使用。
2規(guī)則引擎算法采用事件驅(qū)動(dòng)機(jī)制
全業(yè)務(wù)運(yùn)營(yíng)情況下,業(yè)務(wù)復(fù)雜多樣,新業(yè)務(wù)層出不窮。下面介紹一下計(jì)費(fèi)系統(tǒng)使用規(guī)則引擎算法、采用事件驅(qū)動(dòng)技術(shù)來(lái)解決這類(lèi)問(wèn)題。采用事件驅(qū)動(dòng)機(jī)制,可以有效解決各業(yè)務(wù)的處理邏輯變更和新增業(yè)務(wù)流程的情況。比如同樣是交通工具,公共汽車(chē)主要是流程驅(qū)動(dòng)的,其路線已預(yù)先設(shè)定;出租車(chē)主要是事件驅(qū)動(dòng)的,其路線是由隨機(jī)搭載的乘客所決定的。很顯然出租車(chē)更加靈活。同時(shí),事件驅(qū)動(dòng)極大提高了事件處理效率,減少了不必要的步驟。規(guī)則引擎算法采用了類(lèi)似于windows操作系統(tǒng)的事件驅(qū)動(dòng)機(jī)制,利用動(dòng)態(tài)鏈接庫(kù)技術(shù),可為不同的輸入事件配置不同的處理步驟。事件類(lèi)型決定了此業(yè)務(wù)的后續(xù)處理流程,不同業(yè)務(wù)的事件類(lèi)型不一樣,所走的批價(jià)路徑也就不同。即事件類(lèi)型相當(dāng)于乘客,規(guī)則引擎相當(dāng)于出租車(chē),批價(jià)路徑相當(dāng)于出租車(chē)行駛路線,這樣就實(shí)現(xiàn)了事件驅(qū)動(dòng)的功能。如果按照公共汽車(chē)模式,使用一個(gè)批價(jià)路徑,即該批價(jià)路徑需要處理所有的業(yè)務(wù),勢(shì)必所有的業(yè)務(wù)都必須經(jīng)過(guò)一些不必要的步驟,既浪費(fèi)時(shí)間且不具擴(kuò)展性,容易出現(xiàn)無(wú)法支撐業(yè)務(wù)的情況。將規(guī)則引擎算法應(yīng)用在批價(jià)向?qū)е校鞒倘鐖D2所示。如圖2所示,根據(jù)輸入的使用事件,對(duì)使用事件屬性進(jìn)行有效性規(guī)則檢查。然后根據(jù)事件屬性,找出使用事件的類(lèi)型、業(yè)務(wù)、號(hào)段歸屬、用戶資料等信息。未能通過(guò)有效性檢查和信息查找及標(biāo)準(zhǔn)化的使用事件被拋出,成為異常事件。通過(guò)檢查后,根據(jù)用戶的號(hào)碼歸屬信息進(jìn)行判斷:如果不是本省用戶,則進(jìn)入漫游用戶使用事件處理流程;對(duì)本省用戶進(jìn)行查找,有用戶資料的進(jìn)入本省用戶使用事件處理流程,無(wú)用戶資料的進(jìn)入無(wú)主使用事件處理流程。當(dāng)然,具體實(shí)現(xiàn)比圖2復(fù)雜得多。若將上述各步驟配置在規(guī)則引擎算法里,則能大大降低流程變更及新增流程的風(fēng)險(xiǎn),使批價(jià)向?qū)У奶幚砹鞒谈屿`活。
3規(guī)則引擎算法的性能
規(guī)則引擎算法是通過(guò)屬性判斷以決定下一步的動(dòng)作,因此,影響其性能的關(guān)鍵點(diǎn)在于屬性值和預(yù)期值的比較上。如何才能快速地找到與屬性匹配的預(yù)期值?經(jīng)過(guò)試驗(yàn),哈希算法和二分法是比較有效的兩種方式。在所有屬性的預(yù)期值都較少的情況下,比如每個(gè)都不超過(guò)5個(gè),程序通過(guò)遍歷的方式來(lái)匹配預(yù)期值也可達(dá)到理想效果。但若一個(gè)屬性的預(yù)期值有幾十個(gè)或上百成千個(gè),遍歷的性能則非常低。使用哈希算法,程序動(dòng)態(tài)地根據(jù)每個(gè)屬性的預(yù)期值的個(gè)數(shù),分別選擇合適的哈希值,可有效降低比較次數(shù),根據(jù)屬性值快速定位預(yù)期值。根據(jù)預(yù)期值的規(guī)律選擇合適的哈希算法,和根據(jù)預(yù)期值的個(gè)數(shù)選擇合適的哈希值,其時(shí)間復(fù)雜度是O(1),可見(jiàn)性能較高。當(dāng)屬性預(yù)期值數(shù)據(jù)量很大時(shí),適宜采用二分法。采用二分法查找時(shí),數(shù)據(jù)需是排好序的。因此,程序運(yùn)行時(shí)會(huì)將預(yù)期值進(jìn)行排序,之后可使用二分法比較。其時(shí)間復(fù)雜度為O(nlog2n),最大的查找次數(shù)是O(log2n!),最小的次數(shù)為1。規(guī)則引擎算法支持上述算法,可根據(jù)不同情況(預(yù)期值的個(gè)數(shù))選擇遍歷、二分法或哈希算法來(lái)定位預(yù)期值。
4結(jié)束語(yǔ)
規(guī)則引擎算法簡(jiǎn)化了復(fù)雜的流程判斷,增強(qiáng)了程序擴(kuò)展性和易維護(hù)性,極大地減少了全業(yè)務(wù)配置、新增業(yè)務(wù)、新增流程所產(chǎn)生的工作量。算法思路簡(jiǎn)單,容易使用,適用性廣,且效率高,可廣泛應(yīng)用于通信專(zhuān)業(yè)計(jì)費(fèi)軟件中,靈活判斷、高效處理,能更好地支撐業(yè)務(wù)發(fā)展。