欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種事務(wù)控制方法及裝置的制作方法

文檔序號(hào):6597896閱讀:178來源:國(guó)知局
專利名稱:一種事務(wù)控制方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)通信技術(shù)領(lǐng)域,特別涉及一種事務(wù)控制方法及裝置。
背景技術(shù)
隨著計(jì)算機(jī)通信技術(shù)的發(fā)展,金融、電信、交通等許多行業(yè)都開始通過計(jì)算機(jī)通信 技術(shù)對(duì)行業(yè)各自的業(yè)務(wù)進(jìn)行控制和處理。比如中間件技術(shù)的出現(xiàn)就很好的解決了客戶端與 服務(wù)器之間應(yīng)用程序調(diào)用的麻煩,使得應(yīng)用程序的開發(fā)變得簡(jiǎn)單。目前應(yīng)用廣泛的中間件 產(chǎn)品為 BEA 公司的 Tuxedo (Transaction for UNIX has been Extended for Distributed Operation,即被分布式操作擴(kuò)展之后的UNIX事務(wù)系統(tǒng)),它是一種在企業(yè)和網(wǎng)絡(luò)這樣的分 布式運(yùn)算環(huán)境中開發(fā)和管理三層結(jié)構(gòu)的客戶/服務(wù)器型關(guān)鍵任務(wù)應(yīng)用系統(tǒng)的強(qiáng)有力工具。 它具備分布式事務(wù)處理和應(yīng)用通信功能,并提供完善的各種服務(wù)來建立、運(yùn)行和管理關(guān)鍵 任務(wù)應(yīng)用系統(tǒng)。開發(fā)人員能夠用它建立跨多個(gè)硬件平臺(tái)、數(shù)據(jù)庫(kù)和操作系統(tǒng)的可互操作的 應(yīng)用系統(tǒng),滿足在分布式異構(gòu)計(jì)算環(huán)境下運(yùn)行大量應(yīng)用的需求,從而使事務(wù)在全球范圍內(nèi) 跨任何系統(tǒng),從面向客戶的關(guān)鍵任務(wù)應(yīng)用延伸到后臺(tái)處理。然而,現(xiàn)有技術(shù)中的中間件平臺(tái)(比如Tuxedo)連接的設(shè)備較多,構(gòu)成的系統(tǒng)很龐 雜,需要處理數(shù)以萬計(jì)的各種事務(wù),而在處理事務(wù)的過程中存在數(shù)次提交處理結(jié)果的問題, 造成沖突,使得現(xiàn)有處理事務(wù)的機(jī)制無法保證事務(wù)操作的原子性與一致性,所以如何進(jìn)一 步提高事務(wù)處理的原子性與一致性已成為本領(lǐng)域技術(shù)人員長(zhǎng)期以來迫切希望解決的技術(shù) 問題。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種事務(wù)控制方法及裝置,通過本發(fā)明實(shí)施例所提 供的方法及裝置,可以保證處理的事務(wù)要么都提交,要么都回滾,有效的保證了事務(wù)處理的 原子性與一致性。為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供一種事務(wù)控制方法,所述方法包括在多服務(wù)調(diào)用過程中,當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),檢測(cè)是否已有其它 服務(wù)啟動(dòng)事務(wù);若沒有其它服務(wù)啟動(dòng)事務(wù),則當(dāng)前服務(wù)啟動(dòng)事務(wù),并進(jìn)行當(dāng)前服務(wù)處理;在當(dāng)前服務(wù)處理完畢后,提交啟動(dòng)的事務(wù),并退出當(dāng)前服務(wù)。為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供一種事務(wù)控制裝置,所述裝置包括檢測(cè)單元,用于在多服務(wù)調(diào)用過程中,當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),檢測(cè) 是否已有其它服務(wù)啟動(dòng)事務(wù),若檢測(cè)出沒有其它服務(wù)啟動(dòng)事務(wù),則將檢測(cè)出的沒有其它服 務(wù)啟動(dòng)事務(wù)的結(jié)果發(fā)送至啟動(dòng)單元;啟動(dòng)單元,用于根據(jù)所述檢測(cè)單元發(fā)送的結(jié)果來啟動(dòng)所述事務(wù);服務(wù)處理單元,用于在所述啟動(dòng)單元啟動(dòng)所述事務(wù)后,對(duì)當(dāng)前服務(wù)進(jìn)行處理;提交單元,用于在所述服務(wù)處理單元對(duì)當(dāng)前服務(wù)處理完畢后,提交被啟動(dòng)的事務(wù);服務(wù)退出單元,用于在所述提交單元提交被啟動(dòng)的事務(wù)之后,退出當(dāng)前服務(wù)。由于本發(fā)明實(shí)施例在整個(gè)多服務(wù)調(diào)用過程中,最多只啟動(dòng)一次事務(wù),而且由啟動(dòng) 事務(wù)的服務(wù)進(jìn)行事務(wù)提交,使得所有服務(wù)所進(jìn)行的操作要么都提交,要么都回滾,保證了事 務(wù)的原子性與一致性。


