專利名稱:事件處理方法及服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本申請涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種事件處理方法及服務(wù)器。
背景技術(shù):
基于互聯(lián)網(wǎng)實現(xiàn)各種業(yè)務(wù)功能時,會產(chǎn)生海量的基礎(chǔ)事件(Base Event),包括各種銷售數(shù)據(jù)、業(yè)務(wù)數(shù)據(jù)、系統(tǒng)之間的交互數(shù)據(jù)等,這些基礎(chǔ)事件反映了業(yè)務(wù)功能的片面信息。多個有關(guān)聯(lián)的基礎(chǔ)事件形成一種事件模式,以支付寶(www.alipay. com)的擔保交易為例,擔保交易為一種事件模式,這個事件模式下包含了相互關(guān)聯(lián)的具有先后產(chǎn)生次序的五個基礎(chǔ)事件,分別為創(chuàng)建交易、買家付款到中間機構(gòu)、賣家發(fā)貨、買家收貨和中間機構(gòu)付款到賣家;在擔保交易這種事件模式,每一筆交易都會產(chǎn)生相應(yīng)的基礎(chǔ)事件,屬于同一筆交易的基礎(chǔ)事件組成一個復(fù)合事件,也即是每種事件模式都會有若干復(fù)合事件。在接到基礎(chǔ)事件后,可以根據(jù)基礎(chǔ)事件的事件信息確定其所屬的事件模式,并根據(jù)事件標識將該基礎(chǔ)事件對應(yīng)到其所屬的復(fù)合事件發(fā)明人在對現(xiàn)有技術(shù)的研究過程中發(fā)現(xiàn),現(xiàn)有技術(shù)中大型的互聯(lián)網(wǎng)站在實現(xiàn)業(yè)務(wù)功能時,采用分布式服務(wù)器系統(tǒng),服務(wù)器系統(tǒng)中包含若干相互協(xié)作的服務(wù)器,因此屬于同一事件模式的同一復(fù)合事件中的基礎(chǔ)事件可能由不同的服務(wù)器觸發(fā)產(chǎn)生,為了區(qū)別這些基礎(chǔ)事件的產(chǎn)生時間,在每個基礎(chǔ)事件內(nèi)寫入時間戳,根據(jù)時間戳可以對基礎(chǔ)事件進行排序。但是由于服務(wù)器之間的時鐘通常不一致,即使經(jīng)過服務(wù)器時鐘的同步聯(lián)調(diào)后,服務(wù)器之間仍然會有時間差,由此導(dǎo)致寫入基礎(chǔ)事件中的時間戳不準確,使得基礎(chǔ)事件的排序發(fā)生混亂; 后續(xù),當根據(jù)亂序的基礎(chǔ)事件進行復(fù)合事件處理時,仍以擔保交易為例,當屬于同一復(fù)合事件的創(chuàng)建交易這一基礎(chǔ)事件的時間戳晚于買家付款到中間機構(gòu)這一基礎(chǔ)事件時,由于系統(tǒng)將根據(jù)時間戳的指示先于創(chuàng)建交易這一基礎(chǔ)事件,而收到買家付款到中介機構(gòu)這一基礎(chǔ)事件,從而導(dǎo)致系統(tǒng)錯誤報警,并需要重新對復(fù)合事件進行處理,由此增加了系統(tǒng)服務(wù)器的處理負擔。
發(fā)明內(nèi)容
本申請實施例的目的是提供一種事件處理方法及服務(wù)器,以解決現(xiàn)有技術(shù)中發(fā)生亂序的基礎(chǔ)事件導(dǎo)致錯誤報警,增加系統(tǒng)服務(wù)器處理負擔的問題。為解決上述技術(shù)問題,本申請實施例提供了一種復(fù)合事件處理方法,是這樣實現(xiàn)的一種事件處理方法,所述方法包括根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件,所述狀態(tài)機實例為按照所述基礎(chǔ)事件所屬的事件模式定義的狀態(tài)機所創(chuàng)建的實例,屬于同一狀態(tài)機實例的基礎(chǔ)事件具有相同的事件標識;將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入所述狀態(tài)機實例;
若當前輸入的基礎(chǔ)事件無法使所述狀態(tài)機實例從當前狀態(tài)遷移,則判斷所述基礎(chǔ)事件是否為所述當前狀態(tài)允許的亂序事件;若判斷結(jié)果為是,則保存所述基礎(chǔ)事件至緩存,若判斷結(jié)果為否,則輸出報警。為解決上述技術(shù)問題,本申請實施例還提供了一種事件處理服務(wù)器,是這樣實現(xiàn)的一種事件處理服務(wù)器,包括獲取單元,用于根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件,所述狀態(tài)機實例為按照所述基礎(chǔ)事件所屬的事件模式定義的狀態(tài)機所創(chuàng)建的實例,屬于同一狀態(tài)機實例的基礎(chǔ)事件具有相同的事件標識;輸入單元,用于將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入所述狀態(tài)機實例;狀態(tài)判斷單元,用于判斷當前輸入的基礎(chǔ)事件是否能使所述狀態(tài)機實例從當前狀態(tài)遷移;亂序判斷單元,用于當所述狀態(tài)判斷單元的判斷結(jié)果為否時,判斷所述基礎(chǔ)事件是否為所述當前狀態(tài)允許的亂序事件;保存單元,用于當所述亂序判斷單元的判斷結(jié)果為是時,保存所述基礎(chǔ)事件至緩存;報警單元,用于當所述亂序判斷單元的判斷結(jié)果為否時,輸出報警??梢姡旧暾垖嵤├懈鶕?jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件,將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入狀態(tài)機實例,若當前輸入的基礎(chǔ)事件無法使狀態(tài)機實例從當前狀態(tài)遷移,則判斷該基礎(chǔ)事件是否為當前狀態(tài)允許的亂序事件,若判斷結(jié)果為是,則保存該基礎(chǔ)事件至緩存,若判斷結(jié)果為否, 則輸出報警。本申請實施例中當所輸入的基礎(chǔ)事件無法使狀態(tài)機實例從當前狀態(tài)遷移時, 并不直接輸出報警信息,而是在該基礎(chǔ)事件為所允許的亂序事件時,對其進行保存,以防止由于時間戳的不準確而導(dǎo)致誤報警的發(fā)生;由于后續(xù)可以直接利用保存的基礎(chǔ)事件進行狀態(tài)遷移,而無需對該狀態(tài)機實例重新進行狀態(tài)遷移,因此減輕了系統(tǒng)服務(wù)器的處理負擔。
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請事件處理方法的第一實施例流程圖;圖2A為本申請事件處理方法的第二實施例流程圖;圖2B為本申請一種應(yīng)用實例中擔保交易的事件模式狀態(tài)機定義示意圖;圖3為本申請事件處理服務(wù)器的第一實施例框圖;圖4為本申請事件處理服務(wù)器的第二實施例框圖。
具體實施例方式
5
本申請實施例提供一種事件處理方法及服務(wù)器,其中對于無法使狀態(tài)機遷移的基礎(chǔ)事件,并不直接輸出報警,而是判斷該基礎(chǔ)事件為允許的亂序事件后保存該基礎(chǔ)事件,后續(xù)可以在遷移到新狀態(tài)后,判斷保存的基礎(chǔ)事件是否可以使狀態(tài)機遷移。為了使本技術(shù)領(lǐng)域的人員更好地理解本申請實施例中的技術(shù)方案,并使本申請實施例的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖對本申請實施例中技術(shù)方案作進一步詳細的說明。參見圖1,為本申請事件處理方法的第一實施例流程圖步驟101 根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件。事件模式是對一系列相互關(guān)聯(lián)的基礎(chǔ)事件的總稱,每種事件模式都包含了順序執(zhí)行的多個基礎(chǔ)事件。以支付寶的擔保交易為例,擔保交易是一種需要關(guān)心是否發(fā)貨的事件模式,擔保交易包括的基礎(chǔ)事件有創(chuàng)建交易、買家付款到中間機構(gòu)、賣家發(fā)貨、買家收貨和中間機構(gòu)付款到賣家。本申請實施例中,為每種事件模式定義一個狀態(tài)機,這個狀態(tài)機中包含了若干遷移狀態(tài),從初始狀態(tài)開始,該事件模式包含的順序執(zhí)行的每個基礎(chǔ)事件都對應(yīng)一個遷移狀態(tài),以一個包含三個基礎(chǔ)事件的事件模式A為例,假設(shè)基礎(chǔ)事件的執(zhí)行順序應(yīng)為基礎(chǔ)事件 1、基礎(chǔ)事件2、基礎(chǔ)事件3,則從初始狀態(tài)開始,應(yīng)順序執(zhí)行基礎(chǔ)事件1,相應(yīng)的從初始狀態(tài)遷移到狀態(tài)1,然后執(zhí)行基礎(chǔ)事件2,相應(yīng)的從狀態(tài)1遷移到狀態(tài)2,最后執(zhí)行基礎(chǔ)事件3,相應(yīng)的從狀態(tài)2遷移到結(jié)束狀態(tài)。由于不同的事件模式對應(yīng)不同的狀態(tài)機,同一狀態(tài)機又對應(yīng)不同的狀態(tài)機實例, 因此本申請實施例中每個基礎(chǔ)事件都攜帶有事件標識,該事件標識可以用于識別該基礎(chǔ)事件所屬的某個事件模式所定義的狀態(tài)機下的某個狀態(tài)機實例。仍然以擔保交易這個事件模式為例,在該事件模式定義的狀態(tài)機下,可能需要處理不同用戶的若干筆交易,則為每個用戶的每筆交易都按照狀態(tài)機的定義創(chuàng)建一個狀態(tài)機實例,屬于同一個狀態(tài)機實例的基礎(chǔ)事件都具有相同的事件標識,這個事件標識應(yīng)可以唯一識別一筆交易,例如使用交易序號作為事件標識。步驟102 將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入該狀態(tài)機實例。每個基礎(chǔ)事件在發(fā)生時,都由服務(wù)器按照當前時鐘為基礎(chǔ)事件寫入時間戳,以表示該基礎(chǔ)事件的發(fā)生時間。當根據(jù)基礎(chǔ)事件的事件標識識別出屬于同一狀態(tài)機實例的基礎(chǔ)事件,將這些基礎(chǔ)事件按照時間戳的指示順序排列,形成事件隊列,并將事件隊列中的基礎(chǔ)事件順序輸入狀態(tài)機中,看狀態(tài)機是否會進行狀態(tài)遷移并最終輸出復(fù)合事件。步驟103 判斷當前輸入的基礎(chǔ)事件是否能使該狀態(tài)機實例從當前狀態(tài)遷移,若是,則執(zhí)行步驟107 ;否則,執(zhí)行步驟104。首先,定位到該狀態(tài)機實例所遷移的當前狀態(tài),然后可以根據(jù)基礎(chǔ)事件的事件類型判斷狀態(tài)機實例是否能夠從當前狀態(tài)順序遷移到下一狀態(tài),基礎(chǔ)事件的事件類型就是指當前事件模式下所定義的狀態(tài)機中每個狀態(tài)的名稱。步驟104 判斷基礎(chǔ)事件是否為當前狀態(tài)允許的亂序事件,若是,則執(zhí)行步驟105 ; 否則,執(zhí)行步驟106。
當所輸入的基礎(chǔ)事件無法使狀態(tài)機從當前狀態(tài)遷移到下一個狀態(tài)時,并不直接輸出報警,而是判斷該基礎(chǔ)事件是否為允許的亂序事件。例如,對于屬于同一狀態(tài)機實例的基礎(chǔ)事件,由于時間戳的不準確可能造成后發(fā)生的基礎(chǔ)事件提前到來,因此該提前到來的基礎(chǔ)事件就是允許的亂序事件。本申請實施例中,預(yù)先設(shè)置了狀態(tài)機中每個狀態(tài)允許的亂序事件,并以狀態(tài)為索引進行保存,因此在接收到基礎(chǔ)事件并且該基礎(chǔ)事件無法使當前狀態(tài)遷移時,就查找該當前狀態(tài)允許的亂序事件,判斷該基礎(chǔ)事件是否為允許的亂序事件。步驟105 保存該基礎(chǔ)事件至緩存,結(jié)束當前流程。當輸入的基礎(chǔ)事件雖然不能使得狀態(tài)機實例遷移到下一狀態(tài),但是該基礎(chǔ)事件為允許的亂序事件時,則保存該亂序事件至緩存,后續(xù)在遷移到新的狀態(tài)后,可以嘗試保存的基礎(chǔ)事件能否使狀態(tài)機實例從新狀態(tài)進行遷移。步驟106 輸出報警,結(jié)束當前流程。步驟107 從當前狀態(tài)遷移到下一狀態(tài),結(jié)束當前流程。當所輸入的基礎(chǔ)事件可以使狀態(tài)機從當前狀態(tài)遷移到下一個狀態(tài)時,則順序遷移至下一個狀態(tài)即可,后續(xù)可以繼續(xù)從事件隊列中輸入下一個基礎(chǔ)事件。由上述實施例可見,本申請實施例中當所輸入的基礎(chǔ)事件無法使狀態(tài)機實例從當前狀態(tài)遷移時,并不直接輸出報警信息,而是在該基礎(chǔ)事件為所允許的亂序事件時,對其進行保存,以防止由于時間戳的不準確而導(dǎo)致誤報警的發(fā)生。參見圖2A,為本申請事件處理方法的第二實施例流程圖,該實施例示出本申請基于狀態(tài)機實例進行事件處理的詳細過程步驟201 預(yù)先定義每個事件模式的狀態(tài)機,以及所述狀態(tài)機中每個狀態(tài)允許的
亂序事件。參見圖2B為,為一種擔保交易的事件模式狀態(tài)機定義示意圖其中,擔保交易包括的基礎(chǔ)事件有基礎(chǔ)事件1 (創(chuàng)建交易)、基礎(chǔ)事件2 (買家付款到中間機構(gòu))、基礎(chǔ)事件3 (賣家發(fā)貨)、基礎(chǔ)事件4 (買家收貨)和基礎(chǔ)事件5 (中間機構(gòu)付款到賣家);相應(yīng)的,擔保交易的狀態(tài)機中包含了六個狀態(tài),分別為狀態(tài)1(初始狀態(tài))、狀態(tài) 2 (等待買家付款)、狀態(tài)3 (等待賣家送貨)、狀態(tài)4 (等待買家收貨)、狀態(tài)5 (等待向賣家付款)和狀態(tài)6 (結(jié)束狀態(tài))。結(jié)合圖2B,描述該狀態(tài)機的完整狀態(tài)遷移過程初始,狀態(tài)機處于狀態(tài)1 ;接收到基礎(chǔ)事件1(創(chuàng)建交易,ET-CREATE)后狀態(tài)變遷,進入狀態(tài)2 (等待買家付款),此時記錄當前的狀態(tài)為狀態(tài)2 ;接收到基礎(chǔ)事件2 (買家付款到中間機構(gòu),ET-BUYER-TO-ALIPAY)后狀態(tài)變遷,進入狀態(tài)3 (等待賣家送貨),此時記錄當前的狀態(tài)為狀態(tài)3 ;接收到基礎(chǔ)事件3 (賣家發(fā)貨ET-SELLER-SHIP)后狀態(tài)變遷,進入狀態(tài)4 (等待買家收貨),此時記錄當前的狀態(tài)為狀態(tài)4 ;接收到基礎(chǔ)事件4 (買家收貨,ET-BUYER-RECEIVE)后狀態(tài)變遷,進入狀態(tài)5 (等待向賣家付款),此時記錄當前的狀態(tài)為狀態(tài)5 ;接收到基礎(chǔ)事件5 (中間機構(gòu)付款到賣家,ET-ALIPAY-TO-SELLER)后狀態(tài)變遷,進入狀態(tài)6 (結(jié)束狀態(tài)),此時記錄當前的狀態(tài)為狀態(tài)6 ;當進入狀態(tài)6 (結(jié)束狀態(tài))時,表示找
到一個復(fù)合事件。由于本申請實施例中狀態(tài)機可以隨著基礎(chǔ)事件進行狀態(tài)遷移,這個過程中只需要記錄當前所遷移到的狀態(tài)即可,無需記錄所有基礎(chǔ)事件信息。本申請實施例中,由于按照時間戳排列的基礎(chǔ)事件可能不準確,因此對于根據(jù)每個事件模式定義的狀態(tài)機,可以預(yù)先定義該狀態(tài)機中某些狀態(tài)允許的亂序事件, 例如,對于狀態(tài)2(等待買家收貨),可以定義允許的亂序事件為基礎(chǔ)事件3(賣家發(fā)貨 ET-SELLER-SHIP)。步驟202 根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件。由于不同的事件模式對應(yīng)不同的狀態(tài)機,同一狀態(tài)機又對應(yīng)不同的狀態(tài)機實例, 因此本申請實施例中每個基礎(chǔ)事件都攜帶有事件標識,該事件標識可以用于識別該基礎(chǔ)事件所屬的某個事件模式的某個狀態(tài)機,屬于同一狀態(tài)機實例的基礎(chǔ)事件具有相同的事件標識。步驟203 將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入該狀態(tài)機實例。每個基礎(chǔ)事件在發(fā)生時,都由服務(wù)器按照當前時鐘為基礎(chǔ)事件寫入時間戳,以表示該基礎(chǔ)事件的發(fā)生時間。當根據(jù)基礎(chǔ)事件的事件標識識別出屬于同一狀態(tài)機實例的基礎(chǔ)事件,將這些基礎(chǔ)事件按照時間戳的指示順序排列,形成事件隊列,并將事件隊列中的基礎(chǔ)事件順序輸入狀態(tài)機中,看狀態(tài)機是否會進行狀態(tài)遷移并最終輸出復(fù)合事件。步驟204 判斷當前輸入的基礎(chǔ)事件是否能使該狀態(tài)機實例從當前狀態(tài)遷移,若是,則執(zhí)行步驟208 ;否則,執(zhí)行步驟205。首先,定位到該狀態(tài)機實例所遷移的當前狀態(tài),然后可以根據(jù)基礎(chǔ)事件的事件類型判斷狀態(tài)機實例是否能夠從當前狀態(tài)順序遷移到下一狀態(tài),基礎(chǔ)事件的事件類型就是指當前事件模式下所定義的狀態(tài)機中每個狀態(tài)的名稱。步驟205 判斷基礎(chǔ)事件是否為當前狀態(tài)允許的亂序事件,若是,則執(zhí)行步驟206 ; 否則,執(zhí)行步驟207。當所輸入的基礎(chǔ)事件無法使狀態(tài)機從當前狀態(tài)遷移到下一個狀態(tài)時,并不直接輸出報警,而是判斷該基礎(chǔ)事件是否為預(yù)先定義的當前狀態(tài)所允許的亂序事件。步驟206 保存該基礎(chǔ)事件至緩存,并返回步驟203。當輸入的基礎(chǔ)事件雖然不能使得狀態(tài)機實例遷移到下一狀態(tài),但是該基礎(chǔ)事件為允許的亂序事件時,則保存該亂序事件至緩存,后續(xù)在遷移到新的狀態(tài)后,可以嘗試保存的基礎(chǔ)事件能否使狀態(tài)機實例從新狀態(tài)進行遷移。步驟207 輸出報警,結(jié)束當前流程。步驟208 從當前狀態(tài)遷移到下一狀態(tài)。當所輸入的基礎(chǔ)事件可以使狀態(tài)機從當前狀態(tài)遷移到下一個狀態(tài)時,則順序遷移至下一個狀態(tài)即可。步驟209 判斷遷移后的狀態(tài)是否為結(jié)束狀態(tài),若是,則執(zhí)行步驟213 ;否則,執(zhí)行步驟210。
步驟210 判斷是否能從緩存中讀取到保存的基礎(chǔ)事件,若是,則執(zhí)行步驟211 ;否則,返回步驟203。步驟211 從緩存中讀取保存的基礎(chǔ)事件。當狀態(tài)機實例遷移到新的狀態(tài)后,且緩存中有保存的基礎(chǔ)事件時,則讀取這些基礎(chǔ)事件,用于嘗試這些提前到來的允許的亂序事件是否能使狀態(tài)機實例從當前新的狀態(tài)遷移。步驟212 判斷讀取的基礎(chǔ)事件是否從當前狀態(tài)遷移,若是,則返回步驟208 ;否則,返回步驟203。步驟213 輸出復(fù)合事件,結(jié)束當前流程。當遷移后的狀態(tài)為結(jié)束狀態(tài)時,說明輸入該狀態(tài)機實例的基礎(chǔ)事件使該狀態(tài)機實例完成所有狀態(tài)遷移,相應(yīng)的輸出復(fù)合事件。由上述實施例可見,本申請實施例中當所輸入的基礎(chǔ)事件無法使狀態(tài)機實例從當前狀態(tài)遷移時,并不直接輸出報警信息,而是在該基礎(chǔ)事件為所允許的亂序事件時,對其進行保存,以防止由于時間戳的不準確而導(dǎo)致誤報警的發(fā)生;由于后續(xù)可以直接利用保存的基礎(chǔ)事件進行狀態(tài)遷移,而無需對該狀態(tài)機實例重新進行狀態(tài)遷移,因此減輕了系統(tǒng)服務(wù)器的處理負擔。與本申請復(fù)合事件處理方法的實施例相對應(yīng),本申請還提供了復(fù)合事件處理服務(wù)器的實施例。參見圖3,為本申請復(fù)合事件處理服務(wù)器的第一實施例框圖該服務(wù)器包括獲取單元310、輸入單元320、狀態(tài)判斷單元330、亂序判斷單元 340、保存單元350和報警單元360。其中,獲取單元310,用于根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件,所述狀態(tài)機實例為按照所述基礎(chǔ)事件所屬的事件模式定義的狀態(tài)機所創(chuàng)建的實例,屬于同一狀態(tài)機實例的基礎(chǔ)事件具有相同的事件標識;輸入單元320,用于將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入所述狀態(tài)機實例;狀態(tài)判斷單元330,用于判斷當前輸入的基礎(chǔ)事件是否能使所述狀態(tài)機實例從當前狀態(tài)遷移;亂序判斷單元340,用于當所述狀態(tài)判斷單元330的判斷結(jié)果為否時,判斷所述基礎(chǔ)事件是否為所述當前狀態(tài)允許的亂序事件;保存單元350,用于當所述亂序判斷單元340的判斷結(jié)果為是時,保存所述基礎(chǔ)事件至緩存;報警單元360,用于當所述亂序判斷單元340的判斷結(jié)果為否時,輸出報警。參見圖4,為本申請復(fù)合事件處理服務(wù)器的第二實施例框圖該服務(wù)器包括預(yù)設(shè)單元411、獲取單元412、輸入單元413、狀態(tài)判斷單元414、遷移單元415、讀取單元416、亂序判斷單元417、執(zhí)行單元418、保存單元419和報警單元420。其中,預(yù)設(shè)單元411,用于預(yù)先定義每個事件模式的狀態(tài)機,以及所述狀態(tài)機中每個狀態(tài)允許的亂序事件;獲取單元412,用于根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件,所述狀態(tài)機實例為按照所述基礎(chǔ)事件所屬的事件模式定義的狀態(tài)機所創(chuàng)建的實例,屬于同一狀態(tài)機實例的基礎(chǔ)事件具有相同的事件標識;輸入單元413,用于將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入所述狀態(tài)機實例;狀態(tài)判斷單元414,用于判斷當前輸入的基礎(chǔ)事件是否能使所述狀態(tài)機實例從當前狀態(tài)遷移;亂序判斷單元417,用于當所述狀態(tài)判斷單元414的判斷結(jié)果為否時,判斷所述基礎(chǔ)事件是否為所述當前狀態(tài)允許的亂序事件;保存單元419,用于當所述亂序判斷單元417的判斷結(jié)果為是時,保存所述基礎(chǔ)事件至緩存;報警單元420,用于當所述亂序判斷單元417的判斷結(jié)果為否時,輸出報警;遷移單元415,用于當所述狀態(tài)判斷單元414的判斷結(jié)果為是時,遷移到下一狀態(tài),并將所述下一狀態(tài)作為所述狀態(tài)機實例的當前狀態(tài);讀取單元416,用于從所述緩存中讀取保存的基礎(chǔ)事件;所述狀態(tài)判斷單元414,還用于判斷所述讀取單元416讀取的基礎(chǔ)事件是否能從當前狀態(tài)遷移;所述遷移單元415,還用于當所述狀態(tài)判斷單元414的判斷結(jié)果為是時,遷移到下一狀態(tài);所述亂序判斷單元417,還用于當所述狀態(tài)判斷單元414的判斷結(jié)果為否時,返回所述輸入單元413的功能;所述狀態(tài)判斷單元414,還用于判斷所述下一狀態(tài)是否為所述狀態(tài)機實例的結(jié)束狀態(tài);執(zhí)行單元418,用于當所述狀態(tài)判斷單元414的判斷結(jié)果為是時,輸出復(fù)合事件, 當所述狀態(tài)判斷單元414的判斷結(jié)果為否時,返回所述讀取單元416的功能;所述報警單元420,還用于當所述緩存中的基礎(chǔ)事件的保存時長超過預(yù)設(shè)的閾值時,輸出報警。通過以上的實施方式的描述可知,本申請實施例中根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件,將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入狀態(tài)機實例,若當前輸入的基礎(chǔ)事件無法使狀態(tài)機實例從當前狀態(tài)遷移,則判斷該基礎(chǔ)事件是否為當前狀態(tài)允許的亂序事件,若判斷結(jié)果為是,則保存該基礎(chǔ)事件至緩存,若判斷結(jié)果為否,則輸出報警。本申請實施例中當所輸入的基礎(chǔ)事件無法使狀態(tài)機實例從當前狀態(tài)遷移時,并不直接輸出報警信息,而是在該基礎(chǔ)事件為所允許的亂序事件時,對其進行保存,以防止由于時間戳的不準確而導(dǎo)致誤報警的發(fā)生;由于后續(xù)可以直接利用保存的基礎(chǔ)事件進行狀態(tài)遷移,而無需對該狀態(tài)機實例重新進行狀態(tài)遷移,因此減輕了系統(tǒng)服務(wù)器的處理負擔。通過以上的實施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)。基于這樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例或者實施例的某些部分所述的方法。本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。本申請可用于眾多通用或?qū)S玫挠嬎阆到y(tǒng)環(huán)境或配置中。例如個人計算機、服務(wù)器計算機、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機、大型計算機、包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。雖然通過實施例描繪了本申請,本領(lǐng)域普通技術(shù)人員知道,本申請有許多變形和變化而不脫離本申請的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請的精神。
權(quán)利要求
1.一種事件處理方法,其特征在于,所述方法包括根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件,所述狀態(tài)機實例為按照所述基礎(chǔ)事件所屬的事件模式定義的狀態(tài)機所創(chuàng)建的實例,屬于同一狀態(tài)機實例的基礎(chǔ)事件具有相同的事件標識;將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入所述狀態(tài)機實例; 若當前輸入的基礎(chǔ)事件無法使所述狀態(tài)機實例從當前狀態(tài)遷移,則判斷所述基礎(chǔ)事件是否為所述當前狀態(tài)允許的亂序事件;若判斷結(jié)果為是,則保存所述基礎(chǔ)事件至緩存,若判斷結(jié)果為否,則輸出報警。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括預(yù)先定義每個事件模式的狀態(tài)機,以及所述狀態(tài)機中每個狀態(tài)允許的亂序事件。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括若當前輸入的基礎(chǔ)事件能夠使所述狀態(tài)機實例從當前狀態(tài)遷移,則遷移到下一狀態(tài), 并將所述下一狀態(tài)作為所述狀態(tài)機實例的當前狀態(tài);從所述緩存中讀取保存的基礎(chǔ)事件后,判斷所述讀取的基礎(chǔ)事件是否能從當前狀態(tài)遷移;若判斷結(jié)果為是,則遷移到下一狀態(tài),若判斷結(jié)果為否,則返回將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入所述狀態(tài)機實例的步驟。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述遷移到下一狀態(tài)后,還包括判斷所述下一狀態(tài)是否為所述狀態(tài)機實例的結(jié)束狀態(tài),若判斷結(jié)果為是,則輸出復(fù)合事件;若判斷結(jié)果為否,則執(zhí)行所述從緩存中讀取保存的基礎(chǔ)事件的步驟。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括當所述緩存中的基礎(chǔ)事件的保存時長超過預(yù)設(shè)的閾值時,輸出報警。
6.一種事件處理服務(wù)器,其特征在于,包括獲取單元,用于根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件,所述狀態(tài)機實例為按照所述基礎(chǔ)事件所屬的事件模式定義的狀態(tài)機所創(chuàng)建的實例, 屬于同一狀態(tài)機實例的基礎(chǔ)事件具有相同的事件標識;輸入單元,用于將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入所述狀態(tài)機實例;狀態(tài)判斷單元,用于判斷當前輸入的基礎(chǔ)事件是否能使所述狀態(tài)機實例從當前狀態(tài)遷移;亂序判斷單元,用于當所述狀態(tài)判斷單元的判斷結(jié)果為否時,判斷所述基礎(chǔ)事件是否為所述當前狀態(tài)允許的亂序事件;保存單元,用于當所述亂序判斷單元的判斷結(jié)果為是時,保存所述基礎(chǔ)事件至緩存; 報警單元,用于當所述亂序判斷單元的判斷結(jié)果為否時,輸出報警。
7.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,還包括預(yù)設(shè)單元,用于預(yù)先定義每個事件模式的狀態(tài)機,以及所述狀態(tài)機中每個狀態(tài)允許的亂序事件。
8.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,還包括遷移單元,用于當所述狀態(tài)判斷單元的判斷結(jié)果為是時,遷移到下一狀態(tài),并將所述下一狀態(tài)作為所述狀態(tài)機實例的當前狀態(tài);讀取單元,用于從所述緩存中讀取保存的基礎(chǔ)事件;所述狀態(tài)判斷單元,還用于判斷所述讀取單元讀取的基礎(chǔ)事件是否能從當前狀態(tài)遷移;所述遷移單元,還用于當所述狀態(tài)判斷單元的判斷結(jié)果為是時,遷移到下一狀態(tài); 所述亂序判斷單元,還用于當所述狀態(tài)判斷單元的判斷結(jié)果為否時,返回所述輸入單元的功能。
9.根據(jù)權(quán)利要求8所述的服務(wù)器,其特征在于,所述狀態(tài)判斷單元,還用于判斷所述下一狀態(tài)是否為所述狀態(tài)機實例的結(jié)束狀態(tài);執(zhí)行單元,用于當所述狀態(tài)判斷單元的判斷結(jié)果為是時,輸出復(fù)合事件,當所述狀態(tài)判斷單元的判斷結(jié)果為否時,返回所述讀取單元的功能。
10.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,所述報警單元,還用于當所述緩存中的基礎(chǔ)事件的保存時長超過預(yù)設(shè)的閾值時,輸出報警。
全文摘要
本申請公開了一種事件處理方法及服務(wù)器,所述方法包括根據(jù)若干基礎(chǔ)事件攜帶的事件標識,獲取屬于同一狀態(tài)機實例的基礎(chǔ)事件;將屬于同一狀態(tài)機實例的基礎(chǔ)事件按照時間戳的指示順序輸入所述狀態(tài)機實例;若當前輸入的基礎(chǔ)事件無法使所述狀態(tài)機實例從當前狀態(tài)遷移,則判斷所述基礎(chǔ)事件是否為所述當前狀態(tài)允許的亂序事件;若判斷結(jié)果為是,則保存所述基礎(chǔ)事件至緩存,若判斷結(jié)果為否,則輸出報警。本申請實施例可以保存允許的亂序事件,以防止由于時間戳的不準確而導(dǎo)致誤報警的發(fā)生;由于后續(xù)可以直接利用保存的基礎(chǔ)事件進行狀態(tài)遷移,而無需對該狀態(tài)機實例重新進行狀態(tài)遷移,因此減輕了系統(tǒng)服務(wù)器的處理負擔。
文檔編號H04L12/24GK102347851SQ201010243880
公開日2012年2月8日 申請日期2010年7月29日 優(yōu)先權(quán)日2010年7月29日
發(fā)明者蔡學(xué)鏞 申請人:阿里巴巴集團控股有限公司