一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的方法及系統(tǒng)。
【背景技術(shù)】
[0002]電信運營商的業(yè)務(wù)支撐系統(tǒng)中,由于業(yè)務(wù)繁多且流程復雜,并且存在多系統(tǒng)之間的交互。想要了解每一個業(yè)務(wù)的各個運行環(huán)節(jié),或者業(yè)務(wù)處理過程出現(xiàn)故障時希望能快速定位故障的環(huán)節(jié),都會因為系統(tǒng)的復雜度而面臨巨大的挑戰(zhàn)。
[0003]傳統(tǒng)的業(yè)務(wù)系統(tǒng)維護過程中,有處理失敗的業(yè)務(wù),需要前臺營業(yè)員或者其他業(yè)務(wù)人員提交故障單,故障單提交后通過人工分類再分發(fā)給對應(yīng)的維護人員手里,維護人員再根據(jù)故障描述細節(jié),在服務(wù)器上搜索當時的處理日志,通過日志定位出錯環(huán)節(jié),如果日志信息不夠,還需要重現(xiàn)故障業(yè)務(wù)處理過程,以便分析原因;確定環(huán)節(jié)后再根據(jù)具體情況或修復bug,或修正數(shù)據(jù);或撤銷交易等手段做故障處理;處理完成后關(guān)閉故障單。
[0004]通常在人工定位故障的環(huán)節(jié)會花費較長時間,因為業(yè)務(wù)流程可能會拉的很長,或者跨越多個系統(tǒng),或者業(yè)務(wù)日志提供的信息不足以確認問題原因。
[0005]為了提高故障處理效率,需要對系統(tǒng)的運行信息的記錄進行優(yōu)化,但傳統(tǒng)的業(yè)務(wù)日志輸出都依賴開發(fā)人員的自己的日志輸出習慣,經(jīng)驗豐富的開發(fā)者的日志更容易定位問題,但經(jīng)驗缺乏者可能相反,這導致業(yè)務(wù)日志的質(zhì)量不容易控制。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問題是提供一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的方法及系統(tǒng),能夠?qū)I(yè)務(wù)運行異常進行精確定位,還能獲得業(yè)務(wù)各構(gòu)件之間調(diào)用的運行軌跡。
[0007]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:
[0008]—方面,本發(fā)明提供了一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的方法,所述方法包括:
[0009]S1、在特定業(yè)務(wù)的各構(gòu)件相互調(diào)用位置處設(shè)置一構(gòu)件調(diào)用函數(shù);
[0010]S2、在當前構(gòu)件調(diào)用其它構(gòu)件時,利用所述設(shè)置的構(gòu)件調(diào)用函數(shù)獲取調(diào)用過程中的調(diào)用記錄;
[0011]S3、根據(jù)所述特定業(yè)務(wù)的各構(gòu)件相互調(diào)用過程中的調(diào)用記錄,生成該特定業(yè)務(wù)各構(gòu)件調(diào)用的運行軌跡。
[0012]另一方面,本發(fā)明提供了一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的系統(tǒng),所述系統(tǒng)包括:
[0013]構(gòu)件調(diào)用函數(shù)設(shè)置模塊,用于在特定業(yè)務(wù)的各構(gòu)件相互調(diào)用位置處設(shè)置一構(gòu)件調(diào)用函數(shù);
[0014]調(diào)用記錄獲取模塊,用于在當前構(gòu)件調(diào)用其它構(gòu)件時,利用所述設(shè)置的構(gòu)件調(diào)用函數(shù)獲取調(diào)用過程中的調(diào)用記錄;
[0015]運行軌跡生成模塊,用于根據(jù)所述特定業(yè)務(wù)的各構(gòu)件相互調(diào)用過程中的調(diào)用記錄,生成該特定業(yè)務(wù)各構(gòu)件調(diào)用的運行軌跡。
[0016]本發(fā)明提供的一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的方法及系統(tǒng),通過在業(yè)務(wù)的各構(gòu)件相互調(diào)用位置處設(shè)置一構(gòu)件調(diào)用函數(shù),在構(gòu)件進行調(diào)用的過程中,能夠獲得調(diào)用過程的調(diào)用記錄,然后對調(diào)用記錄進行異常檢測,輸出異常信息,還能夠根據(jù)業(yè)務(wù)各構(gòu)件之間調(diào)用的調(diào)用記錄,得到業(yè)務(wù)各構(gòu)件調(diào)用的運行軌跡,能夠跟蹤業(yè)務(wù)運行狀態(tài),對業(yè)務(wù)的異常快速準確定位。
【附圖說明】
[0017]圖1為現(xiàn)有技術(shù)業(yè)務(wù)構(gòu)件之間調(diào)用關(guān)系拓撲圖;
[0018]圖2為本發(fā)明實施例一的一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的方法流程圖;
[0019]圖3為本發(fā)明實施例一業(yè)務(wù)構(gòu)件調(diào)用過程中構(gòu)件調(diào)用函數(shù)處理流程圖;
[0020]圖4為本發(fā)明實施例一中業(yè)務(wù)構(gòu)件調(diào)用關(guān)系的部分處理流程圖;
[0021]圖5為本發(fā)明實施例二的一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的系統(tǒng)圖示意圖。
【具體實施方式】
[0022]以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0023]實施例一、一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的方法。下面結(jié)合圖1-圖4對本實施例提供的方法進行詳細說明。
[0024]參見圖2,S1、在特定業(yè)務(wù)的各構(gòu)件相互調(diào)用位置處設(shè)置一構(gòu)件調(diào)用函數(shù)。
[0025]具體的,參見圖1,一個特定業(yè)務(wù)通常包含若干個業(yè)務(wù)構(gòu)件(BP),每一個業(yè)務(wù)構(gòu)件實際上就是一個函數(shù),單個業(yè)務(wù)構(gòu)件完成單一的數(shù)據(jù)處理或者條件檢查,比如,在電信系統(tǒng)中,單個業(yè)務(wù)構(gòu)件用于用戶狀態(tài)的檢查或當前話費余額的獲取等。業(yè)務(wù)構(gòu)件之間通過相互調(diào)用形成樹狀結(jié)構(gòu)成為一個完整的業(yè)務(wù)過程,比如用戶繳費、資費套餐變更等?,F(xiàn)有技術(shù)中一個構(gòu)件調(diào)用其它的構(gòu)件是直接的函數(shù)調(diào)用,難以在業(yè)務(wù)的各構(gòu)件的調(diào)用之間加入額外的處理代碼,因此,首先需要對業(yè)務(wù)中的各構(gòu)件調(diào)用的方法進行調(diào)整,本實施例在業(yè)務(wù)的各構(gòu)件相互調(diào)用位置處設(shè)置一構(gòu)件調(diào)用函數(shù),比如,定義如下的函數(shù)和宏:
[0026]utype氺一CALLBP(TUtypeFuncPtr bpfunc, constchar氺bpname, constutype氺ulnParam, TCtrIInfo*ctrIInfo);
[0027]#define CALLBP(bpname, uInParam, ctrllnfo)—CALLBP(bpname, #bpname, ulnParam, ctrllnfo)
[0028]對現(xiàn)有的構(gòu)件代碼進行改造,所有調(diào)用構(gòu)件的地方改為使用宏CALLBP(即在構(gòu)件調(diào)用處設(shè)置的構(gòu)件調(diào)用函數(shù))來調(diào)用,這個宏的實際處理過程在函數(shù)_CALLBP中實現(xiàn),通過上面的代碼片段可以看到,—CALLBP函數(shù)可以獲得構(gòu)件調(diào)用過程中的一些參數(shù),比如,構(gòu)件名稱,以及全部輸入和輸出參數(shù),實際的構(gòu)件調(diào)用在該函數(shù)中完成。另外,對于業(yè)務(wù)異常的處理,構(gòu)件服務(wù)框架的處理機制是使用C++的Except1n機制,因此,如果要獲取構(gòu)件的調(diào)用異常,還應(yīng)該在函數(shù)中加入異常處理。
[0029]S2、在當前構(gòu)件調(diào)用其它構(gòu)件時,利用所述設(shè)置的構(gòu)件調(diào)用函數(shù)獲取調(diào)用過程中的調(diào)用記錄。
[0030]具體的,在業(yè)務(wù)各構(gòu)件調(diào)用位置處設(shè)置一構(gòu)件調(diào)用函數(shù),參見圖3,在當前構(gòu)件調(diào)用其它構(gòu)件的過程中,可以利用設(shè)置的構(gòu)件調(diào)用函數(shù)獲取當前構(gòu)件標識(比如當前構(gòu)件名稱)、當前構(gòu)件所調(diào)用的構(gòu)件標識(比如,構(gòu)件名稱),以及本次調(diào)用的輸入?yún)?shù)和輸出參數(shù),另外,還能獲取本次調(diào)用的服務(wù)標識(比如,服務(wù)名稱,即本次調(diào)用所完成的功能)和本次調(diào)用服務(wù)入口產(chǎn)生的唯一流水號(即本次調(diào)用的服務(wù)入口標識)。根據(jù)構(gòu)件調(diào)用函數(shù)獲取的這些參數(shù),能夠生成本次調(diào)用過程中的調(diào)用記錄。
[0031]S3、根據(jù)所述特定業(yè)務(wù)的各構(gòu)件相互調(diào)用過程中的調(diào)用記錄,生成該特定業(yè)務(wù)各構(gòu)件調(diào)用的運行軌跡。
[0032]具體的,上述步驟S2在業(yè)務(wù)構(gòu)件相互調(diào)用的過程中,構(gòu)件調(diào)用函數(shù)獲取調(diào)用過程中的調(diào)用記錄,本步驟對獲得的調(diào)用記錄進行檢測分析,比如,進行異常檢測,檢測本次調(diào)用過程是否出現(xiàn)異常,若出現(xiàn)異常,則獲取異常信息并保存。當本次調(diào)用過程出現(xiàn)異常時,本次調(diào)用過程中斷,因此本次調(diào)用的服務(wù)標識或者本次調(diào)用服務(wù)入口產(chǎn)生的唯一流水號能夠作為構(gòu)件調(diào)用過程中的異常位置標識。通過該異常位置標識,能夠?qū)I(yè)務(wù)構(gòu)件調(diào)用過程中的故障進行準確定位,以便對故障及時的處理。若沒有檢測到調(diào)用過程中的異常狀況,則保存輸出參數(shù)。
[0033]另外,在業(yè)務(wù)的各構(gòu)件相互調(diào)用的過程中,引入了鏈表結(jié)構(gòu)對調(diào)用過程中的上下級構(gòu)件進行存儲,能夠獲取各構(gòu)件的調(diào)用關(guān)系。參見圖4,在整個業(yè)務(wù)的各構(gòu)件調(diào)用的過程中,當開始調(diào)用一個構(gòu)件時,則在鏈表尾上添加該構(gòu)件標識(比如,該構(gòu)件名稱);當調(diào)用返回時,刪除該構(gòu)件標識,當業(yè)務(wù)的各構(gòu)件相互調(diào)用完畢后,鏈表結(jié)構(gòu)按順序保存了所有已調(diào)用過的構(gòu)件標識(構(gòu)件名稱)。根據(jù)鏈表結(jié)構(gòu)中保存的各構(gòu)件標識的順序,可以生成該業(yè)務(wù)各構(gòu)件調(diào)用的運行軌跡,而不是用流程圖的形式來表示,因此可以清晰的看出各構(gòu)件的調(diào)用關(guān)系。
[0034]實施例二、一種對業(yè)務(wù)運行狀態(tài)進行跟蹤的系統(tǒng)。下面結(jié)合圖5對本實施例提供的系統(tǒng)進行詳細說明。
[0035]參見圖5,本實施例提供的系統(tǒng)包括構(gòu)件調(diào)用函數(shù)設(shè)置模塊501、調(diào)用記錄獲取模塊502、異常檢測模塊503、異常信息保存模塊504、異常位置標識獲得模塊505和運行軌跡生成模塊506。
[0036]其中,構(gòu)件調(diào)用函數(shù)設(shè)置模塊501主要用于在特定業(yè)務(wù)的各構(gòu)件相互調(diào)用位置處設(shè)置一構(gòu)件調(diào)用函數(shù)。
[0037]具體的,本實施例對現(xiàn)有構(gòu)件調(diào)用的方法進行調(diào)整,其中,構(gòu)件調(diào)用函數(shù)設(shè)置模塊501在業(yè)務(wù)的各構(gòu)件相互調(diào)用位置處設(shè)置一構(gòu)件調(diào)用函數(shù),比如,定義如下的函數(shù)和宏:
[0038]utype氺一CALLBP(TUtypeFuncPtr bpfunc, constchar氺bpname, constutype氺ulnParam, TCtrIInfo*ctrIInfo);
[0039]#define CALLBP(bpname, uInParam, ctrllnfo)—CALLBP(bpname, #bpname, ulnParam, ctrlln