專利名稱:一種etl調(diào)度的實現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請涉及計算機領(lǐng)域,特別涉及一種流程控制方法及裝置。
背景技術(shù):
數(shù)據(jù)倉庫(DataWarehouse, DW)是一個面向主題的、集成的、相對穩(wěn)定 的、反映歷史變化的數(shù)據(jù)集合,用于支持管理決策。數(shù)據(jù)倉庫是一個獨立的數(shù) 才居多不境,而數(shù)才居抽取、壽爭4吳和力口載(Extraction國Transformation-Loading, ETL) 是構(gòu)建數(shù)據(jù)倉庫的重要一環(huán)。
ETL用于將分布的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)(例如,關(guān)系數(shù)據(jù)、平面數(shù)據(jù)文 件等)抽取到臨時中間層后進(jìn)行清洗、轉(zhuǎn)換和集成,最后按照預(yù)先定義好的數(shù)
據(jù)倉庫模型,將數(shù)據(jù)加載到數(shù)據(jù)倉庫中,使構(gòu)建的數(shù)據(jù)倉庫成為聯(lián)機分析處理 和數(shù)據(jù)挖掘的;S^。在技術(shù)上,ETL主要涉及到關(guān)聯(lián)、轉(zhuǎn)換、增量、調(diào)度和監(jiān) 控等幾個方面。通常,數(shù)據(jù)倉庫中的數(shù)據(jù)不要求與聯(lián)機事務(wù)處理系統(tǒng)中的數(shù)據(jù) 實時同步,因此,ETL可以定時進(jìn)行,^旦多個ETL的才喿作時間、順序和成敗 對數(shù)據(jù)倉庫中數(shù)據(jù)的有效性有著至關(guān)重要的影響,從而直接影響到聯(lián)機分析處 理結(jié)果和數(shù)據(jù)挖掘結(jié)果的質(zhì)量。
目前,構(gòu)建數(shù)據(jù)倉庫時所執(zhí)行的ETL大多使用基于Java程序語言的事 務(wù)管理系統(tǒng)(Java Business Process Management, JBPM)引擎實現(xiàn)程序代碼的 流程化控制,所謂JBPM引擎,是一種基于J2EE的輕量級工作流管理系統(tǒng), 它作為企業(yè)級的流程引擎,在外部還拓展了如身份組件、兼容性數(shù)據(jù)包、任務(wù) 管理等模塊。JBPM引擎在運行時,以令牌(即認(rèn)證權(quán)限,如用戶名、密碼等) 作為媒介在節(jié)點之間依次傳遞,令牌到達(dá)哪個節(jié)點,哪個節(jié)點所映射的程序就 開始執(zhí)行,程序執(zhí)行完成后再將令牌向下傳遞。令牌在傳遞過程中可以被克隆 成兩份分別傳送給兩個具有獨立任務(wù)程序的節(jié)點,這兩個節(jié)點即可并行執(zhí)行相應(yīng)的任務(wù)程序;如果有一節(jié)點執(zhí)行的任務(wù)程序依賴于上述兩個任務(wù)程序的執(zhí)行 結(jié)果,則該節(jié)點需要收集到用于分別表示上述兩個任務(wù)程序執(zhí)行完畢的兩個令 牌后,才能開始執(zhí)4于相應(yīng)的任務(wù)程序。
JBPM引擎并不是針對ETL的流程調(diào)度所設(shè)計的流程引擎,因此,使用 JBPM引擎對ETL進(jìn)行流程調(diào)度管理,會降低ETL的執(zhí)行效率,例如
現(xiàn)有的JBPM引擎是一個開放式的流程引擎,其不僅僅應(yīng)用于ETL領(lǐng)域,也 應(yīng)用于OA-辦公自動化、CRM-客戶關(guān)系管理等系統(tǒng),因此,JBPM引擎中嵌 套了許多與ETL的流程調(diào)度管理無關(guān)的功能,如swimlane-泳道、安全認(rèn)證管 理、消息服務(wù)等功能。并且JBPM引擎內(nèi)核采用令牌式依次傳遞方式,不能適 應(yīng)'任務(wù)回退,、'任務(wù)跳躍前進(jìn),等ETL流程調(diào)度中的實際應(yīng)用需求。
另一方面,JBPM引擎所采用的流程描述語言(JPDL)不能描述父子流程 間的依賴關(guān)系,只能靠程序員對JAVA程序中的節(jié)點類進(jìn)行擴展來實現(xiàn)相似的功 能,這樣,在任務(wù)程序執(zhí)行過程中便需要反復(fù)通過擴展類來創(chuàng)建子流程,從而 嚴(yán)重降低了父流程的執(zhí)行效率。同時在JBPM流程設(shè)計器中也不提供整體ETL 調(diào)度流程的可視化管理,從而增加了流程設(shè)計和后期維護(hù)的技術(shù)難度。
本申請實施例中,在執(zhí)行ETL調(diào)度包含的若干任務(wù)流程時,針對任意一個 任務(wù)流程,根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方 式、執(zhí)行順序和相互之間的依賴關(guān)系;按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子 任務(wù)流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少 一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí) 行依賴所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。這樣,便使 各任務(wù)流程內(nèi)的子任務(wù)流程之間的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,從而有效提 升了 ETL調(diào)度流程的執(zhí)行效率。
發(fā)明內(nèi)容
本申請實施例提供一種ETL的流程調(diào)度方法及裝置,用于提高ETL調(diào)度流程的執(zhí)行效率。
本申請實施例提供的具體技術(shù)方案如下
一種ETL調(diào)度的實現(xiàn)方法,ETL調(diào)度包含若干任務(wù)流程,每一任務(wù)流程 包含若干子任務(wù)流程,其中,針對一個任務(wù)流程,包括
根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí) 行順序和相互之間的依賴關(guān)系;
按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按照設(shè)定順序執(zhí)行 已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根 據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并 且已被觸發(fā)的其他子任務(wù)流程。
一種用于執(zhí)行ETL調(diào)度的裝置,包括
存儲單元,用于保存配置文件,該配置文件至少包含歸屬于ETL調(diào)度的 若干任務(wù)流程內(nèi)各子任務(wù)流程的觸發(fā)方式和相互之間的依賴關(guān)系;
確定單元,用于根據(jù)所述配置文件,確定某一任務(wù)流程內(nèi)包含的各子任務(wù) 流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;
處理單元,用于按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按 照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已 執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一 個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
本發(fā)明實施例中,提供了嵌套式ETL調(diào)度實現(xiàn)方法,即在執(zhí)行ETL調(diào)度 包含的若干任務(wù)流程時,針對任意一個任務(wù)流程,根據(jù)預(yù)設(shè)的配置文件確定任 務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系; 按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按照設(shè)定順序執(zhí)行已被 觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所 述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并且已 被觸發(fā)的其他子任務(wù)流程。這樣,便使各任務(wù)流程內(nèi)的子任務(wù)流程之間的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,從而有效提升了 ETL調(diào)度流程的執(zhí)行效率。本發(fā) 明同時公開了 一種用于執(zhí)行ETL調(diào)度的裝置。
圖1為本申請實施例中ETL調(diào)度所包含的任務(wù)流程示意圖2為本申請實施例中任務(wù)流程組成結(jié)構(gòu)示意圖3A為本申請實施例中ETL調(diào)度服務(wù)器功能結(jié)構(gòu)圖3B和圖3C為本申請實施例中ETL調(diào)度服務(wù)器內(nèi)處理單元功能結(jié)構(gòu)圖4為本申請實施例中任務(wù)流程1設(shè)置方式示意圖5為本申請實施例中ETL調(diào)度服務(wù)器執(zhí)行任務(wù)流程的第 一種方式流程
圖6為本申請實施例中ETL調(diào)度服務(wù)器執(zhí)行任務(wù)流程的第二種方式流程
圖7為本申請實施例中ETL調(diào)度服務(wù)器。
具體實施例方式
在構(gòu)建數(shù)據(jù)倉庫時,為了提高數(shù)據(jù)抽取、轉(zhuǎn)換和加載 (Extraction-Transformation-Loading, ETL)調(diào)度流程的執(zhí)行效率,本發(fā)明實施 例中,針對ETL調(diào)度包含的若干任務(wù)流程內(nèi)任意一個任務(wù)流程,執(zhí)行以下操 作根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí) 行順序和相互之間的依賴關(guān)系;按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流 程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子 任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴 所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
本申請實施例中,ETL調(diào)度模型中定義了任務(wù)流程、子任務(wù)流程和程序流 程的概念。參閱圖l所示,ETL調(diào)度工作是由若干任務(wù)流程組成,其中,各任務(wù)流程 按照設(shè)定的依賴關(guān)系運行,任務(wù)流程之間可以串行,也可以并行。
參閱圖2所示,任務(wù)流程是ETL調(diào)度的基本單元,由一個或多個子任務(wù) 流程(以下稱為任務(wù)塊)組成,任務(wù)塊用于描述一個業(yè)務(wù)的執(zhí)行目的, 一個獨 立的任務(wù)塊包含一個或多個程序流程(圖2中僅以一個任務(wù)塊包含一個程序流 程為例),多個任務(wù)塊以邏輯依賴關(guān)系組成的流程就是任務(wù)流程。例如,參閱 圖2所示,任務(wù)l、任務(wù)2、任務(wù)3和任務(wù)4這四個任務(wù)塊組成了任務(wù)流程1。
如圖2所示,程序流程由 一個或多個獨立的程序塊以邏輯依賴的形式組成, 每一個程序塊必須確保事務(wù)的原子性、獨立性、 一致性和持續(xù)性,即每一個程 度塊為一個原子級進(jìn)程。程序塊可以是shdl腳本、java程序、omcle存儲過程、 SQL塊等等; 一個任務(wù)塊內(nèi)的一個或多個程序流程是完成一個任務(wù)的具體實現(xiàn) 方法和步驟。例如,參閱圖l所示,程序ll、程序12、程序13和程序14這四個 程序塊組成一個程序流程以完成任務(wù)1 。
本實施例中,以一個任務(wù)塊內(nèi)包含一個程序流程為例進(jìn)行具體i兌明。
任務(wù)塊內(nèi)包含的程序流程中第一個程序塊的開始運行表示任務(wù)塊開始執(zhí) 行,而最后一個程序塊的結(jié)束運行則表示任務(wù)塊結(jié)束執(zhí)行。例如,如圖2所示, 程序11開始運行則表示任務(wù)1開始執(zhí)行,而程序14結(jié)束執(zhí)行則表示任務(wù)1結(jié) 束執(zhí)行。
本實施例中,各任務(wù)塊的執(zhí)行過程分為觸發(fā)和運行兩個階段,任務(wù)的觸發(fā) 包含時間觸發(fā)和事件觸發(fā)兩種,觸發(fā)階段只是生成任務(wù)實例,但當(dāng)前任務(wù)實例 必須等待其前置任務(wù)運行完成后才能運行。
下面以任務(wù)塊由時間觸發(fā)為例進(jìn)行說明。本實施例中,ETL調(diào)度流程中的 各任務(wù)塊可以按照-沒定的時間點自行觸發(fā),例如,每天上午8: 00、每周周一 中午12: 00、或者每月第一天的下午13: 00;也可以按照設(shè)定的循環(huán)周期自行 觸發(fā),例如,每隔24小時觸發(fā)一次,每隔一周觸發(fā)一次,或者每隔一個月觸發(fā) 一次等等。在同一任務(wù)流程中可以包含執(zhí)4亍間隔周期不同的兩個4壬務(wù),例如,如圖l
所示,任務(wù)1為任務(wù)2和任務(wù)3的前置任務(wù)且設(shè)定每月執(zhí)行一次,而任務(wù)2和任務(wù) 3則設(shè)定為每天執(zhí)行一次,那么,任務(wù)2和任務(wù)3在每次執(zhí)行之前都需要判斷任 務(wù)l在當(dāng)月是否已執(zhí)行完成,確定任務(wù)l已在當(dāng)月執(zhí)行完成后,再執(zhí)行后續(xù)的操 作。這樣設(shè)計的好處是減小了任務(wù)和任務(wù)流程的緊耦合, 一個任務(wù)既能表示任 務(wù)流程中的某一環(huán)節(jié)也可以獨立重復(fù)調(diào)用,而循環(huán)周期的定義可以令整個任務(wù) 流程跳過不需要重復(fù)執(zhí)行的任務(wù),提高執(zhí)行性能。
下面結(jié)合附圖對本申請優(yōu)選的實施方式進(jìn)行詳細(xì)說明。
參閱圖3A所示,本實施例,用于執(zhí)行ETL調(diào)度流程的ETL調(diào)度服務(wù)器包括 存儲單元300、確定單元301和處理單元302,其中,
存儲單元300,用于保存配置文件,該配置文件至少包含歸屬于ETL調(diào)度 的若千任務(wù)流程內(nèi)各子任務(wù)流程的觸發(fā)方式和相互之間的依賴關(guān)系;
確定單元301,用于根據(jù)所述配置文件,確定某一任務(wù)流程內(nèi)包含的各子 任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;
處理單元302,用于按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并 且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流 程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至 少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
在上述ETL調(diào)度服務(wù)器內(nèi),存儲單元300還用于保存任務(wù)流程包含的各 任務(wù)塊的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系,以及程序流程包含的各 程序塊的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;如圖3所示,本申請實 施例中,ETL調(diào)度服務(wù)器內(nèi)還包括一監(jiān)測單元303,用于對各任務(wù)流程、各子 任務(wù)流程、各程序流程和各程序塊的執(zhí)行情況進(jìn)行監(jiān)測,并將監(jiān)測結(jié)果以郵件 或短信方式通知有斥又用戶。
參閱圖3B所示,處理單元302進(jìn)一步包括第一處理子單元3020、第二處 理子單元3021和第三處理子單元3022,其中,第一處理子單元3020,用于在執(zhí)行某任務(wù)流程時,按照設(shè)定的觸發(fā)方式依 次觸發(fā)相應(yīng)的任務(wù)塊(即相應(yīng)的子任務(wù)流程),并且按照設(shè)定順序執(zhí)行已被觸 發(fā)的任務(wù)塊,其中,在確定至少一個任務(wù)塊已執(zhí)行完畢時,根據(jù)所述任務(wù)塊之 間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個任務(wù)塊并且已被觸發(fā)的其他任務(wù) 塊。
第二處理子單元3021,用于在執(zhí)行某任務(wù)塊(即某一子任務(wù)流程)時,按 照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的程序流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā) 的程序流程,其中,在確定至少一個程序流程已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程 序流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序流程并且已被觸發(fā)的 其他程序流程。
第三處理子單元3022,用于在執(zhí)行某程序流程時,按照設(shè)定的觸發(fā)方式依 次觸發(fā)相應(yīng)的程序塊,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序塊,其中,在確 定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系,開始 執(zhí)行依賴所述至少一個程序塊并且已被觸發(fā)的其他程序塊,所迷程序塊為原子 級進(jìn)程。
或者,
參閱圖3C所示,若某一任務(wù)流程由單一程序流程組成,即可以看作直接 由若干程序塊組成,則處理單元302可以通過內(nèi)部設(shè)置的處理子單元對上述任 務(wù)流程包含的若干程序塊進(jìn)行處理,該處理子單元用于在執(zhí)行某程序流程時,
行已被觸發(fā)的程序塊,其中,在確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè) 的各程序塊之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序塊并且已被觸發(fā) 的其他程序塊,所述程序塊為原子級進(jìn)程。
基于上述ETL調(diào)度服務(wù)器,本實施例中,以圖l所示的任務(wù)流程l為例進(jìn)行 說明。參閱圖2所示,在任務(wù)流程l中包括四個待執(zhí)行的任務(wù),分別為任務(wù)l、 任務(wù)2、任務(wù)3和任務(wù)4,其依賴關(guān)系為任務(wù)2和任務(wù)3的觸發(fā)均依賴于任務(wù)1的運行結(jié)果,任務(wù)2和任務(wù)3為并行關(guān)系,任務(wù)4的觸發(fā)依賴于任務(wù)2和任務(wù)3的運 行結(jié)果;如圖4所示,假設(shè)任務(wù)1設(shè)定在每天03: OO觸發(fā),任務(wù)2設(shè)定在每月13 號的4: OO觸發(fā),任務(wù)3設(shè)定在每天04: OO觸發(fā)、任務(wù)4設(shè)定在每天05: OO觸發(fā), 那么,參閱圖4和圖5所示,假設(shè)執(zhí)行日期為某月12日,則ETL調(diào)度服務(wù)器執(zhí)行 任務(wù)流程l的第一種方式的詳細(xì)流程如下
步驟500:在時間到達(dá)03: OO時,觸發(fā)任務(wù)l并開始運行,任務(wù)l的運行標(biāo) 志著任務(wù)流程l的啟動。
假設(shè)本申請涉及的內(nèi)容是關(guān)于一個網(wǎng)絡(luò)支付系統(tǒng),在實際應(yīng)用中,用戶在 使用網(wǎng)絡(luò)支付系統(tǒng)時可能會存在使用信用卡進(jìn)行違法套現(xiàn)的情形,本實施例可 以用于統(tǒng)計使用網(wǎng)絡(luò)支付系統(tǒng)的用戶行為,以便對用戶違法套現(xiàn)的行為加以識 別,其中,任務(wù)流程l所執(zhí)行的內(nèi)容可以有很多種,例如任務(wù)流程l為"套 現(xiàn)數(shù)據(jù)提取",而任務(wù)l為"統(tǒng)計前一個月卡信息,,,任務(wù)2為"統(tǒng)計簽約商戶 列表"、任務(wù)3為"統(tǒng)計白名單列表",任務(wù)4為"統(tǒng)計過濾后貨記卡用戶數(shù)" 等等,具體任務(wù)流程的內(nèi)容可以根據(jù)具體環(huán)境而設(shè)定,上述內(nèi)容僅為舉例。
步驟510:在時間到達(dá)04: OO時,確定當(dāng)天日期不是本月13號后,跳過任 務(wù)2不運行,同時,觸發(fā)任務(wù)3但并不運行,因為任務(wù)3是任務(wù)1的后置任務(wù),任 務(wù)l的運行結(jié)果尚未獲得,任務(wù)3觸發(fā)后不能夠馬上運行。
步驟520:在時間到達(dá)04: 35時,任務(wù)l運行完畢,獲得任務(wù)l的運行結(jié)果, 并開始運行任務(wù)3。
步驟530:在時間到達(dá)04: 50時,任務(wù)3運行完畢,獲得任務(wù)3的運行結(jié)果。 步驟540:在時間到達(dá)05: OO時,觸發(fā)任務(wù)4并開始運行。 本實施例中,由于任務(wù)3在任務(wù)4觸發(fā)之前便已運行完畢,因此任務(wù)4在觸 發(fā)后可以馬上運行,并且由于任務(wù)2在當(dāng)前流程中被跳過,所以任務(wù)4雖然為任 務(wù)2的后置任務(wù),但在當(dāng)前流程中可以忽略任務(wù)2的運行結(jié)果,僅根據(jù)任務(wù)3的 運行結(jié)果即可開始運行。另一方面,如何任務(wù)4觸發(fā)后,任務(wù)3尚未運行完畢,則任務(wù)4需要等到任 務(wù)3運行完畢,獲得任務(wù)3的運行結(jié)果后才能夠開始運行。
步驟550:在時間到達(dá)06: 15時,任務(wù)4運行完畢,這表示任務(wù)流程l已結(jié)束。
在上述步驟500-步驟550中,各任務(wù)是依靠設(shè)定的時間點觸發(fā)的,在實際 應(yīng)用中,還可以將各任務(wù)設(shè)置為依靠事件觸發(fā),例如在步驟500-550記載的 流程中,任意一任務(wù)流程發(fā)生異常時,ETL調(diào)度服務(wù)器內(nèi)設(shè)置的錯誤收集器會 自動調(diào)用綁定該異常情況,并調(diào)用處理該異常事件的任務(wù)。
另一種情況下,假設(shè)執(zhí)行日期為某月13號,那么,參閱圖6所示,ETL調(diào) 度服務(wù)器執(zhí)行任務(wù)流程1的第二種方式的詳細(xì)流程如下
步驟600:在時間到達(dá)03: OO時,觸發(fā)任務(wù)l并開始運行,任務(wù)l的運行標(biāo) 志著任務(wù)流程l的啟動。
步驟610:在時間到達(dá)04: OO時,確定當(dāng)天日期是本月13號后,觸發(fā)任務(wù)2 和任務(wù)3但不運行,同時,觸發(fā)任務(wù)3但并不運行,因為任務(wù)2和任務(wù)3是任務(wù)1 的后置任務(wù),任務(wù)l的運行結(jié)杲尚未獲得,任務(wù)1和任務(wù)3觸發(fā)后不能夠馬上運 行。
步驟620:在時間到達(dá)04: 35時,任務(wù)l運行完畢,獲得任務(wù)l的運行結(jié)果, 并開始運行任務(wù)2和任務(wù)3。
步驟630:在時間到達(dá)04: 50時,任務(wù)2和任務(wù)3運行完畢,獲得任務(wù)2和任 務(wù)3的運行結(jié)果。
本實施例中,為了便于說明,假設(shè)任務(wù)2和任務(wù)3在同一時間點運行完畢。 步驟640:在時間到達(dá)05: OO時,觸發(fā)任務(wù)4并開始運行。 本實施例中,由于任務(wù)2和任務(wù)3在任務(wù)4觸發(fā)之前已運行完畢,因此任務(wù)4 觸發(fā)后可直4妄運4亍。
步驟650:在時間到達(dá)06: 15時,任務(wù)4運行完畢,這表示任務(wù)流程l已結(jié)束。同理,在上述步驟600-步驟650中,各任務(wù)是依靠設(shè)定的時間點觸發(fā)的, 在實際應(yīng)用中,同樣可以將各任務(wù)設(shè)置為依靠事件觸發(fā),在此不再贅述。
在上述實施例中,每個任務(wù)塊內(nèi)包含的各程序流程也需要按照設(shè)定的依賴 關(guān)系逐個運行,如,在執(zhí)行某個包含若干程序流程的任務(wù)塊時,按照設(shè)定的觸 發(fā)方式依次觸發(fā)相應(yīng)的程序流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序流 程,其中,在確定至少一個程序流程已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序流程之 間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序流程并且已被觸發(fā)的其他程序 流程;而彼此間不存在依賴關(guān)系的程序流程可以并行觸發(fā),在此亦不再贅述。
進(jìn)一步地,在執(zhí)行某個包含若干程序塊的程序流程時,按照設(shè)定的觸發(fā)方 式依次觸發(fā)相應(yīng)的程序塊,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序塊,其中, 在確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系, 開始執(zhí)行依賴所述至少 一個程序塊并且已被觸發(fā)的其他程序塊,而彼此間不存 在依賴關(guān)系的程序塊可以并行觸發(fā),所述程序塊為原子級進(jìn)程,在此亦不再贅 述。下面仍以任務(wù)1為例進(jìn)行說明。如圖1所示,假設(shè)任務(wù)1內(nèi)包含有四個程 序塊,分別為程序11、程序12、程序13和程序14,其依賴關(guān)系為程序2 和程序3的觸發(fā)均依賴于程序1的運行結(jié)杲,程序2和程序3為并行關(guān)系,程 序4的觸發(fā)依賴于程序2和程序3的運行結(jié)果;那么,參閱圖1所示,在任務(wù) 1開始運行后,首先觸發(fā)程序1,程序1運行結(jié)束后,程序2和程序3若已#皮 觸發(fā),則根據(jù)程序1的運行結(jié)果同步啟動運行,而程序4在程序2和程序3運 行完畢后,若已被觸發(fā),則根據(jù)程序2和程序3的運行結(jié)果開始運行直至運行 完畢,程序4的結(jié)束運行也表示任務(wù)1的結(jié)束。
基于上述技術(shù)方案,本申請實施例中,通過ETL調(diào)度服務(wù)器對外提供用戶 接口 ,維護(hù)人員可以遠(yuǎn)程訪問ETL調(diào)度服務(wù)器,并通過ETL調(diào)度服務(wù)器提供的 基于WEB頁面的操作界面對ETL調(diào)度流程進(jìn)行定義和日志管理。參閱圖7所示, 圖7中記栽了ETL調(diào)度流程運行狀態(tài)日志管理,維護(hù)人員可以通過可視的操作 界面對運行的程序塊、任務(wù)塊或整個任務(wù)流程進(jìn)行重試、跳過、掛起等操作。也可以根據(jù)程序執(zhí);f亍的開始/結(jié)束/間隔時間判斷程序執(zhí)行性能,利用流程設(shè)計
器對程序流程進(jìn)行不斷優(yōu)化調(diào)整。進(jìn)一步地,可以在ETL調(diào)度服務(wù)器上配置消 息通知模式,在維護(hù)人員不在場的情況下,可以通過將程序塊、任務(wù)塊和整個 任務(wù)流程的運^f亍狀況通過短信、郵件等形式通知相關(guān)的維護(hù)人員。
綜上所述,本申請實施例采用嵌套式的ETL調(diào)度流程實現(xiàn)方法式,使各任 務(wù)流程內(nèi)的子任務(wù)流程之間、各任務(wù)塊之間、程序流程之間以及各程序塊之間 的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,從而有效提升了ETL調(diào)度流程的執(zhí)行效率; 并且,由于采用了基于Web頁面的操作界面對ETL調(diào)度內(nèi)各任務(wù)流程、各子任 務(wù)流,各程序流程和各程序塊進(jìn)行單獨的重做、掛起等操作,減小了各任務(wù)流 程、各子任務(wù)流,各程序流程和各程序塊之間的耦合性,從而降低了后期維護(hù) 管理工作的學(xué)習(xí)難度,節(jié)省了學(xué)習(xí)和維護(hù)成本。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請中的實施例進(jìn)行各種改動和變型而 不脫離本申請的精神和范圍。這樣,倘若本申請實施例中的這些修改和變型屬 于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請中的實施例也意圖包含 這些改動和變型在內(nèi)。
權(quán)利要求
1、一種ETL調(diào)度的實現(xiàn)方法,ETL調(diào)度包含若干任務(wù)流程,每一任務(wù)流程包含若干子任務(wù)流程,其特征在于,針對一個任務(wù)流程,包括根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
2、 如權(quán)利要求1所述的方法,其特征在于, 一個子任務(wù)流程包含至少一個程序流程。
3、 如權(quán)利要求2所述的方法,其特征在于,若一個子任務(wù)流程包含至少兩個程序流程,則在執(zhí)行該子任務(wù)流程時,按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的程序流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序流程,其中,在確定至少一個程序流程已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少 一個程序流程并且已被觸發(fā)的其他程序流程。
4、 如權(quán)利要求2或3所述的方法,其特征在于, 一個程序流程中包含至少一個程序塊,若一個程序流程中包含若干程序塊,則執(zhí)行一個程序流程時,按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的程序塊,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序塊,其中,在確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序塊并且已被觸發(fā)的其他程序塊,所述程序塊為原子級進(jìn)程。
5、 如權(quán)利要求4所述的方法,其特征在于,通過基于Web頁面的操作界面對各任務(wù)流程、各子任務(wù)流程、各程序流程和各程序塊進(jìn)行管理操作。
6、 如權(quán)利要求4所述的方法,其特征在于,對各任務(wù)流程、各子任務(wù)流程、各程序流程和各程序塊的執(zhí)行情況進(jìn)行監(jiān)測,并將監(jiān)測結(jié)果以郵件或短信 方式通知有權(quán)用戶。
7、 一種用于執(zhí)行ETL調(diào)度的裝置,其特征在于,包括存儲單元,用于保存配置文件,該配置文件至少包含歸屬于ETL調(diào)度的 若干任務(wù)流程內(nèi)各子任務(wù)流程的觸發(fā)方式和相互之間的依賴關(guān)系;確定單元,用于根據(jù)所述配置文件,確定某一任務(wù)流程內(nèi)包含的各子任務(wù) 流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;處理單元,用于按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按 照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已 執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一 個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
8、 如權(quán)利要求7所述的裝置,其特征在于,所述存儲單元還用于保存各 子任務(wù)流程包含的各程序流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系、 以及所述存儲單元進(jìn)一步用于保存各程序流程包含的各程序塊的觸發(fā)方式、執(zhí) 行順序和相互之間的依賴關(guān)系,所述程序塊為原子級進(jìn)程。
9、 如權(quán)利要求8所述的裝置,其特征在于,所述處理單元進(jìn)一步包括 第一處理子單元,用于在執(zhí)行某任務(wù)流程時,按照存儲單元中所保存的觸發(fā)方式及順序依次觸發(fā)相應(yīng)的子任務(wù)流程,并且執(zhí)行已被觸發(fā)的子任務(wù)流程, 其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的 依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù) 流程;第二處理子單元,用于在執(zhí)行某一子任務(wù)流程時,^接照存儲單元中所保存 的觸發(fā)方式及順序依次觸發(fā)相應(yīng)的程序流程,并且執(zhí)行已被觸發(fā)的程序流程, 其中,在確定至少一個程序流程已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序流程之間的 依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序流程并且已被觸發(fā)的其他程序流 程;第三處理子單元,用于在執(zhí)行某程序流程時,按照存儲單元中所保存的觸 發(fā)方式及順序依次觸發(fā)相應(yīng)的程序塊,并且執(zhí)行已被觸發(fā)的程序塊,其中,在 確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系,開 始執(zhí)行依賴所述至少 一個程序塊并且已被觸發(fā)的其他程序塊。
10、 如權(quán)利要求8所述的裝置,其特征在于,所述處理單元進(jìn)一步包括處 理子單元,該處理子單元用于在執(zhí)行某程序流程時,按照存儲單元中所保存的 觸發(fā)方式及順序依次觸發(fā)相應(yīng)的程序塊,并且執(zhí)行已被觸發(fā)的程序塊,其中, 在確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系, 開始執(zhí)行依賴所述至少 一個程序塊并且已被觸發(fā)的其他程序塊。
11、 如權(quán)利要求7-IO所述的裝置,其特征在于,所述裝置還包括 用戶接口單元,用于向用戶提供基于Web頁面的操作界面,并通過該操作界面接收用戶對各任務(wù)流程、各子任務(wù)流程、各程序流程和各程序塊的管理操 作。
12、 如權(quán)利要求IO所述的裝置,其特征在于,所述裝置進(jìn)一步包括 監(jiān)測單元,用于對各任務(wù)流程、各子任務(wù)流程、各程序流程和各程序塊的執(zhí)行情況進(jìn)行監(jiān)測,并將監(jiān)測結(jié)果以郵件或短信方式通知有權(quán)用戶。
全文摘要
本申請公開了一種ETL調(diào)度的實現(xiàn)方法,該方法為在執(zhí)行ETL調(diào)度包含的若干任務(wù)流程時,針對任意一個任務(wù)流程,根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。這樣,便使各任務(wù)流程內(nèi)的子任務(wù)流程之間的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,從而有效提升了ETL調(diào)度流程的執(zhí)行效率。本發(fā)明同時公開了一種用于執(zhí)行ETL調(diào)度的裝置。
文檔編號G06F17/30GK101567013SQ20091020327
公開日2009年10月28日 申請日期2009年6月2日 優(yōu)先權(quán)日2009年6月2日
發(fā)明者杰 蔣, 蔣萃林, 陳榮松 申請人:阿里巴巴集團控股有限公司