本申請涉及網(wǎng)絡通信
技術領域:
,尤其涉及一種多階段任務的實現(xiàn)方法和裝置。
背景技術:
:隨著網(wǎng)絡技術的發(fā)展和智能終端的普及,人們越來越多的工作、生活事項都通過各種網(wǎng)絡應用來完成。這些網(wǎng)絡應用的服務提供商需要處理的業(yè)務數(shù)據(jù)越來越多,處理過程也越來越復雜。服務提供商的應用系統(tǒng)可以將一個任務的完整處理流程分為多個階段來進行,在每個階段由多個并行的處理功能模塊(如進程、線程等)來完成該階段的處理。現(xiàn)有技術中,一個完整處理流程的各個階段是固定的,假設一個完整處理流程包括依次進行的5個階段a、b、c、d和e,則任何一個進入該完整處理流程的任務都必須依次經(jīng)過a、b、c、d和e5個階段的處理。如果一些其他任務的完整處理流程是a、b、f、g和e,則需要開發(fā)人員重新編程實現(xiàn);如果另外一些任務只需經(jīng)過a、b和e3個處理過程,則或者重新編程實現(xiàn),或者讓這些任務在c和d兩個階段做空處理。也就是說,現(xiàn)有技術的實現(xiàn)方式或者造成開發(fā)人員的工作負荷增加,或者影響了任務的處理效率。技術實現(xiàn)要素:有鑒于此,本申請?zhí)峁┮环N多階段任務的實現(xiàn)方法,所述多階段任務包括起始階段、至少一個中間階段和結束階段,所述方法應用在負責中間階段任務執(zhí)行的節(jié)點上,包括:從任務信息管理平臺獲取目標狀態(tài)對應于本階段的任務的信息;所述任務信息中包括任務的標識和目標狀態(tài);執(zhí)行具有所述標識的任務的本階段處理過程;確定所述任務的下一處理階段,將包括對應于下一處理階段的目標狀態(tài)的任務信息更新到任務管理平臺。本申請?zhí)峁┑囊环N多階段任務的實現(xiàn)方法,所述多階段任務包括起始階段、至少一個中間階段和結束階段,所述方法應用在負責起始階段任務執(zhí)行的節(jié)點上,包括:創(chuàng)建多階段任務,生成所述任務的標識;確定所述任務的下一個處理階段,采用所述任務的標識和下一個處理階段對應的目標狀態(tài)生成所述任務的信息;將所述任務的信息添加到任務管理平臺上。本申請還提供了一種多階段任務的實現(xiàn)裝置,所述多階段任務包括起始階段、至少一個中間階段和結束階段,所述裝置應用在負責中間階段任務執(zhí)行的節(jié)點上,包括:任務信息獲取單元,用于從任務信息管理平臺獲取目標狀態(tài)對應于本階段的任務的信息;所述任務信息中包括任務的標識和目標狀態(tài);本階段處理單元,用于執(zhí)行具有所述標識的任務的本階段處理過程;下階段確定單元,用于確定所述任務的下一處理階段,將包括對應于下一處理階段的目標狀態(tài)的任務信息更新到任務管理平臺。本申請?zhí)峁┑囊环N多階段任務的實現(xiàn)裝置,所述多階段任務包括起始階段、至少一個中間階段和結束階段,所述裝置應用在負責起始階段任務執(zhí)行的節(jié)點上,包括:任務創(chuàng)建單元,用于創(chuàng)建多階段任務,生成所述任務的標識;任務信息生成單元,用于確定所述任務的下一個處理階段,采用所述任務的標識和下一個處理階段對應的目標狀態(tài)生成所述任務的信息;任務添加單元,用于將所述任務的信息添加到任務管理平臺上。由以上技術方案可見,本申請的實施例中,采用任務的目標狀態(tài)來表示期望進行的下一處理階段,使得在任務的起始或中間階段,可以通過更新目標狀態(tài)來指定任務的下一個處理階段,從而實現(xiàn)對完整處理流程中處理階段的靈活改變,這樣不僅能夠將一些任務跳過某個完整處理流程中不必要的階段,提高了這些任務的處理效率;而且相同的處理階段還可以復用于不同的完整處理流程,降低了開發(fā)人員的工作量。附圖說明圖1是本申請實施例應用場景的一種網(wǎng)絡結構示意圖;圖2是本申請實施例中一種應用在負責起始階段任務執(zhí)行的節(jié)點上、多階段任務的實現(xiàn)方法的流程圖;圖3是本申請實施例中一種應用在負責中間階段任務執(zhí)行的節(jié)點上、多階段任務的實現(xiàn)方法的流程圖;圖4是本申請應用示例中初始化功能模塊的運行流程圖;圖5是本申請應用示例中拆分功能模塊的運行流程圖;圖6是本申請應用示例中執(zhí)行功能模塊的運行流程圖;圖7是本申請應用示例中合并功能模塊的運行流程圖;圖8是運行本申請實施例的設備的一種硬件結構圖;圖9是本申請實施例中一種應用在負責起始階段任務執(zhí)行的節(jié)點上、多階段任務的實現(xiàn)裝置的邏輯結構圖;圖10是本申請實施例中一種應用在負責中間階段任務執(zhí)行的節(jié)點上、多階段任務的實現(xiàn)裝置的邏輯結構圖。具體實施方式本申請的實施例提出一種新的多階段任務的實現(xiàn)方法,在任務信息攜帶用來表示期望進行的下一處理階段的目標狀態(tài),并且允許在起始階段或中間階段的運行流程中修改任務的目標狀態(tài),從而能夠在非結束階段根據(jù)需要指定某個任務的下一個處理階段,以改變該任務的處理流程、或者跳過不必要的處理階段,使得一個處理階段的實現(xiàn)能夠復用于不同的完整處理流程,并且無需在不必要的處理階段對某些任務做空處理,在提高某些任務處理效率的同時降低了開發(fā)人員的工作量,以解決現(xiàn)有技術存在的問題。本申請實施例中,多階段任務包括起始階段,一個到多個中間階段和結束階段,各個階段的任務由運行在一個到多個節(jié)點上若干個處理功能模塊來負責執(zhí)行。通常不同的任務階段由不同的處理功能模塊來負責執(zhí)行,負責同一個任務階段的多個處理功能模塊并行進行該階段的處理。任務信息管理平臺負責維護每個任務的信息,并向各個節(jié)點上的處理功能模塊提供這些信息,處理功能模塊能夠根據(jù)這些信息獲得需要進行所負責階段的處理的任務,并能夠通過更新其中的部分信息來將處理完畢的任務推進到下一個處理階段(結束階段除外)。其中,任務信息管理平臺可以是網(wǎng)絡中一個到多個物理或邏輯節(jié)點,這些節(jié)點上可以同時運行有處理功能模塊,不做限定;處理功能模塊可以是運行在網(wǎng)絡節(jié)點上的應用程序、進程或線程等,同一個節(jié)點上可以運行一個或一個以上負責處理同一階段任務的處理功能模塊,也可以運行負責處理不同階段任務的處理功能模塊,同樣不做限定。圖1所示是本申請實施例應用場景的一個例子,分別負責執(zhí)行階段a、階段b、階段c和階段d的若干個處理功能模塊a、處理功能模塊b、處理功能模塊c和處理功能模塊d分別運行在三臺服務器上,任務管理信息平臺向每個處理功能模塊提供各階段任務的信息,使得每個處理功能模塊a、處理功能模塊b、處理功能模塊c或處理功能模塊d能夠得到處于階段a、階段b、階段c或階段d的任務的信息,并執(zhí)行該階段的處理過程。本申請的實施例運行在負責起始階段或中間階段處理任務執(zhí)行的節(jié)點上。所運行的節(jié)點可以是一個物理設備,如手機、平板電腦、pc(personalcomputer,個人電腦)、筆記本、服務器等;也可以是一個邏輯設備,如虛擬機等;還可以是由兩個或兩個以上分擔不同職責的物理或邏輯設備、相互協(xié)同來實現(xiàn)本申請實施例中的各項功能。本申請的實施例中,應用在起始階段任務執(zhí)行節(jié)點上的多階段任務的實現(xiàn)方法,其流程如圖2所示。步驟210,創(chuàng)建多階段任務,生成該任務的標識。當一個多階段任務的啟動條件具備時,負責起始階段的處理功能模塊創(chuàng)建一個新的多階段任務,為所創(chuàng)建的任務確定唯一的標識。任務的標識用來唯一代表一個任務。創(chuàng)建多階段任務和生成標識的具體實現(xiàn)請參照現(xiàn)有技術,不再贅述。步驟220,確定所創(chuàng)建任務的下一個處理階段,采用該任務的標識和下一個處理階段對應的目標狀態(tài)生成該任務的信息。本申請的實施例中,任務的信息包括包括任務的標識、任務的目標狀態(tài),此外還可以根據(jù)實際應用場景的需要包括其他與任務有關的參數(shù)。任務的目標狀態(tài)用來表示該任務要進行的下一個階段處理是哪個階段。處理功能模塊可以根據(jù)所創(chuàng)建任務的業(yè)務類型、和/或其他業(yè)務參數(shù)來確定該任務的下一個處理階段,本申請的實施例不做限定。在確定下一個處理階段后,處理功能模塊將任務的標識、下一個處理階段對應的目標狀態(tài)、以及可能有的其他參數(shù)一并封裝在任務的信息中。步驟230,將所創(chuàng)建任務的信息添加到任務管理平臺上。如前所述,本申請實施例中,任務管理平臺上維護有任務的信息,包括任務的標識、任務的目標狀態(tài)。任務管理平臺可以采用各種不同的實現(xiàn)方式來維護任務的信息,本申請的實施例不做限定。例如,可以在任務管理平臺上保存任務的信息。任務管理平臺可以將每個任務的信息保存在一個文件、一張數(shù)據(jù)庫表或其他存儲單位里。負責起始階段的處理功能模塊在生成任務的信息后,將所創(chuàng)建任務的信息添加到任務管理平臺上,添加在該文件、該數(shù)據(jù)庫表或其他存儲單位里。再如,可以在任務管理平臺上運行一個任務消息隊列,隊列中的任務消息攜帶有任務的信息。負責起始階段的處理功能模塊在生成任務的信息后,創(chuàng)建任務消息,將任務的信息封裝在任務消息中,并發(fā)送到任務管理平臺的任務消息隊列中。以圖1的應用場景為例,設所有任務的起始階段為階段a,結束階段為階段d,第一類任務的處理階段依次為:階段a、階段b、階段c和階段d;第二類任務的處理階段依次為:階段a、階段b和階段d;第三類任務的處理階段依次為:階段a、階段c和階段d。設任務的目標狀態(tài)取值為s-b、s-c和s-d,分別對應于階段b、階段c和階段d。在負責起始階段任務處理的處理功能模塊創(chuàng)建一個第三類任務0003后,將任務標識0003、任務的目標狀態(tài)(下一個處理階段為階段c,對應的目標狀態(tài)為)、和任務的類型(第三類)封裝為任務0003的信息。設任務管理平臺上采用表1來保存任務的信息,則在負責起始階段任務處理的處理功能模塊將任務0003的信息添加到任務管理平臺后,表1如下所示:任務的標識任務的目標狀態(tài)任務的類型0001s-b第一類0002s-d第三類0003s-c第一類表1本申請的實施例中,應用在中間階段任務執(zhí)行節(jié)點上的多階段任務的實現(xiàn)方法,其流程如圖3所示。步驟310,從任務信息管理平臺獲取目標狀態(tài)對應于本階段的任務的信息。負責執(zhí)行不同階段處理過程的各個處理功能模塊分別從任務管理平臺維護的任務信息中,獲取目標狀態(tài)對應于其負責處理的階段的任務信息。仍以圖1的應用場景為例,設在某個時間點,任務管理平臺上保存的任務信息如表1所示,則一個處理功能模塊b、一個處理功能模塊c和一個處理功能模塊d可以分別獲取到任務0001、任務0003和任務0002。各個處理功能模塊從任務管理平臺獲取目標狀態(tài)的具體方式可以根據(jù)實際應用場景中任務管理平臺的具體實現(xiàn)來確定,本申請的實施例不做限定。以下以兩種方式為例來做出說明。第一種:掃描的實現(xiàn)方式。在任務管理平臺保存每個任務的信息;各個處理功能模塊分別從任務管理平臺保存的任務信息中,讀取目標狀態(tài)對應于本階段的任務的標識。具體而言,任務管理平臺可以將任務信息保存在某個文件中,也可以保存在數(shù)據(jù)庫表中,或以其他形式存儲。在任務的同一階段有多個處理功能模塊并行處理的情形下,當某個處理功能模塊讀取目標狀態(tài)對應于其所處理階段的任務的信息后,應當使得該任務的信息對其他處理功能模塊來說不可讀取,以免該任務的同一個階段被不同的處理功能模塊重復處理。例如,對文件形式保存的任務信息,可以刪除文件中該任務的信息;對以數(shù)據(jù)庫表形式保存的任務信息,可以對該任務信息的記錄上鎖。第二種:消息隊列的實現(xiàn)方式。在任務管理平臺上維護一個任務消息隊列,其中的任務消息攜帶有任務的信息。由任務管理平臺將消息隊列中的任務消息散發(fā)給所處理的階段對應于任務消息中目標狀態(tài)的處理功能模塊。處理功能模塊收到任務管理平臺發(fā)送的任務消息后,從任務消息中獲取任務的標識。在第一種掃描的實現(xiàn)方式中,通常處理功能模塊以某個設定的周期對任務管理平臺上保存的任務信息進行掃描,這樣,任務的某個階段等待處理的時間與設定周期相關聯(lián)。如果周期設置過長,則容易造成任務處理時間的延長,達不到好的時效性;如果周期設置過短,容易造成處理功能模塊的無效掃描(即在保存的任務信息中找不到需要處理的任務的標識),而浪費所在設備的運算資源。采用第二種消息隊列的方式,可以在有需要處理的某階段任務時,由任務管理平臺主動將其分配給負責該階段的處理功能模塊,在提高處理實時性的同時降低了處理功能模塊所在節(jié)點的工作負荷。步驟320,執(zhí)行具有該標識的任務的本階段處理過程。在處理功能模塊得到需要進行本階段處理的任務的標識后,可以根據(jù)任務的標識獲取到該任務,并進行該任務的本階段處理。通過任務的標識獲取任務的具體方式、和本階段處理的具體方式,可根據(jù)實際應用場景的需要,參照現(xiàn)有技術實現(xiàn),不再贅述。步驟330,確定該任務的下一處理階段,將包括對應于下一處理階段的目標狀態(tài)的任務信息更新到任務管理平臺。在所負責階段的任務處理的執(zhí)行過程中、或執(zhí)行完畢后,處理功能模塊確定該任務的下一個處理階段。處理功能模塊可以根據(jù)執(zhí)行過程中得到與該任務相關的信息、該任務在本階段的執(zhí)行結果、或者該任務的信息中攜帶的其他參數(shù)等因素中的一個到多個來確定該任務的下一個處理階段,本申請的實施例不做限定。在確定下一個處理階段后,處理功能模塊將任務信息中對應于下一個處理階段的目標狀態(tài)更新到任務管理平臺,以便將該任務推進到下一階段的處理。仍以圖1的應用場景為例,當處理功能模塊b在執(zhí)行階段b處理過程后,會將第一類任務的目標狀態(tài)值修改為s-c,而將第二類任務的目標狀態(tài)值修改為s-d,并均更新至任務管理平臺。這樣,第一類任務的下一階段將由處理功能模塊c執(zhí)行階段c的處理過程,而第二類任務的下一階段將由處理功能模塊d執(zhí)行階段d的處理過程。處理功能模塊更新任務信息的具體實現(xiàn)可以根據(jù)任務管理平臺維護任務信息的方式、處理功能模塊獲取任務信息的方式等來確定。仍以前述掃描和消息隊列的實現(xiàn)方式為例進行說明。掃描的實現(xiàn)方式中,在確定所處理任務的下一處理階段后,處理功能模塊將任務管理平臺上保存的該任務的目標狀態(tài)修改為對應于該任務的下一處理階段。具體而言,對任務管理平臺將任務信息保存在文件中、并且在處理功能模塊獲取某條任務信息后將其刪除的場景中,處理功能模塊在本階段執(zhí)行完畢后,可以將目標狀態(tài)對應于下一個處理階段的任務信息添加到該文件中;在任務管理平臺將任務信息保存數(shù)據(jù)庫表中、并且在處理功能模塊獲取某條任務信息的記錄后將該記錄加鎖的場景中,處理功能模塊可以將該記錄中的目標狀態(tài)修改后,再對該記錄解鎖。消息隊列的實現(xiàn)方式中,在確定所處理任務的下一處理階段后,處理功能模塊修改該任務消息中的目標狀態(tài)為對應于該任務的下一處理階段,將修改后的任務消息發(fā)送到任務管理平臺的任務消息隊列中。任務管理平臺會根據(jù)修改后任務消息中的目標狀態(tài),將任務消息分發(fā)至負責處理下一階段的處理功能模塊。有些情形下,下一階段的處理過程需要滿足一定的條件才能開始執(zhí)行,則本階段的處理功能模塊可以在滿足該任務的下一處理階段的預定執(zhí)行條件時,將修改后的任務消息發(fā)送到任務管理平臺的任務消息隊列中。例如,下一階段的處理功能模塊只在一定的時間段內(nèi)運行,則本階段的處理功能模塊可以在進入該時間段后,再向消息隊列發(fā)送目標狀態(tài)修改后的任務消息。需要說明的是,本申請實施例中的多階段任務的實現(xiàn)方法應用在結束階段任務執(zhí)行節(jié)點上的流程為步驟310和步驟320。在一些應用場景中,在任務的完整執(zhí)行流程中,一個任務需要被拆分為兩個或兩個以上的子任務,子任務的執(zhí)行將作為完整執(zhí)行流程中的一個到多個階段來進行。當一個任務的所有子任務執(zhí)行完畢后,在一些情況下會有一個子任務合并的階段,用來將該任務的所有子任務的執(zhí)行結果進行合并。其中,任務的拆分階段和子任務的執(zhí)行階段可以是任務的起始階段或中間階段,子任務的執(zhí)行階段或子任務合并階段可以是任務的中間階段或結束階段。此外,負責任務拆分階段的處理功能模塊在任務管理平臺上保存該父任務的所有子任務的標識。對負責任務拆分階段的處理功能模塊,拆分階段的處理過程通常包括:在從任務管理平臺獲取任務標識后,以具有該標識的任務為父任務,將其拆分為至少兩個子任務;類似的,將父任務拆分為子任務的具體實現(xiàn)因應用場景的不同而不同,可參照現(xiàn)有技術進行,不再贅述。在進行任務拆分后,負責任務拆分階段的處理功能模塊為每個子任務生成其標識,確定每個子任務的下一處理階段,基于每個子任務的標識、下一處理階段對應的目標狀態(tài)、和所屬父任務的標識生成子任務的任務信息,并且將生成的每個子任務的信息添加到任務管理平臺上。對負責子任務執(zhí)行階段的處理功能模塊,從任務管理平臺獲取目標狀態(tài)匹配于本階段的某一個子任務的信息,其中包括子任務的標識、子任務的目標狀態(tài)和所屬父任務的標識。負責子任務執(zhí)行階段的處理功能模塊根據(jù)子任務的標識來獲取要執(zhí)行的子任務,并且進行本階段的處理過程,然后確定子任務的下一個階段,并且把對應于下一處理階段的目標狀態(tài)的子任務的信息更新到任務管理平臺。子任務的下一處理階段可能是另一個子任務的執(zhí)行階段,可能是合并階段。子任務合并階段在屬于一個任務的所有子任務執(zhí)行完畢后,也即合并前的最后一個子任務執(zhí)行階段運行完成后才能實際執(zhí)行。可以采用不同的機制來啟動子任務合并階段并且以相應的方式來實現(xiàn)子任務的合并,以下舉例說明:第一個例子:在掃描的實現(xiàn)方式中,負責子任務拆分階段的處理功能模塊在將每個子任務的信息添加到任務管理平臺后,按照對應于子任務合并階段的目標狀態(tài)來將父任務更新到任務管理平臺上。負責子任務合并階段的處理功能模塊在獲取到目標狀態(tài)對應于本階段的任務的標識(即父任務的標識)后,從任務管理平臺查找該父任務拆分而成的所有子任務的標識,然后按照該標識在任務管理平臺保存的任務信息中,掃描所有目標狀態(tài)對應于本階段的任務中是否已經(jīng)包括該父任務的所有子任務,如果已經(jīng)包括,則根據(jù)每個子任務的標識獲取每個子任務的執(zhí)行結果并進行合并;否則繼續(xù)掃描。第二個例子:在掃描的實現(xiàn)方式中,負責子任務拆分階段的處理功能模塊在將每個子任務的信息添加到任務管理平臺后,刪除任務管理平臺上這些子任務所屬父任務的信息或者將該父任務的目標狀態(tài)修改為等待狀態(tài)(對于父任務而言,子任務的執(zhí)行階段可以看做是等待階段)。除該父任務的所有子任務的標識外,負責任務拆分階段的處理功能模塊還在任務管理平臺上保存該父任務的已執(zhí)行完畢的子任務數(shù)量,其值置為0。負責合并前最后一個子任務執(zhí)行階段的處理功能模塊,在執(zhí)行完子任務的本階段處理過程后,將任務管理平臺上保存的該子任務所屬父任務的已執(zhí)行完畢的子任務數(shù)量加1;如果已執(zhí)行完畢的子任務數(shù)量在加1后等于任務管理平臺上保存的該父任務的所有子任務的總數(shù),則確定父任務的下一處理階段,即子任務合并階段,將帶有子任務合并階段對應的目標狀態(tài)的父任務信息添加到任務管理平臺上、或者將任務管理平臺上父任務的目標狀態(tài)從等待狀態(tài)修改為子任務合并階段對應的目標狀態(tài),否則不作處理。負責子任務合并階段的處理功能模塊在任務管理平臺掃描目標狀態(tài)對應于子任務合并階段的任務,如果掃描到,則從任務信息中提取任務的標識(即父任務的標識),從任務管理平臺獲取屬于該父任務的所有子任務的標識;再根據(jù)每個子任務的標識獲取每個子任務的執(zhí)行結果,并進行合并。第三個例子:在消息隊列的實現(xiàn)方式中,負責子任務拆分階段的處理功能模塊在每個任務消息(每個任務消息中包括一個子任務的信息)發(fā)送到任務管理平臺的任務消息隊列,并在任務管理平臺上保存該父任務的所有子任務的標識,并將已執(zhí)行完畢的子任務數(shù)量置為0。負責合并前最后一個子任務執(zhí)行階段的處理功能模塊,在執(zhí)行完子任務的本階段處理過程后,將任務管理平臺上保存的該子任務所屬父任務的已執(zhí)行完畢的子任務數(shù)量加1;如果已執(zhí)行完畢的子任務數(shù)量在加1后等于任務管理平臺上保存的該父任務的所有子任務的總數(shù),則確定父任務的下一處理階段,即子任務合并階段,向任務管理平臺的消息隊列發(fā)送任務消息,該任務消息中帶有標識為父任務標識、目標狀態(tài)對應于子任務合并階段的任務信息,否則不作處理。負責子任務合并階段的處理功能模塊從任務管理平臺收到目標狀態(tài)對應于子任務合并階段的任務消息,將該任務消息中的標識作為父任務的標識,從任務管理平臺獲取屬于該父任務的所有子任務的標識;再根據(jù)每個子任務的標識獲取每個子任務的執(zhí)行結果,并進行合并。上述第一個例子中,往往需要經(jīng)過多次掃描才能等待所有子任務執(zhí)行完畢;而第二個和第三個例子中,通過對已執(zhí)行完畢的子任務進行計數(shù),可以在最后一個子任務執(zhí)行完畢時自動更新父任務的目標狀態(tài),不僅更加及時,而且減少了多次掃描造成了資源消耗??梢?,本申請的實施例中,采用任務的目標狀態(tài)來表示期望進行的下一處理階段,并且在起始階段或中間階段的運行流程中可以修改任務的目標狀態(tài),從而能夠在非結束階段根據(jù)需要指定某個任務的下一個處理階段,實現(xiàn)了對完整處理流程中處理階段的靈活改變,這樣不僅能夠通過將一些任務跳過不必要的階段來提高了這些任務的處理效率;而且能夠將相同的處理階段復用于不同的完整處理流程,降低了開發(fā)人員的工作量。在本申請的一個應用示例中,第三方支付平臺在每天的固定時段,會收到與該第三方支付平臺有業(yè)務對接的多家金融機構的多種類型的文件,這些文件中包括兩種,一種是業(yè)務文件,其內(nèi)容為若干用戶當天的交易行為確認、分紅等業(yè)務記錄;另一種是監(jiān)控文件,其內(nèi)容為監(jiān)控數(shù)據(jù)。第三方支付平臺采用包括數(shù)臺服務器的文件處理集群來對每一條業(yè)務記錄或監(jiān)控數(shù)據(jù)進行處理。文件處理集群采用多階段任務來進行文件處理。文件處理集群上運行若干個初始化功能模塊、若干個拆分功能模塊、若干個執(zhí)行功能模塊、若干個合并功能模塊、和若干個結束功能模塊,分別進行文件的初始化、拆分、執(zhí)行、合并和結束階段的處理。其中,文件的拆分、執(zhí)行、合并和結束階段對應的任務目標狀態(tài)分別為:拆分、執(zhí)行、合并和結束。此外,第三方支付平臺采用消息中間鍵集群來實現(xiàn)任務消息隊列,根據(jù)消息隊列中任務消息的目標狀態(tài)將任務消息發(fā)送給處理階段對應于目標狀態(tài)的功能模塊。由于業(yè)務文件的數(shù)據(jù)量龐大,將其拆分為幾個部分,分別由不同的執(zhí)行功能模塊來處理,再由合并功能模塊將處理結果合并到一個文件中;而監(jiān)控文件的數(shù)據(jù)量有限,無需進行拆分可直接執(zhí)行。換言之,業(yè)務文件的完整處理流程需要經(jīng)過以下階段:初始化、拆分、執(zhí)行、合并和結束階段;監(jiān)控文件的完整處理流程經(jīng)過以下階段:初始化、執(zhí)行和結束階段。初始化功能模塊的運行流程如圖4所示。通過定時掃描,初始化功能模塊獲取來自其他金融機構的待處理文件。當掃描到一個待處理文件時,初始化功能模塊創(chuàng)建一個新的任務,為新任務指定任務的標識。初始化功能模塊判斷待處理文件的類型是否是業(yè)務文件,如果是則該任務的下一個處理階段為拆分階段,對應的目標狀態(tài)為拆分,初始化功能模塊將該任務的標識、和目標狀態(tài)(拆分)封裝為該任務的信息;如果待處理文件的類型是監(jiān)控文件,則該任務的下一個處理階段為執(zhí)行階段,對應的目標狀態(tài)為執(zhí)行,初始化功能模塊將該任務的標識、和目標狀態(tài)(執(zhí)行)封裝為該任務的信息。初始化功能模塊生成攜帶有該任務信息的任務消息,將任務消息發(fā)送到消息中間鍵集群的任務消息隊列中。拆分功能模塊的運行流程如圖5所示。在從消息中間鍵集群收到任務消息后,拆分功能模塊提取其中的任務信息,對任務的目標狀態(tài)是否為拆分進行校驗,如果不是則向消息中間鍵集群拒絕該任務消息。被拒絕的任務消息將由消息中間鍵集群重新按照其目標狀態(tài)進行分發(fā)。校驗完成后,拆分功能模塊將具有該任務消息中標識的父任務拆分為兩個或兩個以上的子任務,每個子任務對應于待處理文件的一個部分。拆分功能模塊為每個子任務指定任務標識,確定其下一個處理階段為執(zhí)行階段,將任務的標識(子任務標識)、目標狀態(tài)(執(zhí)行)、和所屬父任務的標識封裝為每個子任務的信息。拆分功能模塊在預定網(wǎng)絡位置(假設為存儲服務器上的父任務登記表)保存父任務的標識、該父任務的所有子任務的標識、所有子任務的總數(shù)和已執(zhí)行完畢的子任務的數(shù)量(當前置為0)。拆分功能模塊生成每個子任務的任務消息,并將所有生成的任務消息發(fā)送到任務消息隊列中。執(zhí)行功能模塊的運行流程如圖6所示。在從消息中間鍵集群收到任務消息后,執(zhí)行功能模塊提取其中的任務信息,對任務的目標狀態(tài)是否為執(zhí)行進行校驗,如果不是則向消息中間鍵集群拒絕該任務消息。校驗完成后,執(zhí)行功能模塊對具有該任務消息中標識的任務進行本階段的處理,并將處理結果以該任務的標識為索引保存在網(wǎng)絡中。執(zhí)行功能模塊所執(zhí)行的任務可能是處理部分業(yè)務文件的子任務,其任務信息中帶有所屬父任務的標識;也可能是處理監(jiān)控文件的任務,其任務信息中不會帶有父任務標識。如果該任務的信息中帶有父任務標識,執(zhí)行功能模塊在存儲服務器上的父任務登記表中根據(jù)該父任務標識查找到已執(zhí)行完畢的子任務的數(shù)量,并將該數(shù)量加1后保存;如果加1后已執(zhí)行完畢的子任務數(shù)量等于該父任務的所有子任務的總數(shù),則執(zhí)行功能模塊生成一條任務消息發(fā)送到消息中間鍵集群的任務消息隊列,該任務消息攜帶的任務信息中,任務標識為父任務的標識,目標狀態(tài)為合并;如果加1后已執(zhí)行完畢的子任務數(shù)量小于父任務的所有子任務的總數(shù),則執(zhí)行功能模塊對該子任務的處理結束。對任務信息中不帶有父任務標識的任務,執(zhí)行功能模塊生成一條任務消息發(fā)送到消息中間鍵集群的任務消息隊列,任務消息中以該任務的標識和結束目標狀態(tài)為該任務的信息。合并功能模塊的運行流程如圖7所示。在從消息中間鍵集群收到任務消息后,合并功能模塊提取其中的任務信息,對任務的目標狀態(tài)是否為合并進行校驗,如果不是則向消息中間鍵集群拒絕該任務消息。校驗完成后,合并功能模塊提取任務信息中的任務標識(父任務標識),在存儲服務器上的父任務登記表中,查找該父任務標識的所有子任務的標識,再以這些子任務標識為索引獲取保存的每個子任務的處理結果,并且將處理結果合并在一個文件中,以該任務的標識(父任務標識)為索引將合并后的文件保存在網(wǎng)絡中。合并功能模塊生成一條目標狀態(tài)為結束的任務消息發(fā)送到消息中間鍵集群的任務消息隊列中。結束功能模塊在收到任務消息、并對任務消息中的目標狀態(tài)是否是結束進行校驗后,進行該任務結束階段的處理過程。本應用示例中,消息中間鍵集群與保存父任務登記表的存儲服務器組成了任務管理平臺。與上述流程實現(xiàn)對應,本申請的實施例還提供了一種應用在負責中間階段任務執(zhí)行的節(jié)點上的多階段任務的實現(xiàn)裝置,和一種應用在負責起始階段任務執(zhí)行的節(jié)點上的多階段任務的實現(xiàn)裝置。這兩種裝置均可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為邏輯意義上的裝置,是通過所在設備的cpu(centralprocessunit,中央處理器)將對應的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,除了圖8所示的cpu、內(nèi)存以及非易失性存儲器之外,多階段任務的實現(xiàn)裝置所在的設備通常還包括用于進行無線信號收發(fā)的芯片等其他硬件,和/或用于實現(xiàn)網(wǎng)絡通信功能的板卡等其他硬件。圖9所示為本申請實施例提供的一種多階段任務的實現(xiàn)裝置,所述多階段任務包括起始階段、至少一個中間階段和結束階段,所述裝置應用在負責起始階段任務執(zhí)行的節(jié)點上,包括任務創(chuàng)建單元、任務信息生成單元和任務添加單元,其中:任務創(chuàng)建單元用于創(chuàng)建多階段任務,生成所述任務的標識;任務信息生成單元用于確定所述任務的下一個處理階段,采用所述任務的標識和下一個處理階段對應的目標狀態(tài)生成所述任務的信息;任務添加單元用于將所述任務的信息添加到任務管理平臺上。可選的,所述任務信息管理平臺上保存有任務的信息;所述任務添加單元具體用于:在任務管理平臺上保存的任務信息中添加所創(chuàng)建任務的信息??蛇x的,所述任務管理平臺上包括任務消息隊列,隊列里的任務消息中包括任務的信息;所述任務添加單元具體用于:將攜帶所述任務信息的任務消息發(fā)送到任務管理平臺的任務消息隊列中。圖10所示為本申請實施例提供的一種多階段任務的實現(xiàn)裝置,所述多階段任務包括起始階段、至少一個中間階段和結束階段,所述裝置應用在負責中間階段任務執(zhí)行的節(jié)點上,包括任務信息獲取單元、本階段處理單元和下階段確定單元,其中:任務信息獲取單元用于從任務信息管理平臺獲取目標狀態(tài)對應于本階段的任務的信息;所述任務信息中包括任務的標識和目標狀態(tài);本階段處理單元用于執(zhí)行具有所述標識的任務的本階段處理過程;下階段確定單元用于確定所述任務的下一處理階段,將包括對應于下一處理階段的目標狀態(tài)的任務信息更新到任務管理平臺。可選的,所述任務信息管理平臺上保存有任務的信息;所述任務信息獲取單元具體用于:讀取任務管理平臺保存的任務信息中目標狀態(tài)對應于本階段的任務的標識;所述下階段確定單元具體用于:確定所述任務的下一處理階段,將任務管理平臺上保存的所述任務的目標狀態(tài)修改為對應于所述任務的下一處理階段。可選的,所述任務管理平臺上包括任務消息隊列,隊列里的任務消息中包括任務的信息;所述任務信息獲取單元具體用于:接收任務管理平臺發(fā)送的任務消息,所述任務消息中的目標狀態(tài)對應于本階段,從所述任務消息中獲取任務的標識;所述下階段確定單元具體用于:確定所述任務的下一處理階段,修改所述任務消息中的目標狀態(tài)為對應于所述任務的下一處理階段,將修改后的任務消息發(fā)送到任務管理平臺的任務消息隊列中??蛇x的,所述下階段確定單元具體用于:確定所述任務的下一處理階段,修改所述任務消息中的目標狀態(tài)為對應于所述任務的下一處理階段,當滿足所述任務下一處理階段的預定執(zhí)行條件時,將修改后的任務消息發(fā)送到任務管理平臺的任務消息隊列中??蛇x的,所述本階段處理過程包括:以具有所述標識的任務為父任務,將其拆分為至少兩個子任務;所述下階段確定單元具體用于:生成每個子任務的信息,包括子任務的標識、目標狀態(tài)、和所屬父任務的標識;將每個子任務的信息添加到任務管理平臺上;所述裝置還包括:子任務計數(shù)初始化單元,用于在任務管理平臺上保存所述父任務的所有子任務的標識,并將已執(zhí)行完畢的子任務數(shù)量置為0??蛇x的,所述本階段處理過程包括:執(zhí)行從父任務拆分出來的至少兩個子任務中的一個;所述任務的信息還包括:所屬父任務的標識;所述任務管理平臺上保存有所述父任務的所有子任務的標識、和已執(zhí)行完畢的子任務數(shù)量;所述任務信息獲取單元具體用于:從任務信息管理平臺獲取目標狀態(tài)匹配于本階段的某一個子任務的信息;所述裝置還包括:子任務計數(shù)更新單元,用于在執(zhí)行完具有所述標識的子任務的本階段處理過程后,將任務管理平臺上該子任務所屬父任務的已執(zhí)行完畢的子任務數(shù)量加1;所述下階段確定單元具體用于:如果任務管理平臺上該子任務所屬父任務的已執(zhí)行完畢的子任務數(shù)量在加1后等于父任務的所有子任務的總數(shù),則確定父任務的下一處理階段,將包括對應于下一處理階段的目標狀態(tài)的父任務信息更新到任務管理平臺,否則不作處理??蛇x的,所述本階段處理過程包括:合并屬于同一個父任務的所有子任務的執(zhí)行結果;所述任務的標識為:父任務的標識;所述本階段處理單元具體用于:從任務管理平臺獲取屬于所述父任務的所有子任務的標識;根據(jù)每個子任務的標識獲取每個子任務的執(zhí)行結果,并進行合并。以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內(nèi)。在一個典型的配置中,計算設備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。當前第1頁12