為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用 的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本 領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。圖1為本發(fā)明實(shí)施例提供的事務(wù)控制方法的示意流程圖。圖2為本發(fā)明另一實(shí)施例提供的事務(wù)控制方法的示意流程圖。圖3為本發(fā)明實(shí)施例在繳費(fèi)業(yè)務(wù)中進(jìn)行事務(wù)控制的方法流程示意圖。圖4為本發(fā)明實(shí)施例提供的一種事務(wù)控制裝置的功能結(jié)構(gòu)框圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。本發(fā)明的 示意性實(shí)施例及其說明用于解釋本發(fā)明,但并不作為對(duì)本發(fā)明的限定,基于本發(fā)明中的實(shí) 施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬 于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供一種處理事務(wù)的技術(shù),可以應(yīng)用于分布式數(shù)據(jù)庫(kù)場(chǎng)景中。這種 技術(shù)可以在多服務(wù)調(diào)用過程中將所調(diào)用服務(wù)的結(jié)果一并提交,從而有效解決了各服務(wù)提交 沖突的問題,保證了處理事務(wù)的原子性與一致性。其中這種多服務(wù)的調(diào)用可以是嵌套服務(wù) 調(diào)用場(chǎng)景,當(dāng)然也可以是其他的服務(wù)調(diào)用場(chǎng)景。所謂嵌套服務(wù)調(diào)用即是指在對(duì)當(dāng)前服務(wù)處 理時(shí),通過調(diào)用其它服務(wù)協(xié)同來完成對(duì)當(dāng)前服務(wù)進(jìn)行處理的一種服務(wù)處理方式。比如在對(duì) 服務(wù)A處理的進(jìn)程中,若還需要通過其它服務(wù)B的協(xié)助完成對(duì)服務(wù)A的處理,則調(diào)用相應(yīng)的 服務(wù)B,服務(wù)B處理完成后返回服務(wù)A,使當(dāng)前服務(wù)的處理得以繼續(xù)進(jìn)行,直至處理結(jié)束。在 嵌套服務(wù)調(diào)用的過程中也可能存在多重嵌套,如,被調(diào)用的服務(wù)B如果還需要通過服務(wù)C來 協(xié)助完成,則服務(wù)B進(jìn)一步調(diào)用服務(wù)C,服務(wù)C處理完成后返回服務(wù)B,服務(wù)B進(jìn)行繼續(xù)處理, 處理完成后返回服務(wù)A。上述調(diào)用過程中,服務(wù)A的生命周期涵蓋服務(wù)B,服務(wù)B的生命周期涵蓋服務(wù)C。由 于各服務(wù)生命周期不同,在目前的多服務(wù)調(diào)用過程中,存在事務(wù)控制丟失或事務(wù)分段等問 題,導(dǎo)致整個(gè)事務(wù)的原子性得不到保證?;诖?,本實(shí)施例提供一種處理事務(wù)的方法,如圖1所示,圖1為本實(shí)施例的處理 事務(wù)的方法的示意流程圖,該流程包括如下步驟101.在多服務(wù)調(diào)用過程中,當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),檢測(cè)是否已有 其它服務(wù)啟動(dòng)事務(wù)。對(duì)于多服務(wù)調(diào)用的場(chǎng)景,由于有的服務(wù)本身不需要啟動(dòng)事務(wù),比如查詢
5服務(wù),所以需要對(duì)被調(diào)用的服務(wù)的這一屬性進(jìn)行判斷,確定其是否需要啟動(dòng)事務(wù),具體確定 過程為本領(lǐng)域的公知技術(shù),這里不再贅述。若當(dāng)前調(diào)用的服務(wù)需要啟動(dòng)事務(wù),則檢測(cè)是否已有其它服務(wù)啟動(dòng)事務(wù),本發(fā)明實(shí) 施例中可以通過各服務(wù)共享的全局事務(wù)的狀態(tài)來檢測(cè)是否已有其它服務(wù)啟動(dòng)事務(wù)。具體 的,可為各服務(wù)設(shè)置事務(wù)共享區(qū),全局事務(wù)狀態(tài)記錄在該事務(wù)共享區(qū)中。其中,全局事務(wù)狀 態(tài)的默認(rèn)狀態(tài)為未啟動(dòng)狀態(tài),當(dāng)有服務(wù)啟動(dòng)事務(wù)時(shí),則將該全局事務(wù)的狀態(tài)更新為啟動(dòng)狀 態(tài)。因此,通過檢測(cè)全局事務(wù)的狀態(tài)是否為已啟動(dòng)狀態(tài)可以確定是否有其它服務(wù)已啟動(dòng)事 務(wù)。102.若沒有其它服務(wù)啟動(dòng)事務(wù),則當(dāng)前服務(wù)啟動(dòng)事務(wù),并進(jìn)行當(dāng)前服務(wù)處理。如果全局事務(wù)的狀態(tài)為默認(rèn)的未啟動(dòng)狀態(tài),則表明還沒有其它服務(wù)啟動(dòng)事務(wù),當(dāng) 前服務(wù)進(jìn)行啟動(dòng)事務(wù),并將全局事務(wù)的狀態(tài)從默認(rèn)的未啟動(dòng)狀態(tài)更新為已啟動(dòng)狀態(tài),以便 于其他服務(wù)進(jìn)行檢測(cè)。103.在當(dāng)前服務(wù)處理完畢后,提交啟動(dòng)的事務(wù),并退出當(dāng)前服務(wù)。由于存在多服務(wù)嵌套調(diào)用的情況,如,在當(dāng)前服務(wù)的處理過程中,當(dāng)前服務(wù)還要調(diào) 用另一嵌套服務(wù)進(jìn)行處理。此時(shí),在退出嵌套服務(wù)時(shí),嵌套服務(wù)并不進(jìn)行事務(wù)提交,而是由 啟動(dòng)該事務(wù)的當(dāng)前服務(wù)在退出服務(wù)時(shí)進(jìn)行提交。 本發(fā)明實(shí)施例通過設(shè)置各服務(wù)自身的事務(wù)狀態(tài)來確定該服務(wù)是否啟動(dòng)了事務(wù)。具 體的,可以將各服務(wù)自身的事務(wù)狀態(tài)記錄在事務(wù)共享區(qū),各服務(wù)自身的事務(wù)狀態(tài)的默認(rèn)狀 態(tài)為未啟動(dòng)狀態(tài),當(dāng)有服務(wù)啟動(dòng)事務(wù)時(shí),將該服務(wù)自身的事務(wù)狀態(tài)更新為啟動(dòng)狀態(tài)。因此, 在步驟102中,當(dāng)前服務(wù)啟動(dòng)事務(wù)后,則將自身的事務(wù)狀態(tài)更新為已啟動(dòng)狀態(tài);而在步驟 103中,當(dāng)前服務(wù)處理完畢后,則檢測(cè)當(dāng)前服務(wù)自身的事務(wù)狀態(tài),根據(jù)更新后的已啟動(dòng)狀態(tài), 觸發(fā)提交事務(wù)的操作。本發(fā)明實(shí)施例通過檢測(cè)事務(wù)的啟動(dòng)情況,確保整個(gè)多服務(wù)調(diào)用過程中,最多只啟 動(dòng)一次事務(wù),并基于誰啟動(dòng)誰提交的原則,在處理完該服務(wù)后,由啟動(dòng)事務(wù)的服務(wù)提交啟動(dòng) 的事務(wù),使得所有服務(wù)的處理結(jié)果要么都提交,要么都回滾,保證了事務(wù)處理的原子性與一 致性。如圖2所示,圖2為本發(fā)明實(shí)施例的事務(wù)控制方法的詳細(xì)示意流程圖,該流程包括 如下步驟201.應(yīng)用系統(tǒng)根據(jù)處理的業(yè)務(wù)調(diào)用相應(yīng)的服務(wù),該被調(diào)用的服務(wù)被啟動(dòng);其中,應(yīng)用系統(tǒng)可以是基于TUXEDO的跨多個(gè)硬件平臺(tái)、數(shù)據(jù)庫(kù)和操作系統(tǒng)的可互 操作的應(yīng)用系統(tǒng),如,電信行業(yè)的BOSS系統(tǒng)。應(yīng)用系統(tǒng)處理的業(yè)務(wù)根據(jù)應(yīng)用系統(tǒng)的不同而 有所不同,如BOSS系統(tǒng)處理的業(yè)務(wù)為繳費(fèi)業(yè)務(wù)、客戶資料修改業(yè)務(wù)等。根據(jù)不同的業(yè)務(wù),應(yīng) 用系統(tǒng)調(diào)用的服務(wù)也不相同。202.檢測(cè)當(dāng)前被調(diào)用的服務(wù)的屬性,判斷是否需要啟動(dòng)事務(wù),若被調(diào)用的當(dāng)前服 務(wù)需要啟動(dòng)事務(wù),則轉(zhuǎn)入步驟203 ;反之,則轉(zhuǎn)入步驟205。通常情況下,如果被調(diào)用的服務(wù)需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改操作,則該服務(wù)需要啟動(dòng) 事務(wù)。203.當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),從事務(wù)共享區(qū)中讀取全局事務(wù)的狀 態(tài),若全局事務(wù)的狀態(tài)為未啟動(dòng)狀態(tài),則轉(zhuǎn)入步驟204 ;若全局事務(wù)的狀態(tài)為啟動(dòng)狀態(tài),轉(zhuǎn)入步驟205。其中,事務(wù)共享區(qū)用于存放全局事務(wù)的狀態(tài)和每個(gè)服務(wù)的事務(wù)狀態(tài)。全局事務(wù)的 狀態(tài)用于標(biāo)記整個(gè)調(diào)用過程中的事務(wù)啟動(dòng)情況,全局事務(wù)的默認(rèn)狀態(tài)為未啟動(dòng)狀態(tài),當(dāng)有 服務(wù)啟動(dòng)事務(wù)時(shí),全局事務(wù)的狀態(tài)被更新為啟動(dòng)狀態(tài)。當(dāng)全局事務(wù)狀態(tài)為已啟動(dòng)狀態(tài)時(shí),所 有服務(wù)不能再啟動(dòng)服務(wù),以保證整個(gè)調(diào)用過程中最多只啟動(dòng)一次事務(wù);當(dāng)全局事務(wù)的狀態(tài) 為未啟動(dòng)狀態(tài)時(shí),整個(gè)調(diào)用過程中的任何一個(gè)服務(wù),根據(jù)其需要都可以啟動(dòng)事務(wù),當(dāng)該服務(wù) 啟動(dòng)事務(wù)后,將全局事務(wù)狀態(tài)設(shè)置為已啟動(dòng)狀態(tài),以便其它服務(wù)檢測(cè)和使用當(dāng)前全局事務(wù) 狀態(tài)。各服務(wù)的事務(wù)狀態(tài)用于標(biāo)記各服務(wù)自身的事務(wù)啟動(dòng)情況,其默認(rèn)為未啟動(dòng)狀態(tài),當(dāng)其 對(duì)應(yīng)的服務(wù)啟動(dòng)事務(wù)時(shí),被更新為已啟動(dòng)狀態(tài)。204.啟動(dòng)事務(wù),并更新事務(wù)共享區(qū)中的全局事務(wù)狀態(tài)以及當(dāng)前服務(wù)的事務(wù)狀態(tài)。205.對(duì)當(dāng)前服務(wù)進(jìn)行處理。當(dāng)被調(diào)用的當(dāng)前服務(wù)不需要啟動(dòng)事務(wù)或檢測(cè)出全局事務(wù)的狀態(tài)為已啟動(dòng)狀態(tài)時(shí), 則直接轉(zhuǎn)入本步驟對(duì)當(dāng)前服務(wù)進(jìn)行處理。若當(dāng)前服務(wù)需要啟動(dòng)事務(wù)且檢測(cè)出全局事務(wù)的狀 態(tài)為已啟動(dòng)狀態(tài)時(shí),則在步驟204之后轉(zhuǎn)入本步驟。需要說明的是對(duì)服務(wù)本身進(jìn)行處理為 本領(lǐng)域的公知技術(shù),這里不再贅述。206.在當(dāng)前服務(wù)處理完畢后,從事務(wù)共享區(qū)中讀取當(dāng)前服務(wù)的事務(wù)狀態(tài),若當(dāng)前 服務(wù)的事務(wù)狀態(tài)為啟動(dòng)狀態(tài),則轉(zhuǎn)入步驟207 ;若當(dāng)前服務(wù)的事務(wù)狀態(tài)為未啟動(dòng)狀態(tài),則轉(zhuǎn) 入步驟208。當(dāng)步驟206中對(duì)當(dāng)前服務(wù)處理完畢后,需要檢測(cè)當(dāng)前服務(wù)自身的事務(wù)狀態(tài),以確 定當(dāng)前服務(wù)是否啟動(dòng)了事務(wù),從而確定是否提交事務(wù)。由于步驟204中當(dāng)前服務(wù)在啟動(dòng)事 務(wù)時(shí),已將自身的事務(wù)狀態(tài)更新為已啟動(dòng)狀態(tài),因此,基于誰啟動(dòng)誰提交的原則,當(dāng)前服務(wù) 根據(jù)檢測(cè)結(jié)果,觸發(fā)提交事務(wù)的操作。207.提交啟動(dòng)的事務(wù)。若在處理當(dāng)前服務(wù)時(shí),還調(diào)用了其它嵌套服務(wù),則在提交事務(wù)時(shí),將當(dāng)前服務(wù)的處 理結(jié)果以及當(dāng)前服務(wù)調(diào)用的嵌套服務(wù)的操作結(jié)果一并提交。208.退出當(dāng)前服務(wù)。可選的,在退出當(dāng)前服務(wù)時(shí),還可以進(jìn)一步將該當(dāng)前服務(wù)自身的事務(wù)狀態(tài)從已啟 動(dòng)狀態(tài)更新為未啟動(dòng)狀態(tài),將全局事務(wù)的狀態(tài)也從已啟動(dòng)狀態(tài)更新為未啟動(dòng)狀態(tài)。上述步驟205中,在對(duì)當(dāng)前服務(wù)處理的過程中,若當(dāng)前服務(wù)還要調(diào)用另一嵌套 服務(wù)進(jìn)行處理,則進(jìn)入對(duì)嵌套服務(wù)的處理,其中對(duì)嵌套服務(wù)的處理過程可參考上述步驟 201-208,當(dāng)退出嵌套服務(wù)時(shí)繼續(xù)轉(zhuǎn)入步驟205對(duì)當(dāng)前服務(wù)進(jìn)行處理。為了使本領(lǐng)域技術(shù)人員更好的理解本實(shí)施例所述的方法,下面列舉一示例進(jìn)行輔 助說明,需要聲明的是,該示例僅僅是為了便于本領(lǐng)域技術(shù)人員理解本實(shí)施例,所以不能將 本示例中的具體步驟理解為本方法僅有的實(shí)施方式,即不能將將本示例中的具體步驟理解 為限制本發(fā)明的因素。如圖3所示,圖3為一種繳費(fèi)事務(wù)中服務(wù)的調(diào)用關(guān)系示意圖,由圖3可知,A服務(wù) 可以調(diào)用B服務(wù),B服務(wù)可以調(diào)用C服務(wù),所以B服務(wù)可以看成是A服務(wù)的嵌套服務(wù),C服務(wù) 可以看成是服務(wù)B的嵌套服務(wù),其中A服務(wù)為查詢欠費(fèi)賬單,本身無需啟動(dòng)事務(wù);B服務(wù)為 銷賬,本身需啟動(dòng)事務(wù);C服務(wù)為銷賬日志,本身需啟動(dòng)事務(wù)。預(yù)先設(shè)置的A服務(wù)自身的事務(wù)狀態(tài)用A-status表示,同樣B服務(wù)自身的事務(wù)狀態(tài)用B-status表示,C服務(wù)自身的事務(wù) 狀態(tài)用C-status表示,繳費(fèi)事務(wù)的全局事務(wù)狀態(tài)用G-status表示,其中A、B、C各服務(wù)自身 的事務(wù)狀態(tài)都默認(rèn)為未啟動(dòng)狀態(tài)。當(dāng)G-status = T時(shí),表示全局事務(wù)狀態(tài)為已啟動(dòng)狀態(tài), 當(dāng)G-status = F時(shí),表示全局事務(wù)狀態(tài)為未啟動(dòng)狀態(tài),其中,繳費(fèi)事務(wù)的全局事務(wù)狀態(tài)默認(rèn) 為G-status = F。這些服務(wù)的事務(wù)狀態(tài)以及全局事務(wù)狀態(tài)可以記錄在事務(wù)共享區(qū)中,該事 務(wù)共享區(qū)是一個(gè)共享的存儲(chǔ)區(qū),該存儲(chǔ)區(qū)可以是可擦寫的存儲(chǔ)器。全局事務(wù)狀態(tài)初始G-status = F,表示全局事務(wù)未啟動(dòng)。當(dāng)用戶操作A服務(wù)時(shí),由 于A服務(wù)是一種查詢服務(wù),所以A服務(wù)不需啟動(dòng)事務(wù),所以在操作完A服務(wù)后,A服務(wù)自身 的事務(wù)狀態(tài)仍為A-status = F。根據(jù)A服務(wù)的查詢結(jié)果調(diào)用B服務(wù),由于B服務(wù)的服務(wù)屬 性需要啟動(dòng)事務(wù),所以檢測(cè)繳費(fèi)事務(wù)的全局事務(wù)狀態(tài)為G-status = F,說明還沒有其它服 務(wù)啟動(dòng)事務(wù),滿足啟動(dòng)事務(wù)的條件,由服務(wù)B啟動(dòng)事務(wù),并將G-status = F更新為G-status =T,更新B-status = F為B-status = T。在B服務(wù)進(jìn)行銷賬處理時(shí)還需調(diào)用C服務(wù)來進(jìn) 一步完成相應(yīng)的處理內(nèi)容,由于C服務(wù)的服務(wù)屬性也需要啟動(dòng)事務(wù),所以檢測(cè)繳費(fèi)事務(wù)的 全局事務(wù)狀態(tài)為G-status = T,表示已有其它服務(wù)啟動(dòng)事務(wù),無需再次啟動(dòng)事務(wù),不更新C 服務(wù)狀態(tài),即C-status = F0 C服務(wù)的處理完成后,檢查C服務(wù)自身的事務(wù)狀態(tài)為C-status =F,所以不提交C服務(wù)的處理結(jié)果(即調(diào)用C服務(wù)的結(jié)果),C服務(wù)退出后返回B服務(wù),B 服務(wù)根據(jù)C服務(wù)的操作結(jié)果完成自身服務(wù)處理,檢查B服務(wù)自身的事務(wù)狀態(tài)為B-status = T,說明本次事務(wù)是由B服務(wù)啟動(dòng)的,可以由B服務(wù)提交所有服務(wù)的處理結(jié)果。B服務(wù)將自 身的處理結(jié)果以及C服務(wù)的操作結(jié)果一并提交,并將G-status = T修改為G-status = F, B-status = T修改為B-status = F。從B服務(wù)退出后,在A服務(wù)中可以查詢對(duì)繳費(fèi)事務(wù)處 理后的結(jié)果。需要對(duì)上述示例說明的是服務(wù)之間的調(diào)用時(shí)通過下發(fā)交易碼來實(shí)現(xiàn)的,該交易碼 為相應(yīng)的命令字,不同的交易碼對(duì)應(yīng)的命令字不同,接收到交易碼的服務(wù)即被激活,從而可 以執(zhí)行相應(yīng)服務(wù)的操作。通過本實(shí)施例可以清楚看出A服務(wù)的生命周期是從Al開始到A2結(jié)束;B服務(wù)的生 命周期是從Bl開始到B2結(jié)束;C服務(wù)的周期是從Cl開始到C2結(jié)束。在B服務(wù)和C服務(wù)都 需要啟動(dòng)事務(wù)的情況下,本發(fā)明實(shí)施例的方案中只允許了 B服務(wù)啟動(dòng)事務(wù),并由B服務(wù)對(duì)啟 動(dòng)的事務(wù)進(jìn)行提交,避免了現(xiàn)有技術(shù)由于無多服務(wù)調(diào)用的事務(wù)控制機(jī)制,而導(dǎo)致由B服務(wù) 啟動(dòng)事務(wù),C服務(wù)提交事務(wù)的情況出現(xiàn),造成的C2B2期間事務(wù)控制丟失的問題,以及出現(xiàn)B 服務(wù)、C服務(wù)分別啟動(dòng)事務(wù),并分別進(jìn)行事務(wù)提交的情況,導(dǎo)致在C2B2期間出錯(cuò)時(shí),C1C2期 間的操作無法回滾的問題。上述方法實(shí)施例可以在跨平臺(tái)、多服務(wù)、交易復(fù)雜、系統(tǒng)龐大、接口眾多的應(yīng)用系 統(tǒng)中實(shí)現(xiàn),如,電信行業(yè)中的BOSS系統(tǒng)。該系統(tǒng)可以基于XA接口框架的TUXEDO中間件平 臺(tái)三層開發(fā)和應(yīng)用結(jié)構(gòu)。實(shí)現(xiàn)上述方法實(shí)施例的裝置可以是該系統(tǒng)中的一個(gè)獨(dú)立設(shè)備,也 可以集成到該系統(tǒng)現(xiàn)有的設(shè)備上,下面對(duì)該系統(tǒng)中實(shí)現(xiàn)上述功能的裝置進(jìn)行說明。如圖4所示,圖4為本發(fā)明實(shí)施例的事務(wù)控制裝置的功能結(jié)構(gòu)框圖,該裝置可以包 括檢測(cè)單元401、啟動(dòng)單元402、服務(wù)處理單元403、提交單元404、服務(wù)退出單元405。其 中檢測(cè)單元401,用于在多服務(wù)調(diào)用過程中,當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),
8檢測(cè)是否已有其它服務(wù)啟動(dòng)事務(wù),若檢測(cè)出沒有其它服務(wù)啟動(dòng)事務(wù),則將檢測(cè)出的沒有其 它服務(wù)啟動(dòng)事務(wù)的結(jié)果發(fā)送至啟動(dòng)單元402。其中,檢測(cè)單元401可以具體用于根據(jù)各服務(wù) 共享的全局事務(wù)狀態(tài)檢測(cè)是否已有其它服務(wù)啟動(dòng)事務(wù)。該功能的具體實(shí)現(xiàn)可參考方法實(shí)施 例部分,這里不再贅述。啟動(dòng)單元402,用于根據(jù)檢測(cè)單元401發(fā)出的結(jié)果來啟動(dòng)事務(wù)。當(dāng)沒有其它服務(wù)啟 動(dòng)事務(wù)時(shí),啟動(dòng)單元402進(jìn)行事務(wù)啟動(dòng);反之,啟動(dòng)單元402不進(jìn)行事務(wù)啟動(dòng)。服務(wù)處理單元403,用于在啟動(dòng)單元402啟動(dòng)事務(wù)后,對(duì)當(dāng)前服務(wù)進(jìn)行處理。提交單元404,用于在服務(wù)處理單元403對(duì)當(dāng)前服務(wù)處理完畢后,提交被啟動(dòng)的事 務(wù)。服務(wù)退出單元405,用于在提交單元404提交被啟動(dòng)的事務(wù)之后,退出當(dāng)前服務(wù)。上述各單元的具體實(shí)現(xiàn)可參考方法實(shí)施例部分,這里不再贅述。可選的,檢測(cè)單元401若檢測(cè)出已有其它服務(wù)啟動(dòng)事務(wù),則將檢測(cè)出的已有其它 服務(wù)啟動(dòng)事務(wù)的結(jié)果發(fā)送至所述服務(wù)處理單元403 ;服務(wù)處理單元403則直接根據(jù)檢測(cè)單 元401發(fā)送的結(jié)果對(duì)當(dāng)前服務(wù)進(jìn)行處理。在服務(wù)處理單元403對(duì)當(dāng)前服務(wù)處理完畢后,如果當(dāng)前服務(wù)沒有啟動(dòng)事務(wù),則服 務(wù)退出單元405直接退出服務(wù)。具體的,在服務(wù)處理單元403對(duì)當(dāng)前服務(wù)處理完畢后,可由檢測(cè)單元401進(jìn)一步 檢測(cè)當(dāng)前服務(wù)自身的事務(wù)狀態(tài),若當(dāng)前服務(wù)自身的事務(wù)狀態(tài)為已啟動(dòng)狀態(tài),則檢測(cè)單元401 將檢測(cè)出的當(dāng)前服務(wù)自身的事務(wù)狀態(tài)為已啟動(dòng)狀態(tài)的結(jié)果發(fā)給所述提交單元404,觸發(fā)提 交單元404進(jìn)行事務(wù)提交;若檢測(cè)出當(dāng)前服務(wù)自身的事務(wù)狀態(tài)為未啟動(dòng)狀態(tài),則檢測(cè)單元 401將檢測(cè)出的當(dāng)前服務(wù)自身的事務(wù)狀態(tài)為未啟動(dòng)狀態(tài)的結(jié)果發(fā)給服務(wù)退出單元405,觸 發(fā)服務(wù)退出單元405退出當(dāng)前服務(wù)??蛇x的,該裝置還可以包括共享單元406,用于存儲(chǔ)各服務(wù)共享的全局事務(wù)狀態(tài)以及各個(gè)服務(wù)自身的事務(wù)狀 態(tài)。本發(fā)明實(shí)施例中的事務(wù)共享區(qū)可以由事務(wù)控制裝置以外的設(shè)備來實(shí)現(xiàn),也可以由事務(wù) 控制裝置中的共享單元406來實(shí)現(xiàn),其中,該共享單元406可以是各服務(wù)均可讀寫的存儲(chǔ)介 質(zhì)。狀態(tài)更新單元407,用于在啟動(dòng)單元402啟動(dòng)事務(wù)后,將共享單元406中的全局事 務(wù)的狀態(tài)從默認(rèn)的未啟動(dòng)狀態(tài)更新為啟動(dòng)狀態(tài),并將當(dāng)前服務(wù)自身的事務(wù)狀態(tài)從默認(rèn)的未 啟動(dòng)狀態(tài)更新為已啟動(dòng)狀態(tài)??蛇x的,狀態(tài)更新單元407還可以用于在提交單元404提交被啟動(dòng)的事務(wù)時(shí),將所 述共享單元406中全局事務(wù)的狀態(tài)更新為未啟動(dòng)狀態(tài),并將當(dāng)前服務(wù)自身的事務(wù)狀態(tài)更新 為未啟動(dòng)狀態(tài)。需要說明的是本實(shí)施例中的部分單元的功能也可以通過一主控芯片實(shí)現(xiàn),但主控 芯片實(shí)現(xiàn)相應(yīng)功能涉及到的邏輯關(guān)系與上述單元相同,所以并不能將此看成是與本實(shí)施例 的區(qū)別,任何涉及與本實(shí)施例相同邏輯關(guān)系建立的硬件功能結(jié)構(gòu)都在本發(fā)明的保護(hù)范圍之 內(nèi)。本實(shí)施例的優(yōu)點(diǎn)在于,本實(shí)施例所述的裝置可以有效解決處理事務(wù)過程中服務(wù)不 同階段提交產(chǎn)生的沖突問題,在處理整個(gè)事務(wù)的操作的生命周期中,只通過一個(gè)服務(wù)提交調(diào)用各個(gè)服務(wù)的結(jié)果,有效的保證了處理事務(wù)的原子性和一致性,大大提高了處理事務(wù)的 準(zhǔn)確性及可靠性,適用于數(shù)據(jù)量大,數(shù)據(jù)庫(kù)布局分散的分布式數(shù)據(jù)庫(kù)場(chǎng)景。比如可以適應(yīng)XA 接口框架的TUXEDO中間件平臺(tái),從而在金融、交通以及電信等行業(yè)中進(jìn)行涉及多服務(wù)調(diào)用 或嵌套服務(wù)調(diào)用的事務(wù)處理。最后,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是 可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì) 中,該程序在執(zhí)行時(shí),包括如下步驟在多服務(wù)調(diào)用過程中,當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),檢測(cè)是否已有其它 服務(wù)啟動(dòng)事務(wù);若沒有其它服務(wù)啟動(dòng)事務(wù),則當(dāng)前服務(wù)啟動(dòng)事務(wù),并進(jìn)行當(dāng)前服務(wù)處理;在當(dāng)前服務(wù)處理完畢后,提交啟動(dòng)的事務(wù),并退出當(dāng)前服務(wù)。所述的存儲(chǔ)介質(zhì)可以為,如ROM/RAM、磁碟、光盤等。當(dāng)然,以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一 步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明 的保護(hù)范圍,凡在本發(fā)明的邏輯和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含 在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種事務(wù)控制方法,其特征在于,所述方法包括在多服務(wù)調(diào)用過程中,當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),檢測(cè)是否已有其它服務(wù) 啟動(dòng)事務(wù);若沒有其它服務(wù)啟動(dòng)事務(wù),則當(dāng)前服務(wù)啟動(dòng)事務(wù),并進(jìn)行當(dāng)前服務(wù)處理;在當(dāng)前服務(wù)處理完畢后,提交啟動(dòng)的事務(wù),并退出當(dāng)前服務(wù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述檢測(cè)是否已有其它服務(wù)啟動(dòng)事務(wù)具 體為通過各服務(wù)共享的全局事務(wù)的狀態(tài)檢測(cè)是否已有其它服務(wù)啟動(dòng)事務(wù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括在當(dāng)前服務(wù)啟動(dòng)事務(wù) 時(shí),將所述全局事務(wù)的狀態(tài)從默認(rèn)的未啟動(dòng)狀態(tài)更新為啟動(dòng)狀態(tài)。
4.根據(jù)權(quán)利要求1-3任意一項(xiàng)所述的方法,其特征在于,所述方法還包括設(shè)置各服務(wù)自身的事務(wù)狀態(tài),所述各服務(wù)自身的事務(wù)狀態(tài)的默認(rèn)狀態(tài)為未啟動(dòng)狀態(tài)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括當(dāng)前服務(wù)啟動(dòng)事務(wù)時(shí),將當(dāng)前服務(wù)自身的事務(wù)狀態(tài)從默認(rèn)的未啟動(dòng)狀態(tài)更新為已啟動(dòng) 狀態(tài);當(dāng)所述服務(wù)處理完畢后,檢測(cè)當(dāng)前服務(wù)自身的事務(wù)狀態(tài),根據(jù)更新后的已啟動(dòng)狀態(tài),觸 發(fā)所述提交事務(wù)的操作。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括若已有其它服務(wù)啟動(dòng)事務(wù),則直接進(jìn)行當(dāng)前服務(wù)處理,并在當(dāng)前服務(wù)處理完畢后,檢測(cè) 當(dāng)前服務(wù)自身的事務(wù)狀態(tài),根據(jù)默認(rèn)的未啟動(dòng)狀態(tài),觸發(fā)退出當(dāng)前服務(wù)的操作。
7.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述提交啟動(dòng)的事務(wù)包括將所 述當(dāng)前服務(wù)的處理結(jié)果以及所述當(dāng)前服務(wù)調(diào)用的嵌套服務(wù)的處理結(jié)果一并提交。
8.一種事務(wù)控制裝置,其特征在于,所述裝置包括檢測(cè)單元,用于在多服務(wù)調(diào)用過程中,當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),檢測(cè)是否 已有其它服務(wù)啟動(dòng)事務(wù),若檢測(cè)出沒有其它服務(wù)啟動(dòng)事務(wù),則將檢測(cè)出的沒有其它服務(wù)啟 動(dòng)事務(wù)的結(jié)果發(fā)送至啟動(dòng)單元;啟動(dòng)單元,用于根據(jù)所述檢測(cè)單元發(fā)送的結(jié)果來啟動(dòng)事務(wù);服務(wù)處理單元,用于在所述啟動(dòng)單元啟動(dòng)所述事務(wù)后,對(duì)當(dāng)前服務(wù)進(jìn)行處理;提交單元,用于在所述服務(wù)處理單元對(duì)當(dāng)前服務(wù)處理完畢后,提交被啟動(dòng)的事務(wù);服務(wù)退出單元,用于在所述提交單元提交被啟動(dòng)的事務(wù)之后,退出當(dāng)前服務(wù)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括共享單元,用于存儲(chǔ)各服務(wù)共享的全局事務(wù)狀態(tài)以及各個(gè)服務(wù)自身的事務(wù)狀態(tài);所述檢測(cè)單元具體用于根據(jù)各服務(wù)共享的所述全局事務(wù)狀態(tài)檢測(cè)是否已有其它服務(wù) 啟動(dòng)事務(wù)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括狀態(tài)更新單元,用于在所述啟動(dòng)單元啟動(dòng)事務(wù)后,將所述共享單元中的全局事務(wù)的狀 態(tài)從默認(rèn)的未啟動(dòng)狀態(tài)更新為啟動(dòng)狀態(tài),并將當(dāng)前服務(wù)自身的事務(wù)狀態(tài)從默認(rèn)的未啟動(dòng)狀 態(tài)更新為已啟動(dòng)狀態(tài)。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述檢測(cè)單元,還用于在檢測(cè)是否已有其它服務(wù)啟動(dòng)事務(wù)時(shí),若檢測(cè)出已有其它服務(wù)啟動(dòng)事務(wù),則將檢測(cè)出的已有其它服務(wù)啟動(dòng)事務(wù)的結(jié)果發(fā)送至所述服務(wù)處理單元;服務(wù)處理單元,還用于根據(jù)所述檢測(cè)單元發(fā)送的結(jié)果對(duì)當(dāng)前服務(wù)進(jìn)行處理。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述檢測(cè)單元,還用于在所述服務(wù)處理單元對(duì)當(dāng)前服務(wù)處理完畢后,檢測(cè)當(dāng)前服務(wù)自 身的事務(wù)狀態(tài),若當(dāng)前服務(wù)自身的事務(wù)狀態(tài)為已啟動(dòng)狀態(tài),則將檢測(cè)出的當(dāng)前服務(wù)自身的 事務(wù)狀態(tài)為已啟動(dòng)狀態(tài)的結(jié)果發(fā)給所述提交單元;所述提交單元具體用于根據(jù)接收到的所述當(dāng)前服務(wù)自身的事務(wù)狀態(tài)為已啟動(dòng)狀態(tài)的 結(jié)果提交被啟動(dòng)的事務(wù)。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述檢測(cè)單元,還用于在檢測(cè)出當(dāng)前服務(wù)自身的事務(wù)狀態(tài)為未啟動(dòng)狀態(tài)時(shí),將當(dāng)前服 務(wù)自身的事務(wù)狀態(tài)為未啟動(dòng)狀態(tài)的結(jié)果發(fā)給所述服務(wù)退出單元;所述服務(wù)退出單元,還用于根據(jù)接收到的所述當(dāng)前服務(wù)自身的事務(wù)狀態(tài)為未啟動(dòng)狀態(tài) 的結(jié)果退出當(dāng)前服務(wù)。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,狀態(tài)更新單元,還用于在所述提交單元提交被啟動(dòng)的事務(wù)時(shí),將所述共享單元中的全 局事務(wù)的狀態(tài)更新為未啟動(dòng)狀態(tài),并將當(dāng)前服務(wù)自身的事務(wù)狀態(tài)更新為未啟動(dòng)狀態(tài)。
全文摘要
本發(fā)明實(shí)施例提供一種處理事務(wù)的方法及裝置,屬于計(jì)算機(jī)通信技術(shù)領(lǐng)域,其中所述方法包括在多服務(wù)調(diào)用過程中,當(dāng)被調(diào)用的當(dāng)前服務(wù)需要啟動(dòng)事務(wù)時(shí),檢測(cè)是否已有其它服務(wù)啟動(dòng)事務(wù);若沒有其它服務(wù)啟動(dòng)事務(wù),則當(dāng)前服務(wù)啟動(dòng)事務(wù),并進(jìn)行當(dāng)前服務(wù)處理;在當(dāng)前服務(wù)處理完畢后,提交啟動(dòng)的事務(wù),并退出當(dāng)前服務(wù)。通過本發(fā)明實(shí)施例所提供的方法及裝置,可以保證處理的事務(wù)要么都提交,要么都回滾,有效的保證了事務(wù)處理的原子性與一致性。
文檔編號(hào)G06F9/46GK102135899SQ201010105099
公開日2011年7月27日 申請(qǐng)日期2010年1月26日 優(yōu)先權(quán)日2010年1月26日
發(fā)明者姜琰祥, 徐永勝, 房厚波 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
望城县| 江都市| 临沂市| 榆社县| 陇西县| 满城县| 临夏县| 仙居县| 澄江县| 敖汉旗| 临安市| 博客| 伊通| 吉木萨尔县| 会泽县| 无棣县| 汶川县| 大连市| 琼海市| 凤翔县| 辛集市| 如东县| 乌恰县| 宜城市| 巨野县| 屏东县| 杭锦旗| 车险| 翁牛特旗| 大连市| 汾西县| 亚东县| 南昌市| 武威市| 桂林市| 寿宁县| 平湖市| 耒阳市| 象州县| 清苑县| 民丰县|