任務請求處理方法、裝置和企業信息系統的制作方法
【專利摘要】本發明提供了一種任務請求處理方法、裝置和企業信息系統,該方法包括:任意后臺服務器接收企業服務總線發送的任務請求報文;根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中;任意后臺服務器處于空閑狀態時,從所述任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務。本發明將任務請求的處理過程分解為可分別獨立執行的兩個過程,可分別由兩臺不同的服務器執行。而對于同一個任務請求,又是按照正常的執行順序執行,任務的執行過程均是在相應的后臺服務器處于空閑狀態時才進行的,且采用線程池執行任務,充分保證了任務能夠被執行,提高了后臺服務器的安全性和穩定性,改善了客戶體驗。
【專利說明】
任務請求處理方法、裝置和企業信息系統
技術領域
[0001]本發明涉及金融服務技術領域,尤其涉及一種任務請求處理方法、裝置和企業信息系統。
【背景技術】
[0002]在企業信息系統中,如銀行服務系統中,通常會有大量的任務請求需要處理,如交易的處理、發送消息/郵件/短信、導入/導出數據、批量打印等,處理這些任務請求往往是銀行服務系統的核心功能。
[0003]對于銀行的日常任務處理來說,部分任務請求要求實時處理,即要求立即反饋處理結果,部分任務請求要求準實時處理,部分任務請求要求定時處理。所謂準實時處理,即某些任務請求的處理過程耗時較長,如批量導入/導出,批量打印等任務請求,對于這些任務請求來說,客戶端等待任務請求響應的時間容忍度也相對寬松,并非要求點擊請求后立即反饋結果,這種響應即為準實時響應,這種任務即為準實時任務。
[0004]對于銀行服務系統來說,各種任務請求通常在某些固定的時間段是高并發的,若要滿足這種需求,就要求后臺服務器能夠在準實時響應的情況下處理這些高并發的請求。但是,發明人發現,在用戶任務請求高并發的時候,銀行服務系統經常會出現性能瓶頸,影響客戶的服務體驗。
【發明內容】
[0005]針對現有方法的不足,本發明提出了一種任務請求處理方法、裝置和企業信息系統,該方法調整了任務請求的處理過程,將原本由同一臺后臺服務器順序執行的過程,調整為可分別獨立執行的兩個過程,而執行這兩個過程的服務器之間沒有任何相互牽制,從而在一定程度上提高了銀行服務系統的性能,改善了客戶的服務體驗。
[0006]為達到以上目的,本發明的技術方案如下:
[0007]—種任務請求處理方法,應用于企業信息系統,所述企業信息系統包括數據庫和多個相互獨立工作的后臺服務器,該方法在所述后臺服務器上執行,該方法包括:
[0008]任意后臺服務器接收企業服務總線發送的任務請求報文;
[0009]根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯;
[0010]任意后臺服務器處于空閑狀態時,從所述數據庫的任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務。
[0011]優選的,所述根據接收到的任務請求報文生成任務后,將所述任務添加到數據庫的任務表之前,還包括,為所述任務生成任務號,所述任務號為所述任務的唯一標識。
[0012]優選的,任意后臺服務器處于空閑狀態時,從所述數據庫的任務表中抓取未被執行的任務,并在線程池執行抓取到的任務具體為:
[0013]當某個后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務,對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中;
[0014]當該后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行;
[0015]任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,判斷是否需要更新任務狀態和/或記錄任務的處理日志,若是,則更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志;
[0016]任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,判斷是否需要對任務執行結果進行后續操作,若是,則將該后續操作需求封裝成新的任務請求報文,并根據所述新的任務請求報文生成新的任務,并將所述新的任務添加到數據庫的任務表中。
[0017]優選的,所述從所述任務表中抓取未被執行的任務的過程為:從所述任務表中抓取未被執行的任務時,為抓取到的任務設置鎖定標識,以避免抓取到的任務被其它后臺服務器再次抓取,所述鎖定標識中包括設置該鎖定標識的后臺服務器標識。
[0018]優選的,所述鎖定標識與所述抓取到的未被執行的任務的任務號相關聯。
[0019]優選的,所述從所述任務表中抓取未被執行的任務時,對任務的抓取規則為:按照所述任務表中任務生成的時間順序,優先抓取所述任務表中最先生成且未被執行的任務。
[0020]優選的,所述對抓取到的任務進行預處理,并將預處理后的處理結果,放入該后臺服務器的任務執行隊列的過程具體為:
[0021 ]提取出所述任務的任務信息中的任務屬性信息和任務參數信息;
[0022]從預設的多個任務攔截邏輯中,查詢出與所述任務屬性信息對應的任務攔截邏輯;
[0023]利用查詢出的所述任務攔截邏輯,根據所述任務參數信息,獲取與所述任務對應的業務信息;
[0024]根據所述任務屬性信息,從預設的多個任務處理邏輯中,查詢出與所述任務對應的任務處理邏輯;
[0025]將所述任務屬性信息、任務參數信息、獲取到的與所述任務對應的所述業務信息、以及與所述任務對應的任務處理邏輯封裝在一起,放入該后臺服務器的任務執行隊列中。
[0026]優選的,所述任務屬性信息包括任務號、任務模式、任務執行方式、任務執行狀態、任務交易狀態、任務創建者和任務創建時間。
[0027]優選的,所述任務模式包括實時任務、準實時任務、定時任務;所述任務執行方式包括發送消息、發送郵件、發送短信、導入/導出信息、生成文件、調用其他組件的聯機服務;一種任務執行方式對應一種任務模式。
[0028]優選的,針對一臺后臺服務器,其中的線程池的大小設置方式為:
[0029]對于1密集型任務,所述線程池中設置有2N個線程,對于計算密集型任務,所述線程池中設置有N個線程,其中N為后臺服務器中CPU的核數。
[0030]優選的,所述將獲取到的任務放入線程池中執行的方式具體為:根據所述獲取到的任務的任務信息,將所述任務分解為多個并行執行的子任務,為每個子任務分配線程池中的一個線程并執行,直至所有子任務執行完成。
[0031 ]優選的,該方法還包括:以輪循的方式對所述任務表中的定時任務進行檢測,當到達數據庫中定時任務的指定執行時間時,修改所述定時任務的可執行狀態。
[0032]優選的,所述從所述數據庫的任務表中抓取未被執行的任務之前,還包括:檢查當前后臺服務器中是否存在故障任務,若存在,則釋放所述故障任務,并將所述故障任務重新添加到數據庫的任務表中,所述故障任務包括處于執行過程中,但未被執行完成的任務,以及已從所述任務執行隊列中取出,但未被執行的任務。
[0033]本發明實施例還公開了一種任務請求處理裝置,應用于企業信息系統,所述企業信息系統包括數據庫和多個相互獨立工作的后臺服務器,該裝置位于在所述后臺服務器上,該處理裝置包括:
[0034]接收單元,用于接收企業服務總線發送的任務請求報文;
[0035]任務生成單元,用于根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯;
[0036]第一任務執行單元,用于從所述數據庫的任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務;
[0037]線程池創建單元,用于創建線程池;
[0038]存儲單元,用于存儲預設的與不同任務對應的任務處理邏輯。
[0039]優選的,所述任務生成單元還用于為所述任務生成任務號,所述任務號為所述任務的唯一標識。
[0040]優選的,所述第一任務執行單元包括:
[0041]任務抓取單元,用于當后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務,并對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中;
[0042]第二任務執行單元,用于當后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行;
[0043]第一后置處理單元,用于任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,在確定需要更新任務狀態和/或記錄任務的處理日志時,更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志;
[0044]第二后置處理單元,用于任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,在確定需要對任務執行結果進行后續操作時,將該后續操作需求封裝成新的任務請求報文,并將所述新的任務請求報文發送給所述任務生成單元。
[0045]優選的,所述任務抓取單元還用于為抓取到的任務設置鎖定標識,以避免抓取到的任務被其它后臺服務器再次抓取,所述鎖定標識中包括設置該鎖定標識的后臺服務器標識,且所述鎖定標識與所述抓取到的未被執行的任務的任務號相關聯。
[0046]優選的,所述任務抓取單元包括任務預處理單元,用于對抓取到的任務進行預處理;所述存儲單元還用于存儲預設的不同任務對應的任務攔截邏輯,所述任務預處理單元包括:信息提取單元,用于提取出所述任務的任務信息中的任務屬性信息和任務參數信息,所述任務屬性信息包括任務號、任務模式、任務執行方式、任務執行狀態、任務交易狀態、任務創建者和任務創建時間;
[0047]第一查詢單元,用于從預設的多個任務攔截邏輯中,查詢出與所述任務屬性信息對應的任務攔截邏輯;
[0048]第一獲取單元,用于利用查詢出的所述任務攔截邏輯,根據所述任務參數信息,獲取與所述任務對應的業務信息;
[0049]第二查詢單元,用于根據所述任務屬性信息,從預設的多個任務處理邏輯中,查詢出與所述任務對應的任務處理邏輯;
[0050]第一封裝單元,用于將所述任務屬性信息、任務參數信息、獲取到的與所述任務對應的所述業務信息、以及與所述任務對應的任務處理邏輯封裝在一起,放入該后臺服務器的任務執行隊列中。
[0051]優選的,該任務請求處理裝置還包括:定時單元,用于以輪循的方式對所述任務表中的定時任務進行檢測,當到達數據庫中定時任務的指定執行時間時,修改所述定時任務的可執行狀態。
[0052]優選的,該任務請求處理裝置還包括:故障恢復單元,用于在從所述數據庫的任務表中抓取未被執行的任務之前,檢查當前后臺服務器中是否存在故障任務,若存在,則釋放所述故障任務,并將所述故障任務重新添加到數據庫的任務表中,所述故障任務包括處于執行過程中,但未被執行完成的任務,以及已從所述任務執行隊列中取出,但未被執行的任務。
[0053]本發明實施例還公開了一種企業信息系統,包括客戶端、客戶端服務器、企業服務總線、數據庫和多個相互獨立工作的后臺服務器,所述后臺服務器用于接收企業服務總線發送的任務請求報文,根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,并在處于空閑狀態時,從所述數據庫的任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務,所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯。
[0054]本發明實施例還公開了一種企業信息系統,包括客戶端、客戶端服務器、企業服務總線、數據庫和多個相互獨立工作的后臺服務器,所述后臺服務器用于接收企業服務總線發送的任務請求報文,根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,并在該后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務,對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中,并且,在該后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行,并且,在任務在線程池中執行完成后,在根據所述任務的任務屬性信息和/或任務處理邏輯,確定需要更新任務狀態和/或記錄任務的處理日志時,更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志,并且,任務在線程池中執行完成后,在根據所述任務的任務屬性信息和/或任務處理邏輯,確定需要對任務執行結果進行后續操作時,將該后續操作需求封裝成新的任務請求報文,并根據所述新的任務請求報文生成新的任務,并將所述新的任務添加到數據庫的任務表中。
[0055]本發明的有益效果在于:
[0056]本發明公開的任務請求處理方法,通過將任務請求的處理過程由同一臺服務器連續依次執行的過程,分解為可分別獨立執行的兩個過程,而執行這兩個過程的服務器之間沒有任何相互牽制,即可分別由兩臺不同的服務器執行。而對于同一個任務請求而言,又是按照正常的執行順序執行的。并且,任務的執行過程均是在相應的后臺服務器處于空閑狀態時才進行的,充分保證了任務能夠被執行,提高了任務執行成功率,也減少了后臺服務器因硬件資源緊張而導致宕機的可能性,提高了后臺服務器的安全性和穩定性。并且,由于采用了線程池執行任務,提高了服務器的處理效率,進一步提高了企業信息系統的性能,改善了客戶體驗。
【附圖說明】
[0057]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0058]圖1為本發明實施例公開的企業信息系統的結構圖;
[0059]圖2為本發明實施例一公開的任務請求處理方法的流程圖;
[0060]圖3為本發明實施例二公開的任務請求處理方法的流程圖;
[0061 ]圖4為本發明實施例二公開的任務請求處理方法中預處理過程的流程圖;
[0062]圖5為本發明實施例四公開的任務請求處理裝置的結構圖。
【具體實施方式】
[0063]下面結合附圖和具體實施例對本發明作進一步詳細的描述。
[0064]現有技術中對任務請求的處理流程如下:
[0065]I)用戶通過客戶端發起任務請求,客戶端將任務請求轉給客戶端服務器;
[0066]2)客戶端服務器將任務請求封裝成任務請求報文發送給企業服務總線;
[0067]3)企業服務總線接收到任務請求報文后,通過負載均衡機制,將任務請求報文分配給其中一臺相對空閑的后臺服務器;
[0068]4)后臺服務器接收到任務請求報文后,對報文進行解密,拿到報文實體,即任務信息,之后為每個任務請求生成一條線程,進行任務請求處理;
[0069]5)處理完成后,后臺服務器沿原路將處理結果發送給發起任務請求的客戶端。
[0070]發明人發現,現有技術中的后臺服務器在處理任務請求時,后臺服務器主機進行實時的任務處理,每個任務均是在一個后臺服務器的模塊中順序執行,為每一個任務請求生成一條獨立的線程進行處理。當任務請求高并發的時候,后臺服務器則會生成大量并行工作的線程,多條線程并行處理高并發的任務請求。
[0071]現有技術中的上述任務請求處理流程,很容易影響銀行服務系統的正常工作,其中重要的原因就在于后臺服務器的架構和任務請求處理方式,導致后臺服務器硬件資源緊張。首先,每個任務占用一條線程,多條線程并行處理多個任務,本身占用的硬件資源就很多,很容易導致服務器硬件資源緊張。其次,采用上述任務請求處理方式,服務器完成一項任務所需的時間為:線程的創建時間Tl+在線程中執行任務的時間T22+銷毀線程的時間T3,任務高并發時,多條線程的創建和銷毀需要消耗的時間也會很多。
[0072]舉例來說,在進行數據庫類任務處理時,會出現多個后臺服務器同時頻繁訪問數據庫的情況,會造成數據庫連接數量過多,導致數據庫的負載過大,影響任務請求的處理效率。在進行文件類任務處理時,后臺服務器內大量線程同時并行工作,很容易造成服務器1資源、內存資源、CPU資源的緊張,甚至耗盡。在進行網絡類任務處理時,后臺服務器需同時響應大量任務請求,會造成短期內占用帶寬過高,從而導致網絡擁堵甚至丟包。以上這些情況,均會影響銀行服務系統的性能,降低客戶體驗。
[0073]實施例一
[0074]基于以上原因,本發明實施例一提出了一種任務請求處理方法,應用于企業信息系統,其整體架構如圖1所示,所述企業信息系統包括多個客戶端1、客戶端服務器2、企業服務總線3、數據庫5和多個相互獨立工作的后臺服務器,包括后臺服務器41-4η。該企業信息系統可以是銀行服務系統,或其他類型的企業信息系統,本實施例僅以銀行服務系統為例進行方案的說明。
[0075]本實施例公開的任務請求處理方法在所述后臺服務器上執行,該方法的流程圖如圖2所示,具體包括以下步驟:
[0076]步驟SlOl、通過客戶端I發起任務請求,客戶端I將任務請求轉給客戶端服務器2。
[0077]步驟S102、客戶端服務器2將任務請求封裝成任務請求報文發送給企業服務總線3。
[0078]步驟S103、企業服務總線接收到任務請求報文后,根據調度機制,將任務請求報文分配給其中一臺后臺服務器。
[0079]以上步驟SlOl-步驟S103,與現有技術中基本相同,這里不做過多贅述。
[0080]步驟S104、任意后臺服務器接收企業服務總線發送的任務請求報文。
[0081 ]步驟S105、根據接收到的任務請求報文生成任務。
[0082]該步驟需要對任務請求報文進行解密,獲取到報文中的任務信息。
[0083]步驟S106、將所述任務添加到數據庫的任務表中。
[0084]所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯。
[0085]上述步驟S104-步驟S106是在同一臺后臺服務器上執行的,此處增加了生成任務后,后臺服務器與數據庫的交互過程。接收到任務請求報文的后臺服務器在將任務添加到數據庫的任務表中之后,該后臺服務器對該任務的處理過程就可告一段落,即可不再對同一任務進行后續執行過程。
[0086]步驟S107、任意后臺服務器處于空閑狀態時,從所述數據庫的任務表中抓取未被執行的任務。
[0087]該步驟建立了任務執行前,后臺服務器與數據庫間的溝通,而這一溝通的主動權在后臺服務器本身,當后臺服務器處于空閑狀態時,才會發起抓取未被執行的任務的動作,而不是如現有技術中一樣被動的接收企業服務總線分配的任務。
[0088]步驟S108、在線程池中執行抓取到的任務。
[0089]相比于為每個任務單獨分配一個線程執行而言,采用線程池執行任務,大大縮短了在多個任務并行執行時,多個線程的創建時間Tl和銷毀線程的時間T3,提高了服務器的程序性能。具體來說,采用線程池執行任務,可以把Tl,Τ3分別安排在后臺服務器程序的啟動和結束的時間段或者一些空閑的時間段,使得服務器程序處理客戶請求時,不會再有Tl和Τ3的開銷了,大大提高了任務的執行效率。
[0090]并且,采用線程池執行任務,不僅調整了 Tl和Τ3發生的時間段,而且還顯著減少了創建線程的數目。舉例來說,假設一個后臺服務器一天要處理50000個任務請求,現有技術中是每個任務請求均需要一個單獨的線程完成,若要處理這些任務請求,就需要先后建立并銷毀50000個線程。而在線程池中,線程的數量一般是固定的,所以產生的線程總數不會超過線程池中線程的總數。而一般線程池大小遠遠小于50000。所以采用線程池處理任務請求時,服務器程序不會為了創建50000個線程,而在處理任務請求時浪費時間,從而提高了服務器的處理效率。
[0091]需要說明的是,步驟S207-步驟S108是在同一臺后臺服務器上執行的,并且,執行步驟S207-步驟S108的后臺服務器,與執行步驟S104-步驟S106的服務器并無任何關聯,二者可以是同一臺服務器,也可以是不同的服務器。如步驟S104-步驟S106在后臺服務器41上進行,步驟S207-步驟S108是后臺服務器41-4η中的任意一臺服務器上執行,只要執行步驟S207-步驟S108的后臺服務器處于相對空閑狀態,有足夠的資源執行抓取到的任務即可。
[0092]本實施例中通過將任務請求的處理過程由同一臺服務器連續依次執行的過程,分解為可分別獨立執行的兩個過程,而執行這兩個過程的服務器之間沒有任何相互牽制,即可分別由兩臺不同的服務器執行。而對于同一個任務請求而言,又是按照正常的執行順序執行的。并且,任務的執行過程均是在相應的后臺服務器處于空閑狀態時才進行的,充分保證了任務能夠被執行,提高了任務執行成功率,也減少了后臺服務器因硬件資源緊張而導致宕機的可能性。并且,由于采用了線程池執行任務,提高了服務器的處理效率,進一步提高了企業信息系統的性能,改善了客戶體驗。
[0093]實施例二
[0094]本發明實施例公開的方法流程如圖3所示,與上一實施例相比,本實施例中與上一實施例內容相同的部分,執行方式也相同,故在本實施例這不做詳細描述,以下只描述與上一實施例中不同的內容。
[0095]其中步驟S201-步驟S205與上一實施例相同,這里不再贅述。
[0096]步驟S206、為步驟S205中生成的任務生成任務號,所述任務號為所述任務的唯一標識O
[0097]在任務執行過程中,有時需要對任務信息進行相應的標記,通過為任務生成任務號,可采用對任務號進行相應的標記,來代替對具體的任務信息進行標記,從而減少對數據庫或服務器資源的占用。
[0098]步驟S207、將設置任務號之后的任務添加到數據庫的任務表中。
[0099]每個任務的任務信息中均包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯。
[0100]其中,所述任務屬性信息屬于任務的通用信息,即每個任務都會包含的信息。所述任務屬性信息包括本實施例中為每個任務生成的任務號、任務模式、任務執行方式、任務執行狀態、任務交易狀態、任務創建者和任務創建時間。[0101 ]所述任務模式是指任務是屬于實時任務、準實時任務,還是定時任務。任務的執行方式也就是任務類型,所述任務執行方式包括發送消息、發送郵件、發送短信、導入/導出信息、生成文件、調用其他組件的聯機服務(如批量打印)等。本實施例這的任務執行方式僅以此為例,除此之外,在銀行服務系統中的其他執行方式,也均可采用本實施例公開的任務請求處理方法進行處理。
[0102]需要說明的是,一種任務執行方式對應一種任務模式,即在銀行服務系統中,不同的任務,對應不同的執行方式,也就限定了任務對任務處理結果在反饋時間上的緊迫性。
[0103]任務執行狀態是指任務處于未執行的狀態,還是處于開始執行的狀態,還是已經執行完成了。任務交易狀態是指任務是執行成功了,還是部分成功了,還是執行失敗。
[0104]任務參數信息除了保存任務執行的上下文信息,另一個主要用途是與業務信息相關聯,即可通過任務參數信息獲取業務信息。業務信息包括業務描述信息(如業務涉及的金額、數量等)、業務參與者信息(如調入機構、調出機構等)、業務的處理方式信息(即業務對應的任務執行方式信息,如調用聯機服務、發送消息等)等。
[0105]如實施例一所述,對于接收到任務請求報文的服務器來說,執行完步驟S206-步驟S207,即可不再繼續對該任務做后續處理。
[0106]步驟S208、當某個后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務。
[0107]對于一個后臺服務器來說,從數據庫的任務表中抓取未被執行的任務的前提是,其自身的當前狀態能夠處理即將被抓取的任務,也就避免了后臺服務器在執行當前任務的同時,再次承接的任務量超過其本身處理能力,也提高了當前任務的執行效率。
[0108]其中,從所述任務表中抓取未被執行的任務時,對任務的抓取規則為:按照所述任務表中任務生成的時間順序,優先抓取所述任務表中最先生成且未被執行的任務,從而確保了最先生成的任務被最先處理。
[0109]需要說明的是,后臺服務器在從所述任務表中抓取未被執行的任務時,為抓取到的任務設置鎖定標識,以避免抓取到的任務被其它后臺服務器再次抓取,所述鎖定標識中包括設置該鎖定標識的后臺服務器標識,也就是抓取到這些任務的后臺服務器的標識。可以采用數據庫行鎖的方式鎖定被抓取的任務。
[0110]任務表中的任務被抓取后,并不從數據庫的任務表中刪除,因此需要為在任務表中設置鎖定標識,才能避免同一任務被其它服務器重復抓取而導致同一任務被不同的服務器重復執行,提高銀行服務系統的處理效率。
[0111]在設置鎖定標識時,為抓取到的任務設置的鎖定標識與所述抓取到的未被執行的任務的任務號相關聯,而不是為任務的所有信息均設置鎖定標識。從而進一步降低服務器的工作量。
[0112]進一步的,任務的抓取粒度和抓取頻度等可根據服務器的狀態進行設置,每次抓取的任務數量需要與服務器中任務的執行速度相匹配,以便盡可能的減輕服務器和數據庫的壓力,最大限度的利用服務器中線程池的處理能力。
[0113]對于銀行服務系統來說,為了保證服務系統的安全性和穩定性,任務的抓取粒度一般是人工設置,在工作過程中人工進行調整。對于其他企業的服務系統來說,也可以由服務器本身根據自身當前時段承擔的任務量,自動進行任務抓取粒度的調整。
[0114]當然,如果在數據庫的任務表中沒有找到未被其他服務器抓取的任務,則該服務器即可休眠一段時間,直至任務表中有新的任務。
[0115]步驟S209、對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中。該步驟是為任務的執行過程做準備。
[0116]其中,該預處理過程的流程圖如圖4所示,包括以下步驟:
[0117]步驟S2091、提取出所述任務的任務信息中的任務屬性信息和任務參數信息。
[0118]步驟S2092、從預設的多個任務攔截邏輯中,查詢出與所述任務屬性信息對應的任務攔截邏輯。
[0119]任務參數信息是獲取業務信息的渠道,任務攔截邏輯主要用來根據任務參數信息獲取與任務對應的業務信息。由于所述任務攔截邏輯與所述任務執行方式為一一對應的關系,因此,主要依據任務的執行方式確定任務攔截邏輯,即從預設的多個任務攔截邏輯中,查詢出與所述任務執行方式對應的任務攔截邏輯。
[0120]步驟S2093、利用查詢出的所述任務攔截邏輯,根據所述任務參數信息,獲取與所述任務對應的業務信息。
[0121]步驟S2094、根據所述任務屬性信息,從預設的多個任務處理邏輯中,查詢出與所述任務對應的任務處理邏輯。
[0122]具體的,所述任務處理邏輯與所述任務屬性信息中的任務執行方式為一一對應的關系,因此主要是根據所述任務的任務執行方式,從預設的多個任務處理邏輯中,選取與所述任務執行方式對應的任務處理邏輯。
[0123]任務處理邏輯決定了后續任務執行時的具體流程、方式等。舉例來說,對于某些信息查詢類的任務或是機構的撤并類的任務,對任務的執行結果不在意,在任務執行完成后,不需再對任務表中的任務信息做任何處理,則在后臺服務器的線程池中執行完成該任務后,不會再觸發新的操作,即不需對該任務做任何相關處理。對于某些發送郵件、發送短消息類的任務來說,有時候會對任務的執行結果比較在意,需要在任務執行完成后,記錄任務的執行狀態、執行過程等。對于生成相關數據的EXCEL表單/文檔之類的任務,在任務執行完成后,則會觸發一個新的任務。不同的任務采用何種處理方式,均囊括在任務處理邏輯之中。
[0124]步驟S2095、將所述任務屬性信息、任務參數信息、獲取到的與所述任務對應的所述業務信息、以及與所述任務對應的任務處理邏輯封裝在一起,放入該后臺服務器的任務執行隊列中。
[0125]執行完步驟S2095之后,任務即在任務執行隊列中處于等待被執行的狀態。
[0126]步驟S210、當該后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行。當然,若任務執行隊列中無未被執行的任務,則休眠一段時間。
[0127]在選取待執行的任務時,可按照任務放入執行隊列的時間順序,優先執行最先放入到執行隊列中的任務,也可按照任務模式來選取優先執行的任務,如對于實時任務來說,對任務結果反饋的即時性要求較高,則可優先執行,對于準實時任務來說,對任務結果反饋的即時性要求不高,則可稍后執行。具體情況具體設計,本實施例這對此不作限定。
[0128]針對一臺后臺服務器,其中的線程池的大小設置方式為:對于1密集型任務,所述線程池中設置有2N個線程,對于計算密集型任務,所述線程池中設置有N個線程,其中N為后臺服務器中CPU的核數。
[0129]對放入線程池中執行的任務來說,具體的執行方式為:根據所述獲取到的任務的任務信息,將所述任務分解為多個并行執行的子任務,為每個子任務分配線程池中的一個線程并執行,直至所有子任務執行完成。
[0130]將一個任務在線程池中分解為多個子任務,由線程池中的多個線程并行執行,進一步加快了任務的處理速度。相應的,線程池中還設置有計數模塊,用來對多個可并行執行的子任務的執行過程進行計數。
[0131]步驟S211、任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,判斷是否需要更新任務狀態和/或記錄任務的處理日志,若是,進入步驟S212,更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志。步驟S211-步驟S212可簡稱為任務的第一后置處理過程。
[0132]如步驟S2094中的描述,對于某些發送郵件、發送短消息類的任務來說,會對任務的執行結果比較在意,需要在任務執行完成后,更新任務狀態和/記錄任務的處理日志,則執行此步驟。
[0133]一般情況下,是否要更新任務狀態和/記錄任務的處理日志,已經設置在任務處理邏輯中了。除了根據任務處理邏輯判斷外,因為任務處理邏輯與任務屬性信息中的任務執行方式是對應關系,還可以根據任務執行方式進行判斷。
[0134]步驟S213、任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,判斷是否需要對任務執行結果進行后續操作,若是,則進入步驟S214,將該后續操作需求封裝成新的任務請求報文,之后根據所述新的任務請求報文生成新的任務,并將所述新的任務添加到數據庫的任務表中,即調用任務生成單元的功能。步驟S213-步驟S214可簡稱為任務的第二后置處理過程。
[0135]舉例來說,對于生成相關數據的EXCEL表單的任務,在預處理過程中,需要先查詢出需要生成EXCEL表單的數據或這些數據的存儲位置,之后找到相應的任務執行邏輯,將任務參數信息、任務執行邏輯等與查詢到數據或這些數據的存儲位置封裝在一起,放入任務執行隊列。之后在線程池中,根據查詢到的數據,生成所需的EXCEL表單,并將該EXCEL表單存儲到數據庫的某個位置,同時需要將該EXCEL表單的存儲位置反饋給任務發起者,而將將該EXCEL表單的存儲位置反饋給業務發起者就是一個消息發送類型的新任務。服務器會將該新任務封裝成新的任務請求報文,由該服務器中的任務生成單元生成一個新的任務,并進行相應的處理。
[0136]其中,步驟S211和步驟S213的順序可以互換,并且,兩個步驟可以是順序執行的關系,也可以并行執行,二者沒有任何制約關系,本實施例中僅以二者順序執行為例進行說明。
[0137]本實施例中將任務的執行過程又進一步劃分四個階段,即任務的抓取并預處理過程,以及在線程池中的具體執行過程,此外還設置了任務的第一處理過程和第二后置處理過程。
[0138]其中,任務的抓取并預處理過程與任務在線程池中的具體執行過程也并非是緊密耦合的關系,即對于同一個任務來說,并非是一個過程執行完成后,必須立即執行另一個過程,而是在服務器的線程池有多余的線程能接受新的任務時,才主動獲取任務執行隊列中的任務,充分保證了任務執行過程的穩定性,也確保了所有任務均能夠被執行。從另一個角度來說,對于同一個任務來說,不改變原有順序執行的步驟,只是將現有技術這任務執行的各個環節的緊密耦合關系,更改為松耦合的關系,即將現有技術中高并發且需要同步處理的任務請求處理方式轉換為異步處理的方式,減輕了服務器因硬件資源有限導致的性能瓶頸的限制,而且通過線程池執行的方式,也能夠合理控制任務執行的并發數,能充分利用服務器的處理能力,相較于現有技術,也提高了服務器的處理能力,降低了因資源耗盡而引起的服務器不穩定甚至宕機的可能性,從而提高了服務器的安全性和穩定性。
[0139]并且,對于不同類型的任務來說,設置了第一處理過程和第二后置處理過程,可在這兩個過程中插入新的任務處理邏輯,增強了任務處理的靈活性和可擴展性,在增加新的業務類型時,可很方便的擴展新的任務處理方式,避免了對服務器處理架構的大幅度調整。并且,該任務處理方法應用在集群環境時,也使整個企業服務系統在硬件層面具備較強的橫向擴展能力。
[0140]實施例三
[0141]與上一實施例相比,本實施例中增加了對故障任務的恢復功能,確保故障任務也能夠被執行。
[0142]當后臺服務器啟動后,或出現故障之后重新啟動后,先檢查當前后臺服務器中是否存在故障任務,若存在,則釋放所述故障任務,并將所述故障任務重新添加到數據庫的任務表中,之后再執行從所述數據庫的任務表中抓取未被執行的任務的步驟,若不存在故障任務,則直接進入從所述數據庫的任務表中抓取未被執行的任務的步驟。
[0143]所述故障任務包括處于執行過程中,但未被執行完成的任務,以及已從所述任務執行隊列中取出,但未被執行的任務。
[0144]實施例四
[0145]與上一實施例相比,本實施例中增加了對定時任務的處理過程。在實時任務和準實時任務的執行過程中,同時以輪循的方式對所述任務表中的定時任務進行檢測,當到達數據庫中定時任務的指定執行時間時,修改所述定時任務的可執行狀態,也就是修改任務類型,將定時任務修改為實時任務或準實時任務。定時任務修改為實時任務或準實時任務后,會立即被處于空閑狀態的服務器抓取并執行。
[0146]具體的,本實施例中可采用基于多級時間輪的原理設計的定時器,通過定時器來觸發定時任務的執行。
[0147]實施例五
[0148]與方法實施例相對應,本實施例公開了一種任務請求處理裝置,應用于如圖1所示的企業信息系統,所述企業信息系統包括數據庫和多個相互獨立工作的后臺服務器,該裝置位于在所述后臺服務器上。該處理裝置的結構圖如圖5所示,包括以下功能模塊:
[0149]接收單元11,用于接收企業服務總線發送的任務請求報文。
[0150]任務生成單元12,用于根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯。此外,任務生成單元12還用于為所述任務生成任務號,所述任務號為所述任務的唯一標識。
[0151]第一任務執行單元13,用于從所述數據庫的任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務。
[0152]線程池創建單元14,用于創建線程池。
[0153]存儲單元15,用于存儲預設的與不同任務對應的任務處理邏輯。存儲單元15還用于存儲預設的不同任務對應的任務攔截邏輯。
[0154]此外,處理裝置還包括:
[0155]定時單元16,用于以輪循的方式對所述任務表中的定時任務進行檢測,當到達數據庫中定時任務的指定執行時間時,修改所述定時任務的可執行狀態。
[0156]故障恢復單元17,用于在從所述數據庫的任務表中抓取未被執行的任務之前,檢查當前后臺服務器中是否存在故障任務,若存在,則釋放所述故障任務,并將所述故障任務重新添加到數據庫的任務表中,所述故障任務包括處于執行過程中,但未被執行完成的任務,以及已從所述任務執行隊列中取出,但未被執行的任務。
[0157]具體的,第一任務執行單元13包括以下功能模塊:
[0158]任務抓取單元131,用于當后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務,并對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中。
[0159]第二任務執行單元132,用于當后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行。
[0160]第一后置處理單元133,用于任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,在確定需要更新任務狀態和/或記錄任務的處理日志時,更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志。
[0161]第二后置處理單元134,用于任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,在確定需要對任務執行結果進行后續操作時,將該后續操作需求封裝成新的任務請求報文,并將所述新的任務請求報文發送給所述任務生成單元。
[0162]更進一步,任務抓取單元131包括:
[0163]抓取單元1311,用于當后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務。
[0164]鎖定單元1312,用于為抓取到的任務設置鎖定標識,以避免抓取到的任務被其它后臺服務器再次抓取。所述鎖定標識中包括設置該鎖定標識的后臺服務器標識,且所述鎖定標識與所述抓取到的未被執行的任務的任務號相關聯。
[0165]任務預處理單元1313,用于對抓取到的任務進行預處理。
[0166]所述任務預處理單元1313包括:
[0167]信息提取單元,用于提取出所述任務的任務信息中的任務屬性信息和任務參數信息,所述任務屬性信息包括任務號、任務模式、任務執行方式、任務執行狀態、任務交易狀態、任務創建者和任務創建時間。
[0168]第一查詢單元,用于從預設的多個任務攔截邏輯中,查詢出與所述任務屬性信息對應的任務攔截邏輯。
[0169]第一獲取單元,用于利用查詢出的所述任務攔截邏輯,根據所述任務參數信息,獲取與所述任務對應的業務信息。
[0170]第二查詢單元,用于根據所述任務屬性信息,從預設的多個任務處理邏輯中,查詢出與所述任務對應的任務處理邏輯。
[0171]第一封裝單元,用于將所述任務屬性信息、任務參數信息、獲取到的與所述任務對應的所述業務信息、以及與所述任務對應的任務處理邏輯封裝在一起,放入該后臺服務器的任務執行隊列中。
[0172]實施例六
[0173]與方法實施例相對應,本實施例公開了一種企業信息系統,如圖1所示,該企業信息系統包括客戶端1、客戶端服務器2、企業服務總線2、數據庫5和多個相互獨立工作的后臺服務器41_4n。
[0174]所述后臺服務器用于接收企業服務總線發送的任務請求報文,根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,并在處于空閑狀態時,從所述數據庫的任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務,所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯。
[0175]進一步的,所述后臺服務器的工作可以細化為:接收企業服務總線發送的任務請求報文,根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,并在該后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務,對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中,并且,在該后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行,并且,在任務在線程池中執行完成后,在根據所述任務的任務屬性信息和/或任務處理邏輯,確定需要更新任務狀態和/或記錄任務的處理日志時,更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志,并且,任務在線程池中執行完成后,在根據所述任務的任務屬性信息和/或任務處理邏輯,確定需要對任務執行結果進行后續操作時,將該后續操作需求封裝成新的任務請求報文,并根據所述新的任務請求報文生成新的任務,并將所述新的任務添加到數據庫的任務表中。
[0176]顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
【主權項】
1.一種任務請求處理方法,應用于企業信息系統,所述企業信息系統包括數據庫和多個相互獨立工作的后臺服務器,該方法在所述后臺服務器上執行,其特征在于,該方法包括: 任意后臺服務器接收企業服務總線發送的任務請求報文; 根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯; 任意后臺服務器處于空閑狀態時,從所述數據庫的任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務。2.根據權利要求1所述的任務請求處理方法,其特征在于,所述根據接收到的任務請求報文生成任務后,將所述任務添加到數據庫的任務表之前,還包括,為所述任務生成任務號,所述任務號為所述任務的唯一標識。3.根據權利要求2所述的任務請求處理方法,其特征在于,任意后臺服務器處于空閑狀態時,從所述數據庫的任務表中抓取未被執行的任務,并在線程池執行抓取到的任務具體為: 當某個后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務,對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中; 當該后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行; 任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,判斷是否需要更新任務狀態和/或記錄任務的處理日志,若是,則更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志; 任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,判斷是否需要對任務執行結果進行后續操作,若是,則將該后續操作需求封裝成新的任務請求報文,并根據所述新的任務請求報文生成新的任務,并將所述新的任務添加到數據庫的任務表中。4.根據權利要求3所述的任務請求處理方法,其特征在于,所述從所述任務表中抓取未被執行的任務的過程為:從所述任務表中抓取未被執行的任務時,為抓取到的任務設置鎖定標識,以避免抓取到的任務被其它后臺服務器再次抓取,所述鎖定標識中包括設置該鎖定標識的后臺服務器標識。5.根據權利要求4所述的任務請求處理方法,其特征在于,所述鎖定標識與所述抓取到的未被執行的任務的任務號相關聯。6.根據權利要求5所述的任務請求處理方法,其特征在于,所述從所述任務表中抓取未被執行的任務時,對任務的抓取規則為:按照所述任務表中任務生成的時間順序,優先抓取所述任務表中最先生成且未被執行的任務。7.根據權利要求3所述的任務請求處理方法,其特征在于,所述對抓取到的任務進行預處理,并將預處理后的處理結果,放入該后臺服務器的任務執行隊列的過程具體為: 提取出所述任務的任務信息中的任務屬性信息和任務參數信息; 從預設的多個任務攔截邏輯中,查詢出與所述任務屬性信息對應的任務攔截邏輯; 利用查詢出的所述任務攔截邏輯,根據所述任務參數信息,獲取與所述任務對應的業務信息; 根據所述任務屬性信息,從預設的多個任務處理邏輯中,查詢出與所述任務對應的任務處理邏輯; 將所述任務屬性信息、任務參數信息、獲取到的與所述任務對應的所述業務信息、以及與所述任務對應的任務處理邏輯封裝在一起,放入該后臺服務器的任務執行隊列中。8.根據權利要求7所述的任務請求處理方法,其特征在于,所述任務屬性信息包括任務號、任務模式、任務執行方式、任務執行狀態、任務交易狀態、任務創建者和任務創建時間。9.根據權利要求8所述的任務請求處理方法,其特征在于,所述從預設的多個任務攔截邏輯中,查詢出與所述任務屬性信息對應的任務攔截邏輯的方式具體為:從預設的多個任務攔截邏輯中,查詢出與所述任務執行方式對應的任務攔截邏輯,所述任務攔截邏輯與所述任務執行方式為 對應的關系; 所述根據所述任務屬性信息,從預設的多個任務處理邏輯中,選取與所述任務對應的任務處理邏輯的方式具體為:根據所述任務的任務執行方式,從預設的多個任務處理邏輯中,選取與所述任務執行方式對應的任務處理邏輯,所述任務處理邏輯與所述任務執行方式為 對應的關系。10.根據權利要求9所述的任務請求處理方法,其特征在于,所述任務模式包括實時任務、準實時任務、定時任務;所述任務執行方式包括發送消息、發送郵件、發送短信、導入/導出信息、生成文件、調用其他組件的聯機服務;一種任務執行方式對應一種任務模式。11.根據權利要求1所述的任務請求處理方法,其特征在于,針對一臺后臺服務器,其中的線程池的大小設置方式為: 對于1密集型任務,所述線程池中設置有2N個線程,對于計算密集型任務,所述線程池中設置有N個線程,其中N為后臺服務器中CPU的核數。12.根據權利要求3所述的任務請求處理方法,其特征在于,所述將獲取到的任務放入線程池中執行的方式具體為:根據所述獲取到的任務的任務信息,將所述任務分解為多個并行執行的子任務,為每個子任務分配線程池中的一個線程并執行,直至所有子任務執行完成。13.根據權利要求1所述的任務請求處理方法,其特征在于,還包括:以輪循的方式對所述任務表中的定時任務進行檢測,當到達數據庫中定時任務的指定執行時間時,修改所述定時任務的可執行狀態。14.根據權利要求3所述的任務請求處理方法,其特征在于,所述從所述數據庫的任務表中抓取未被執行的任務之前,還包括: 檢查當前后臺服務器中是否存在故障任務,若存在,則釋放所述故障任務,并將所述故障任務重新添加到數據庫的任務表中,所述故障任務包括處于執行過程中,但未被執行完成的任務,以及已從所述任務執行隊列中取出,但未被執行的任務。15.—種任務請求處理裝置,應用于企業信息系統,所述企業信息系統包括數據庫和多個相互獨立工作的后臺服務器,該裝置位于在所述后臺服務器上,其特征在于,該處理裝置包括: 接收單元,用于接收企業服務總線發送的任務請求報文; 任務生成單元,用于根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯; 第一任務執行單元,用于從所述數據庫的任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務; 線程池創建單元,用于創建線程池; 存儲單元,用于存儲預設的與不同任務對應的任務處理邏輯。16.根據權利要求15所述的任務請求處理裝置,其特征在于,所述任務生成單元還用于為所述任務生成任務號,所述任務號為所述任務的唯一標識。17.根據權利要求16所述的任務請求處理裝置,其特征在于,所述第一任務執行單元包括: 任務抓取單元,用于當后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務,并對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中; 第二任務執行單元,用于當后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行; 第一后置處理單元,用于任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,在確定需要更新任務狀態和/或記錄任務的處理日志時,更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志; 第二后置處理單元,用于任務在線程池中執行完成后,根據所述任務的任務屬性信息和/或任務處理邏輯,在確定需要對任務執行結果進行后續操作時,將該后續操作需求封裝成新的任務請求報文,并將所述新的任務請求報文發送給所述任務生成單元。18.根據權利要求17所述的任務請求處理裝置,其特征在于,所述任務抓取單元還用于為抓取到的任務設置鎖定標識,以避免抓取到的任務被其它后臺服務器再次抓取,所述鎖定標識中包括設置該鎖定標識的后臺服務器標識,且所述鎖定標識與所述抓取到的未被執行的任務的任務號相關聯。19.根據權利要求18所述的任務請求處理裝置,其特征在于,所述任務抓取單元包括任務預處理單元,用于對抓取到的任務進行預處理;所述存儲單元還用于存儲預設的不同任務對應的任務攔截邏輯,所述任務預處理單元包括:信息提取單元,用于提取出所述任務的任務信息中的任務屬性信息和任務參數信息,所述任務屬性信息包括任務號、任務模式、任務執行方式、任務執行狀態、任務交易狀態、任務創建者和任務創建時間; 第一查詢單元,用于從預設的多個任務攔截邏輯中,查詢出與所述任務屬性信息對應的任務攔截邏輯; 第一獲取單元,用于利用查詢出的所述任務攔截邏輯,根據所述任務參數信息,獲取與所述任務對應的業務信息; 第二查詢單元,用于根據所述任務屬性信息,從預設的多個任務處理邏輯中,查詢出與所述任務對應的任務處理邏輯; 第一封裝單元,用于將所述任務屬性信息、任務參數信息、獲取到的與所述任務對應的所述業務信息、以及與所述任務對應的任務處理邏輯封裝在一起,放入該后臺服務器的任務執行隊列中。20.根據權利要求15所述的任務請求處理裝置,其特征在于,還包括: 定時單元,用于以輪循的方式對所述任務表中的定時任務進行檢測,當到達數據庫中定時任務的指定執行時間時,修改所述定時任務的可執行狀態。21.根據權利要求15所述的任務請求處理裝置,其特征在于,還包括: 故障恢復單元,用于在從所述數據庫的任務表中抓取未被執行的任務之前,檢查當前后臺服務器中是否存在故障任務,若存在,則釋放所述故障任務,并將所述故障任務重新添加到數據庫的任務表中,所述故障任務包括處于執行過程中,但未被執行完成的任務,以及已從所述任務執行隊列中取出,但未被執行的任務。22.—種企業信息系統,包括客戶端、客戶端服務器、企業服務總線、數據庫和多個相互獨立工作的后臺服務器,其特征在于,所述后臺服務器用于接收企業服務總線發送的任務請求報文,根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,并在處于空閑狀態時,從所述數據庫的任務表中抓取未被執行的任務,并在線程池中執行抓取到的任務,所述任務的任務信息中包含任務屬性信息和任務參數信息,所述任務屬性信息與所述任務的任務處理邏輯相關聯,所述任務參數信息與所述任務的業務信息相關聯。23.—種企業信息系統,包括客戶端、客戶端服務器、企業服務總線、數據庫和多個相互獨立工作的后臺服務器,其特征在于,所述后臺服務器用于接收企業服務總線發送的任務請求報文,根據接收到的任務請求報文生成任務,并將所述任務添加到數據庫的任務表中,并在該后臺服務器的任務執行隊列中的任務數量低于預設閾值時,從所述任務表中抓取未被執行的任務,對抓取到的任務進行預處理,將預處理后的處理結果,放入該后臺服務器的任務執行隊列中,并且,在該后臺服務器的線程池中存在空閑線程時,獲取任務執行隊列中未被執行的任務,將獲取到的任務放入線程池中執行,并且,在任務在線程池中執行完成后,在根據所述任務的任務屬性信息和/或任務處理邏輯,確定需要更新任務狀態和/或記錄任務的處理日志時,更新數據庫中所述任務的任務狀態和/或記錄任務的處理日志,并且,任務在線程池中執行完成后,在根據所述任務的任務屬性信息和/或任務處理邏輯,確定需要對任務執行結果進行后續操作時,將該后續操作需求封裝成新的任務請求報文,并根據所述新的任務請求報文生成新的任務,并將所述新的任務添加到數據庫的任務表中。
【文檔編號】G06F9/50GK106095585SQ201610460153
【公開日】2016年11月9日
【申請日】2016年6月22日
【發明人】喬遲, 張揚, 林明, 李保倉, 丁小進, 陳穎
【申請人】中國建設銀行股份有限公司