【正文】
析并提取其中的信息,然后把這些信息入庫,將它們以表的結(jié)構(gòu)存放在數(shù)據(jù)庫中,總的來說它實現(xiàn)的是從文件級到表級的過程。入庫前的話單經(jīng)過了預(yù)處理標(biāo)準(zhǔn)化。表 3,帳目組_帳目表入庫后形成的三張表:清單表、費用表和sd表的基表結(jié)構(gòu)如下:EVENT_PREPAYPCS (預(yù)付費PCS話單基表),字段名稱字段含義數(shù)據(jù)類型非空說明event_inst_id話單標(biāo)識DECIMAL(15,0)YPKevent_type_id事件類型DECIMAL(9,0)Ycalling_nbr主叫號碼VARCHAR(20)called_nbr被叫號碼VARCHAR(24)start_time開始時間DATETIME YEAR TO SECONDend_time結(jié)束時間DATETIME YEAR TO SECONDduration時長DECIMAL(9,0)serv_id用戶標(biāo)識DECIMAL(12,0)cust_id客戶標(biāo)識DECIMAL(12,0)cust_category客戶分組DECIMAL(12,0)Yold_file_id原始文件標(biāo)識DECIMAL(12,0)pcs_service_type業(yè)務(wù)類型VARCHAR(10)pcs_rate費率NUMERIC(16,5)pcs_total_fee總費用NUMERIC(16,5)Y表 4,預(yù)付費PCS話單基表EVENT_PREPAYPCS_FEE (預(yù)付費PCS話單費用子表)字段名稱字段含義數(shù)據(jù)類型非空說明event_inst_id話單標(biāo)識DECIMAL(15,0)YFKfile_id話單來源DECIMAL(12,0)acct_item_type_id帳目類型DECIMAL(9,0)Yold_charge優(yōu)惠前費用NUMERIC(16,5)Ycharge費用NUMERIC(16,5)Ytariff_id費率標(biāo)識DECIMAL(9,0)tariff費率NUMERIC(16,5)rate_duration計費時長DECIMAL(9,0)cust_category客戶分組標(biāo)識DECIMAL(12,0)Y表 5,預(yù)付費PCS話單費用子表ACCT_ITEM_SD_PREPAYPCS(預(yù)付費PCS話單帳目表)字段名稱字段含義數(shù)據(jù)類型非空說明acct_item_id帳目標(biāo)識DECIMAL(12,0)YPKserv_id主產(chǎn)品實例標(biāo)識DECIMAL(12,0)Yacct_id帳戶標(biāo)識DECIMAL(12,0)Ycust_id客戶標(biāo)識DECIMAL(12,0)Ycust_category客戶分組DECIMAL(9,0)Yacct_item_type_id帳目類型標(biāo)識DECIMAL(9,0)Yitem_source_id帳目來源標(biāo)識DECIMAL(9,0)Ybilling_cycle_id計費周期標(biāo)識DECIMAL(9,0)Yfee_cycle_id費用周期標(biāo)識DECIMAL(9,0)Ydeal_source處理來源INTEGERYdisct_charge優(yōu)惠費用NUMERIC(16,5)Yold_charge優(yōu)惠前費用NUMERIC(16,5)Ycharge優(yōu)惠后費用NUMERIC(16,5)Ydisct_express_id優(yōu)惠計算標(biāo)識DECIMAL(9,0)duration通話時長DECIMAL(9,0)Yrate_duration計費時長DECIMAL(15,0)Yunit_num單位個數(shù)DECIMAL(9,0)Ystate狀態(tài)VARCHAR(3)Ystate_date狀態(tài)時間DATETIME YEAR TO SECONDYcreated_date數(shù)據(jù)生成日期DATETIME YEAR TO SECONDYarea_id營業(yè)區(qū)DECIMAL(9,0)表 6,預(yù)付費PCS話單帳目表話單格式:第一行是文件頭:FILEHEAD|100000|100001|100002|100003|100004|200001|300001|300002|100008|100005|100006|100007|160001|160002|160003|160011|160012|160015|160013|160014,F(xiàn)ILEHEAD是文件頭標(biāo)識,后面緊接著的一串一串?dāng)?shù)字是屬性標(biāo)識。state狀態(tài)VARCHAR(3)帳目組_帳目的狀態(tài)。acct_item_type_id帳目類型標(biāo)識DECIMAL(9,0)YPK FK對每一帳目類型的唯一編號。表 2,帳務(wù)周期表ACCT_ITEM_GROUP_MEMBER(帳目組_帳目表), 定義每個帳目組包含哪些帳目。state狀態(tài)VARCHAR(3)Y帳務(wù)周期的狀態(tài)。due_date違約金起算日期DATETIME YEAR TO SECONDY違約金開始計算的時間。cycle_begin_date周期開始時間DATETIME YEAR TO SECONDY本帳務(wù)周期開始的時間。與BILLING_CYCLE_TYPE表的CYCLE_TYPE_ID屬性關(guān)聯(lián)。BILLING_CYCLE(帳務(wù)周期表)定義具體的帳務(wù)周期及相關(guān)重要日期,供系統(tǒng)或用戶選擇以指定帳務(wù)周期。instance_id:消費者流程標(biāo)識。name:文件名稱,由一定的規(guī)律組成。event_source_typ:用來標(biāo)識事件的來源,即1:正常事件2:無主事件3:異常事件。 13:批價的無主和異常事件文件。否則,應(yīng)該新建一個事件來源。字段名稱字段含義數(shù)據(jù)類型非空source_id事件來源標(biāo)識DECIMAL(9,0)Yparent_src_id父來源DECIMAL(9,0)source_type事件類源類型INTEGERYevent_source_type事件來源類型INTEGERname名稱VARCHAR(100)Ydata_path位置VARCHAR(150)instance_id消費者流程標(biāo)識DECIMAL(9,0)Yproducer生產(chǎn)者進程標(biāo)識DECIMAL(6,0)customer消費者進程標(biāo)識DECIMAL(6,0)Yproc_state處理狀態(tài)CHAR(3)Ycreated_date生成時間DATETIME YEAR TO SECONDYdealed_date處理完成時間DATETIME YEAR TO SECONDsource_size文件大小INTEGERYrec_quantity輸入記錄數(shù)INTEGERYderive_rec派生記錄數(shù)INTEGERYnormal_rec正常記錄數(shù)INTEGERYabnormal_rec異常記錄數(shù)INTEGERYinvalid_rec無效記錄數(shù)INTEGERYsource_charge文件費用NUMERIC(16,5)Ybatch_id批次標(biāo)識INTEGER表 1,事件來源表source_id:一個事件來源即一個事件文件或事件數(shù)據(jù)包。有關(guān)表的介紹:EVENT_SOURCE(事件來源表),是用來存放各種話單文件的信息的一張表。TRateFileIOManager:計費文件解析類,主要用于對計費文件進行解析,取得的文件的各個字段,形成事件屬性,同時正常文件、異常文件的生成。)它的成員變量有:用于存放取得的未處理文件信息的vector m_vUnsettledFileInfo,查詢條件 m_sQuerySql,每次從數(shù)據(jù)庫中取得的文件數(shù)m_iDBSearchStep。TRateFileDBInterface:計費文件數(shù)據(jù)庫接口類,主要用于從數(shù)據(jù)庫中查詢未處理的計費文件,同時對數(shù)據(jù)庫中的計費文件狀態(tài)進行更新??梢杂脕沓跏蓟嬞M文件數(shù)據(jù)庫接口類和計費文件解析類。VUnsettledFileInfo:typedef vectorTEventSourceFileInfo VUnsettledFileInfo 用于裝載未處理文件信息的vector。TPcsTransExecInfo,程序運行參數(shù)結(jié)構(gòu)體,用于存放程序運行參數(shù),它的成員變量包含有:當(dāng)前帳期標(biāo)識、下個帳期標(biāo)識、帳期開始時間、帳期結(jié)束時間、客戶分組ID、流程ID等。如要查找數(shù)據(jù)庫中的一條記錄,先設(shè)置好查詢語句SQl,然后調(diào)用它的成員函數(shù)SetSQL(const char *inSqlstmt)把查詢語句設(shè)置到Sqlstatement中,然后調(diào)用Open(int prefetchRows=PREFETCH_ROWS)打SELECT語句返回結(jié)果集,接著用Next()移動到下一個記錄,用Field()取一個列的值。TDBQuery:數(shù)據(jù)庫操作類,用于對數(shù)據(jù)庫的操作,可以用來查詢數(shù)據(jù)庫,向數(shù)據(jù)庫里插入數(shù)據(jù)和修改數(shù)據(jù)等。TAppComponent:數(shù)據(jù)庫連接類,用來連接數(shù)據(jù)庫,它繼承了類TComponent。TDBDatabase:數(shù)據(jù)庫類,成員變量包括數(shù)據(jù)庫名、用戶名和密碼等信息;成員函數(shù)有Connect()用于連接數(shù)據(jù)庫,它封裝Oracle數(shù)據(jù)庫的OCI函數(shù)來實現(xiàn)和數(shù)據(jù)庫的連接?;A(chǔ)類和結(jié)構(gòu)體的介紹:TConfigInfo:系統(tǒng)配置信息結(jié)構(gòu)體,它的成員包括:正常文件路徑sNorFilePath,異常文件路徑sErrFilePath,是否將設(shè)為正處理的文件改為未處理 iRefresh,每次取文件數(shù)iStep,輪詢過程中sleep的秒數(shù)iSleepSec。要想進行預(yù)付費入庫程序設(shè)計,首先要了解這些基礎(chǔ),然后才能在這些基礎(chǔ)上進行程序設(shè)計。UNIX下運行程序很簡單,把可執(zhí)行文件名看作命令,帶上指定的參數(shù)程序就可以運行了。在這里不細(xì)說了。動態(tài)的改變你程序的執(zhí)行環(huán)境。可讓被調(diào)試的程序在你所指定的調(diào)置的斷點處停住?;蛟S,各位比較喜歡那種圖形界面方式的,像VC、BCB等IDE的調(diào)試。于是UNIX下的軟件比Windows下的軟件更能有機地結(jié)合,各自發(fā)揮各自的長處,組合成更為強勁的功能。大家知道命令行的強大就是在于,其可以形成執(zhí)行序列,形成腳本。調(diào)試程序可以使用GDB調(diào)試程序,也可以使用dbx 命令來調(diào)試程序。程序在UNIX下的編譯與Windows有所不同,沒有Widows所提供的編譯按鈕,在UNIX下要自己編寫Makefile,然后運行make命令來編譯程序。利用VC++.NET編程工具編寫程序,在UNIX下編譯、調(diào)試和運行程序。第五章主要講程序的運行,以及程序運行的結(jié)果。第三章對預(yù)付費入庫的基類和預(yù)付費流程進行了設(shè)計,簡單的介紹了預(yù)付費入庫的基類是怎樣設(shè)計出來的,以及類的大體結(jié)構(gòu);并詳細(xì)介紹了流程圖和流程圖中各個函數(shù)的功能;還畫出了數(shù)據(jù)轉(zhuǎn)移圖,它是數(shù)據(jù)在程序中的轉(zhuǎn)移過程的結(jié)合。 本文的組織結(jié)構(gòu)下面簡要敘述本文的大致組織情況。組內(nèi)揀重簡單快捷,組與組之間揀重效率也顯著提高。存檔文件的索引存放在dup_file表內(nèi),以供揀重查詢。故揀重模塊存放的為關(guān)鍵字串,以存檔文件形式存放。最后將話單輸出。如果查不到話單或不符合重單要求,則話單為正常話單。查詢到話單之后先判斷是否需要合并,如果需要合并則根據(jù)規(guī)則合并。具體包括:(1)支持根據(jù)事件類型組、揀重關(guān)鍵字進行合并、揀重;(2)支持事件類型組之間的完全、交叉揀重;(4)支持揀重時間范圍的靈活定值;(3)支持對某個時間偏差內(nèi)的話單作為非重單規(guī)則;(5)支持揀重例外的設(shè)置:可以設(shè)置某個事件屬性滿足一定條件時不揀重,或者主產(chǎn)品或附屬產(chǎn)品為某個值時不揀重,或者它們之間的組合;(6)支持連續(xù)話單、連續(xù)短話單等特殊方法揀重;(7)支持與主控連接揀重處理流程:圖 8,揀重處理流程圖從話單接口獲得話單內(nèi)容。通過配置決定揀重/合并關(guān)鍵字、支持揀重例外的配置、揀重時間范圍的靈活定值 。揀重模塊目前包括話單合并和話單排重功能。話單的揀重是在預(yù)處理之后的一個環(huán)節(jié),在計費系統(tǒng)中處于一個比較關(guān)鍵的位置。分割:根據(jù)分割規(guī)則,將目的事件文件劃分成若干子文件。 過濾:運用過濾規(guī)則組過濾錯單;252。 轉(zhuǎn)換:標(biāo)準(zhǔn)事件映射成目的事件前進行字段轉(zhuǎn)換;252。通過配置內(nèi)部事件字段和源事件字段之間的關(guān)系來映射關(guān)系來實現(xiàn)格式化。 標(biāo)準(zhǔn)事件映射成目標(biāo)事件216。 源事件獲取216。預(yù)處理可以處理的話單類型包括:語音話單、數(shù)據(jù)話單和代收話單。預(yù)處理模塊的主要功能:1將采集后的各種類型的話單,根據(jù)配置的話單格式進行解析,獲取需要的話單信息;2解析成標(biāo)準(zhǔn)化話單;3分揀amp。計費系統(tǒng)的預(yù)處理模塊,可以認(rèn)為是計費系統(tǒng)的一個子系統(tǒng),可以獨立于計費系統(tǒng)之外進行處理。在整個預(yù)處理內(nèi)部,所有的處理邏輯都是通過前臺配置來實現(xiàn)的,包括話單格式的解析、映射、分揀、過濾、轉(zhuǎn)換等,通過配置,將整個預(yù)處理業(yè)務(wù)邏輯分解為內(nèi)部可見的處理流程,并最終輸出標(biāo)準(zhǔn)的計費帳務(wù)事件話單,整個處理邏