两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的方法及裝置的制作方法

文檔序號:6481035閱讀:229來源:國知局
專利名稱:一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)庫事務(wù)管理技術(shù)領(lǐng)域,特別涉及一種保證數(shù)據(jù)庫內(nèi)事務(wù) 一致的方法及裝置。
背景技術(shù)
現(xiàn)代企業(yè)信息化程度已經(jīng)越來越高,業(yè)務(wù)也越來越多樣化,往往是不同的 業(yè)務(wù)擁有不同的系統(tǒng),而這些系統(tǒng)通常又需要相互交互,例如在某企業(yè),需要 通過電子表單和工作流系統(tǒng)結(jié)合進行各種業(yè)務(wù)審批,在審批過程中甚至于還 需要使用第三方獨立的業(yè)務(wù)系統(tǒng),如財務(wù)或人力資源系統(tǒng)等,以便為決策提
供參考。在這些系統(tǒng)之間進行操作時,數(shù)據(jù)的完整性就顯得尤為重要.如:電子 表單采集的數(shù)據(jù)和工作流的狀態(tài)數(shù)據(jù),工作流的流程數(shù)據(jù)和財務(wù)系統(tǒng)之間的 數(shù)據(jù),都需要保證完整才能進行后續(xù)處理。
企業(yè)的信息化項目,多數(shù)都要求能夠快速構(gòu)建,越來越多的開發(fā)廠商都 使用 一些能夠提高開發(fā)速度基礎(chǔ)平臺產(chǎn)品,如何保證基礎(chǔ)平臺與業(yè)務(wù)系統(tǒng)之 間的事務(wù)一致性,以及其他提供服務(wù)和使用服務(wù)的系統(tǒng)之間的事務(wù)一致性, 是需要解決的主要問題。
當前用來解決系統(tǒng)集成時的事務(wù)一致性問題的解決方案是將兩種系統(tǒng)的 事務(wù)框架統(tǒng)一為同一種事務(wù)管理框架,要求使用服務(wù)的一方必須使用提供服 務(wù)一方的事務(wù)管理框架。例如,基于java實現(xiàn)的流程業(yè)務(wù)處理框架(JBPM, Java Business Process Management)其是一個開源工作流,在用戶4吏用JBPM 做業(yè)務(wù)開發(fā)時,必須使用JBPM提供的jbpmcontext對象,完成數(shù)據(jù)庫操 作,并且結(jié)束時需要調(diào)用jbpmcontext.close()方法將處理完成的事務(wù)提交至 數(shù)據(jù)庫,從而保證數(shù)據(jù)庫內(nèi)的事務(wù)一致性。
圖l是現(xiàn)有的保證數(shù)據(jù)庫內(nèi)事務(wù)一致的實現(xiàn)原理示意圖。在圖1中,假 設(shè)A系統(tǒng)是提供服務(wù)的系統(tǒng)或稱為支撐系統(tǒng),B系統(tǒng)是使用服務(wù)的系統(tǒng)或稱 為業(yè)務(wù)系統(tǒng),上述A系統(tǒng)、B系統(tǒng)以及A系統(tǒng)所提供的事務(wù)管理框架 (A-TM)都位于服務(wù)器端。當服務(wù)器端根據(jù)來自客戶端的業(yè)務(wù)請求需要使用a系統(tǒng)提供的服務(wù)時,
具體操作為,b系統(tǒng)通過a系統(tǒng)所提供的事務(wù)管理框架(a-tm)完成對數(shù) 據(jù)的處理操作,之后,通過a-tm完成對數(shù)據(jù)庫持久化時的事務(wù)管理操作, 即b系統(tǒng)通過a-tm完成對數(shù)據(jù)庫x、 y、 z的持久化操作。
上述現(xiàn)有技術(shù)至少存在如下問題
1、 業(yè)務(wù)系統(tǒng)與支撐系統(tǒng)的耦合度高,如圖1中的b系統(tǒng)與a系統(tǒng)的耦 合度要求較高。
2、 如果新開發(fā)的系統(tǒng)已經(jīng)采用新的事物管理框架完成了部分開發(fā),需 要對這部分代碼進行修改。例如,如果圖1中的b系統(tǒng)已使用了 c系統(tǒng)的事 務(wù)管理框架完成了部分開發(fā),而該b系統(tǒng)運行時需使用a-tm,則需要對已 開發(fā)的代碼進行修改以使其適應(yīng)a-tm。
3、 缺乏靈活性,要求待開發(fā)的業(yè)務(wù)系統(tǒng)必須與支撐系統(tǒng)所使用的事務(wù) 管理一醫(yī)架相適應(yīng)。

發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提供一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的方法及裝 置,在保證了數(shù)據(jù)庫內(nèi)事務(wù)一致的同時,降低了業(yè)務(wù)系統(tǒng)與支撐系統(tǒng)的耦合 度,且提高了開發(fā)的靈活性。
本發(fā)明提供了一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的方法,包括在第一系統(tǒng)設(shè) 置第一事務(wù)管理框架,在第二系統(tǒng)設(shè)置第二事務(wù)管理框架,所述方法還包

第 一 系統(tǒng)接收來自第二系統(tǒng)的業(yè)務(wù)調(diào)用請求,調(diào)用第 一事務(wù)管理框架, 由所述第一事務(wù)管理框架判斷設(shè)置在第二系統(tǒng)的第二事務(wù)管理框架是否開啟 了事務(wù),若是,則設(shè)置事務(wù)相關(guān)標識為相關(guān),并設(shè)置第一事務(wù)管理框架自身
的事務(wù)為開啟狀態(tài);
第一系統(tǒng)將第二系統(tǒng)所需要的事務(wù)交給第二系統(tǒng)進行處理,并且,第一 系統(tǒng)對交給第二系統(tǒng)進行處理的事務(wù)進行相對應(yīng)的邏輯事務(wù)處理;
第一系統(tǒng)處理完畢后通知第一事務(wù)管理框架,由第一事務(wù)管理框架判斷 出不滿足提交條件后,結(jié)束。
6其中,若第一事務(wù)管理框架判斷出設(shè)置在第二系統(tǒng)的第二事務(wù)管理框架 未開啟事務(wù),則所述方法還包括
第一事務(wù)管理框架設(shè)置事務(wù)相關(guān)標識為不相關(guān),并設(shè)置自身的事務(wù)為開 啟狀態(tài),之后,第一系統(tǒng)將第二系統(tǒng)所需要的事務(wù)交給第一系統(tǒng)自身進行處
理;
第一系統(tǒng)處理完畢后,再向第一事務(wù)管理框架發(fā)送通知,由第一事務(wù)管 理框架判斷是否滿足提交條件,若是,則將第一系統(tǒng)所處理的邏輯事務(wù)提交 至與第 一 系統(tǒng)對應(yīng)的數(shù)據(jù)庫。
其中,所述設(shè)置第一事務(wù)管理框架自身的事務(wù)為開啟狀態(tài)后,還包括 將事務(wù)計數(shù)器的值加l。
其中,所述判斷是否滿足提交條件的步驟包括
第一事務(wù)管理框架判斷自身的事務(wù)狀態(tài)為開啟,且事務(wù)相關(guān)標識為不相 關(guān),若是,將所述事務(wù)計數(shù)器的值減1,否則,判定為不滿足提交條件;
判斷所述事務(wù)計數(shù)器的值是否為0,若是,則判定為滿足提交條件,否 則不滿足提交條件。
其中,所述將第一系統(tǒng)所處理的邏輯事務(wù)提交至與第一系統(tǒng)對應(yīng)的數(shù)據(jù) 庫的步驟包括
01 )從第一事務(wù)管理框架所管理的連接映射對象中獲取存在的一個連 接,提交所述連接后,關(guān)閉所述連接;
02) 判斷所述連接映射對象中是否還存在連接,若是,重復(fù)執(zhí)行步驟 01),否則,執(zhí)行步驟03);
03) 第一事務(wù)管理框架設(shè)置自身的事務(wù)狀態(tài)為關(guān)閉。 本發(fā)明還提供了一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的裝置,包括 第一系統(tǒng),所述第一系統(tǒng)包括
調(diào)用模塊,用于接收來自第二系統(tǒng)的業(yè)務(wù)調(diào)用請求,調(diào)用設(shè)置在第一系 統(tǒng)的第一事務(wù)管理框架;
移交模塊,用于根據(jù)通知模塊提供的設(shè)置信息,將第二系統(tǒng)所需要的事 務(wù)交給第二系統(tǒng)進行處理,并且,將與交給第二系統(tǒng)進行處理的事務(wù)相對應(yīng) 的邏輯事務(wù)交給第一系統(tǒng)的處理模塊進行處理;處理模塊,用于事務(wù)處理完畢后,通知提交模塊; 第一事務(wù)管理框架,所述第一事務(wù)管理框架包括 第一判斷模塊,用于根據(jù)接收到的調(diào)用請求,判斷出設(shè)置在第二系統(tǒng)的 第二事務(wù)管理框架開啟了事務(wù)時,通知設(shè)置模塊;
設(shè)置模塊,用于設(shè)置事務(wù)相關(guān)標識為相關(guān),并設(shè)置第一事務(wù)管理框架自
身的事務(wù)為開啟狀態(tài);
通知模塊,用于將所述設(shè)置模塊所設(shè)置的信息通知第一系統(tǒng)中的移交模
塊;
提交模塊,用于根據(jù)接收到的通知,判斷出不滿足提交條件時,結(jié)束。 其中,所述第一事務(wù)管理框架中的第一判斷模塊,還用于根據(jù)接收到的
調(diào)用請求,判斷出設(shè)置在第二系統(tǒng)的第二事務(wù)管理框架未開啟事務(wù)時,通知
設(shè)置模塊;
所述設(shè)置模塊,還用于設(shè)置事務(wù)相關(guān)標識為不相關(guān),并設(shè)置第一事務(wù)管 理框架自身的事務(wù)為開啟狀態(tài);
所述提交模塊,還用于判斷出滿足提交條件時,將第一系統(tǒng)所處理的邏 輯事務(wù)提交至與第 一 系統(tǒng)對應(yīng)的數(shù)據(jù)庫;
所述第一系統(tǒng)中的移交模塊,還用于根據(jù)通知模塊提供的設(shè)置信息,將 第二系統(tǒng)所需要的事務(wù)交給第 一 系統(tǒng)進行處理。
其中,所述第一事務(wù)管理框架中所述通知模塊,還用于將事務(wù)相關(guān)標 識設(shè)置為相關(guān)的信息通知給計數(shù)模塊;
所述第一事務(wù)管理框架中還包括
計數(shù)模塊,用于在事務(wù)相關(guān)標識為相關(guān)時,將事務(wù)計數(shù)器的值加l。 其中,所述第一系統(tǒng)中還包括
第二判斷模塊,用于判斷自身的事務(wù)處理操作是否正常,若正常,再向 第一事務(wù)管理框架發(fā)送通知,否則通知第一事務(wù)管理框架對所述第一系統(tǒng)所 對應(yīng)的數(shù)據(jù)庫進行回滾操作;
所述第一事務(wù)管理框架中還包括
回滾模塊,用于根據(jù)接收到的通知,對所述第一系統(tǒng)所對應(yīng)的數(shù)據(jù)庫進 行回滾操作。其中,所述提交模塊具體包括
提交子模塊,用于從連接映射對象中獲取存在的一個連接,提交所述連
接,關(guān)閉所述連接;
判斷子模塊,用于判斷所述連接映射對象中是否還存在連接,若是,則 返回提交子才莫塊,否則,通知設(shè)置子模塊;
設(shè)置子模塊,用于將第一事務(wù)管理框架的事務(wù)狀態(tài)設(shè)置為關(guān)閉。 應(yīng)用本發(fā)明實施例提供的方法和裝置,在保證了數(shù)據(jù)庫內(nèi)事務(wù)一致的同 時,降低了業(yè)務(wù)系統(tǒng)與支撐系統(tǒng)的耦合度,且提高了開發(fā)的靈活性。并且, 由于業(yè)務(wù)系統(tǒng)與支持系統(tǒng)相對獨立,且可以相互通信,因而,如果新開發(fā)的 業(yè)務(wù)系統(tǒng)已經(jīng)釆用新的事物管理框架完成了部分開發(fā),不需要對這部分代碼 再進行修改。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對 實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下 面描述中的附圖僅僅是本發(fā)明的 一些實施例,對于本領(lǐng)域普通技術(shù)人員來 講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。 圖1是保證數(shù)據(jù)庫內(nèi)事務(wù)一致的實現(xiàn)原理示意圖; 圖2是本發(fā)明實施例的一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的方法流程圖; 圖3是根據(jù)本發(fā)明實施例的數(shù)據(jù)庫連接對象的關(guān)系示意圖; 圖4是根據(jù)本發(fā)明實施例的將所處理的事務(wù)提交至數(shù)據(jù)庫處理流程圖; 圖5是根據(jù)本發(fā)明實施例的回滾操作的處理流程; 圖6是根據(jù)本發(fā)明實施例的保證數(shù)據(jù)庫內(nèi)事務(wù)一致的通信過程示意圖; 圖7是本發(fā)明實施例的 一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的裝置結(jié)構(gòu)示意圖。
具體實施例方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行 清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而 不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作
9出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
解決上述A, B系統(tǒng)的問題需要A系統(tǒng)的事務(wù)框架提供一種機制能夠與 B系統(tǒng)的事務(wù)管理框架進行通信,從而了解到B系統(tǒng)的事務(wù)管理框架的狀 態(tài),從而決定A系統(tǒng)是否^f故全部事務(wù)管理。
為此,本發(fā)明實施例提供了一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的方法,參見圖 2,具體包括在圖2所示流程實施前,包括在第一系統(tǒng)設(shè)置第一事務(wù)管 理框架,在第二系統(tǒng)設(shè)置第二事務(wù)管理框架,這里,第一系統(tǒng)為支撐系統(tǒng), 第二系統(tǒng)為業(yè)務(wù)系統(tǒng)。圖2所示流程具體包括
步驟201,第一系統(tǒng)接收來自第二系統(tǒng)的業(yè)務(wù)調(diào)用請求,調(diào)用第一事務(wù) 管理框架;
步驟202,第一事務(wù)管理框架接收到第一系統(tǒng)的調(diào)用后,根據(jù) isReference接口方法判斷第二事務(wù)管理框架是否開啟了事務(wù),若開啟,則執(zhí) 行步驟203,否則執(zhí)行步驟207;
步驟203,第一事務(wù)管理框架設(shè)置事務(wù)相關(guān)標識(isReference )為相關(guān) (true),并且,設(shè)置第一事務(wù)管理框架自身的事務(wù)為開啟狀態(tài);
步驟204,第一系統(tǒng)將第二系統(tǒng)所需要的事務(wù)交給第二系統(tǒng)進行處理, 并且,第 一 系統(tǒng)對交給第二系統(tǒng)進行處理的事務(wù)進行相對應(yīng)的邏輯事務(wù)處 理;
步驟205,第一系統(tǒng)處理完畢后通知第一事務(wù)管理框架; 步驟206,第一事務(wù)管理框架判斷出不滿足提交條件后,結(jié)束; 步驟207,第一事務(wù)管理框架設(shè)置事務(wù)相關(guān)標識(isReference )為不相關(guān) (false),并且,設(shè)置第一事務(wù)管理框架自身的事務(wù)為開啟狀態(tài);
步驟208,第一系統(tǒng)將第二系統(tǒng)所需要的事務(wù)交給第一系統(tǒng)自身進行處
理,
步驟209,第一系統(tǒng)處理完畢后,再向第一事務(wù)管理框架發(fā)送提交通 知;之后執(zhí)行步驟206。
步驟210,第一事務(wù)管理框架判斷是否滿足提交條件,若是,執(zhí)行步驟 211,否則結(jié)束;
步驟211,第一事務(wù)管理框架將第一系統(tǒng)所處理的事務(wù)提交至與第一系統(tǒng)對應(yīng)的數(shù)據(jù)庫,結(jié)束。
需要說明的是,上述步驟203和步驟207的將第一事務(wù)管理框架自身的 事務(wù)設(shè)置為開啟狀態(tài)后,可以進一步包括將事務(wù)計數(shù)器的值加l。 需要說明的是,上述判斷是否滿足提交條件的步驟包括
a) 第一事務(wù)管理框架判斷自身的事務(wù)狀態(tài)為開啟,且事務(wù)相關(guān)標識為不 相關(guān),若是,將所述事務(wù)計數(shù)器的值減1,否則,判定為不滿足提交條件;
b) 判斷所述事務(wù)計數(shù)器的值是否為0,若是,則判定為滿足提交條件, 否則不滿足提交條件。
需要說明的是,由于事務(wù)計數(shù)器的存在,可以實現(xiàn)事務(wù)的嵌套管理,即 當事務(wù)計數(shù)器的值減1后不為0時,說明一次事務(wù)處理還沒有結(jié)束,需要繼 續(xù)等待。
應(yīng)用本發(fā)明實施例提供的方法,在保證了數(shù)據(jù)庫內(nèi)事務(wù)一致的同時,降 低了業(yè)務(wù)系統(tǒng)與支撐系統(tǒng)的耦合度,且提高了開發(fā)的靈活性。并且,由于支 撐系統(tǒng)與業(yè)務(wù)系統(tǒng)相對獨立,且支撐系統(tǒng)中的事務(wù)管理框架(如第一系統(tǒng)中 的第一事務(wù)管理框架)和業(yè)務(wù)系統(tǒng)中的事務(wù)管理框架(如第二系統(tǒng)中的第二 事務(wù)管理框架)可以相互通信,因而,如果新開發(fā)的業(yè)務(wù)系統(tǒng)已經(jīng)采用新的 事物管理框架完成了部分開發(fā),不需要對這部分代碼再進行修改??梢姡瑧?yīng) 用本發(fā)明實施例提供的解決方案,通過良好的接口封裝,在做系統(tǒng)集成時, 能夠自動調(diào)用接口設(shè)置事務(wù)相關(guān)標識的狀態(tài)與業(yè)務(wù)系統(tǒng)所具有的事務(wù)框架的 通信。滿足系統(tǒng)集成時尤其是基礎(chǔ)支撐平臺與業(yè)務(wù)系統(tǒng)集成在事務(wù)一致性方 面的需求。
需要說明的是,當?shù)谝幌到y(tǒng)向第一事務(wù)管理框架發(fā)送提交通知之前,還 可以包括第一系統(tǒng)判斷自身的事務(wù)處理操作是否正常,若正常,再向第一 事務(wù)管理框架發(fā)送提交通知,否則通知第一事務(wù)管理框架對所述第一系統(tǒng)所 對應(yīng)的數(shù)據(jù)庫進行回滾操作。這里的回滾操作在后面詳細說明。
需要說明的是,當?shù)谝皇聞?wù)管理框架設(shè)置自身的事務(wù)為開啟狀態(tài)后,第 一事務(wù)管理框架中的事務(wù)管理器會將第一事務(wù)管理框架中所包含的事務(wù)對象 放到線程相關(guān)的映射(MAP)中。
數(shù)據(jù)庫操作是通過與數(shù)據(jù)庫的連接(connection )對象完成操作的,關(guān)于
ii數(shù)據(jù)庫連接和事務(wù)對象的關(guān)系如下所述事務(wù)管理框架中的事務(wù)管理器(transactionManager)通過線程相關(guān)的事務(wù)映射(transactionMap)維護多個線程中的多個事務(wù)對象,每個事務(wù)對象使用連接映射(connMap)維護著自身使用的多個連接對象。它們的關(guān)系如圖3所示
transactionManager為全局 舉一的?于象,通過調(diào)用transactionManager的當前事務(wù)(currentTransaction())方法可以獲取當前線程相關(guān)的事務(wù)對象,通過事務(wù)對象獲取數(shù)據(jù)庫連接,然后根據(jù)連接執(zhí)行數(shù)據(jù)庫操作。具體到圖3,其表示為每個TrsactionManager類型的對象包含一個到多個Transaction類型的對象,每個Transaction類型的對象包含一個到多個連接對象。
應(yīng)用上述連接方式可知,用數(shù)據(jù)源名稱作為關(guān)鍵(key)值,通過map來維護數(shù)據(jù)中的多個連接,通過線程相關(guān)的Map維護多個線程中的多個事務(wù),可以保證數(shù)據(jù)庫中事務(wù)的一致性。
參見圖4,其是根據(jù)本發(fā)明實施例的將所處理的事務(wù)提交至數(shù)據(jù)庫處理流程圖。當滿足提交條件時,即第一事務(wù)管理框架判斷自身的事務(wù)狀態(tài)為開啟,事務(wù)相關(guān)標識為不相關(guān),且事務(wù)計數(shù)器的值減l后等于0的情況下,圖4所示流程具體包括
步驟401,從連接映射(connMap)對象中獲取存在的一個連接;
步驟402,提交所述連接;
步驟403,關(guān)閉所述連接;
步驟404,判斷所述連接映射對象中是否還存在連接,若是,返回步驟401,否則,4丸行步驟405;
步驟405 ,第 一事務(wù)管理框架設(shè)置自身的事務(wù)狀態(tài)為關(guān)閉即false狀態(tài),結(jié)束。
參見圖5,其是根據(jù)本發(fā)明實施例的回滾操作的處理流程,具體包括
步驟501,第一事務(wù)管理框架判斷自身的事務(wù)狀態(tài)是否為開啟,若是,則執(zhí)行步驟502,否則結(jié)束;
步驟502,第一事務(wù)管理框架判斷事務(wù)相關(guān)標識(isReference )是否為相關(guān)(true),若是,則執(zhí)行步驟507,否則,執(zhí)行步驟503;
步驟503,從連接映射(connMap)對象中獲取存在的一個連接;步驟504,將該連接所涉及的一個或多個對數(shù)據(jù)庫的若千操作進行回滾
操作;
步驟505,關(guān)閉該已回滾的連接;
步驟506,判斷所述連接映射(connMap)對象中是否還存在連接,若是,返回步驟503,否則,執(zhí)行步驟507;
步驟507,設(shè)置第一事務(wù)管理框架自身的事務(wù)狀態(tài)為關(guān)閉,結(jié)束。參見圖6,其是才艮據(jù)本發(fā)明實施例的保證數(shù)據(jù)庫內(nèi)事務(wù)一致的通信過程示意圖,A系統(tǒng)和B系統(tǒng)集成到一起,均位于服務(wù)器端,B系統(tǒng)為業(yè)務(wù)系統(tǒng),A系統(tǒng)為支持系統(tǒng),且A、 B系統(tǒng)內(nèi)均設(shè)置有事務(wù)管理框架,B系統(tǒng)負責控制X、 Y數(shù)據(jù)庫,A系統(tǒng)負責控制Z數(shù)據(jù)庫。為描述方便,在此,將A系統(tǒng)內(nèi)的事務(wù)管理框架稱為第 一事務(wù)管理框架,將B系統(tǒng)內(nèi)的事務(wù)管理框架稱為第二事務(wù)管理框架。
若B系統(tǒng)需要使用A系統(tǒng)提供的服務(wù),則向A系統(tǒng)發(fā)送調(diào)用請求,A系統(tǒng)接收到調(diào)用請求后會首先調(diào)用第一事務(wù)管理框架,由該第一事務(wù)管理框架與第二事務(wù)管理框架進行通信,以確定是由A系統(tǒng)來處理B系統(tǒng)所需要的相關(guān)事務(wù),還是由B系統(tǒng)來處理其需要的相關(guān)事務(wù)
若由B系統(tǒng)處理其需要的相關(guān)事務(wù),則當B系統(tǒng)處理完畢后,通知A系統(tǒng),A系統(tǒng)將其處理的與B系統(tǒng)所需要的相關(guān)事務(wù)對應(yīng)的邏輯事務(wù)處理結(jié)果,通過第一事務(wù)管理框架提交至Z數(shù)據(jù)庫,相應(yīng)的,B系統(tǒng)通過第二事務(wù)管理框架將其處理的事務(wù)結(jié)果提交至X、 Y數(shù)據(jù)庫;
若由A系統(tǒng)來處理B系統(tǒng)所需要的相關(guān)事務(wù),則當A系統(tǒng)處理完畢后,通過第一事務(wù)管理框架將事務(wù)的處理結(jié)果^_交至Z凄t據(jù)庫。
這樣,可以始終保持X、 Y數(shù)據(jù)庫內(nèi)的事務(wù)與Z數(shù)據(jù)庫內(nèi)的事務(wù)一致,并且由于X、 Y數(shù)據(jù)庫都由B系統(tǒng)控制,因而也保證了X、 Y數(shù)據(jù)庫內(nèi)的事務(wù)的一致性。
需要說明的是,本發(fā)明實施例中不再詳細說明第二系統(tǒng)(即B系統(tǒng))及第二系統(tǒng)中的第二事務(wù)管理框架是如何提交事務(wù)到第二系統(tǒng)所對應(yīng)的數(shù)據(jù)庫的,因為其具體實現(xiàn)過程與第一系統(tǒng)類似。本發(fā)明實施例還提供了一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的裝置,參見圖7,
包括第一系統(tǒng)701和第一事務(wù)管理框架702,其中 所述第一系統(tǒng)701包括
調(diào)用模塊7011,用于接收來自第二系統(tǒng)的業(yè)務(wù)調(diào)用請求,調(diào)用設(shè)置在 第一系統(tǒng)的第一事務(wù)管理框架;
移交模塊7012,用于根據(jù)通知模塊提供的設(shè)置信息,將第二系統(tǒng)所需 要的事務(wù)交給第二系統(tǒng)進行處理,并且,將與交給第二系統(tǒng)進行處理的事務(wù) 相對應(yīng)的邏輯事務(wù)交給第 一 系統(tǒng)的處理模塊進行處理;
處理模塊7013,用于事務(wù)處理完畢后,通知提交模塊7024;
所述第 一事務(wù)管理框架包括
第一判斷模塊7021,用于根據(jù)接收到的調(diào)用請求,判斷出設(shè)置在第二 系統(tǒng)的第二事務(wù)管理框架開啟了事務(wù)時,通知設(shè)置模塊;
設(shè)置模塊7022,用于設(shè)置事務(wù)相關(guān)標識為相關(guān),并設(shè)置第一事務(wù)管理 框架自身的事務(wù)為開啟狀態(tài);
通知模塊7023,用于將所述設(shè)置模塊所設(shè)置的信息通知第一系統(tǒng)中的 移交模塊;
提交模塊7024,用于根據(jù)接收到的通知,判斷出不滿足提交條件時, 結(jié)束。
上述第一判斷模塊7021,還用于根據(jù)接收到的調(diào)用請求,判斷出設(shè)置 在第二系統(tǒng)的第二事務(wù)管理框架未開啟事務(wù)時,通知設(shè)置模塊2022;
所述設(shè)置模塊7022,還用于設(shè)置事務(wù)相關(guān)標識為不相關(guān),并設(shè)置第一 事務(wù)管理框架自身的事務(wù)為開啟狀態(tài),
上述提交模塊7024,還用于判斷出滿足提交條件時,將第一系統(tǒng)所處 理的邏輯事務(wù)提交至與第 一 系統(tǒng)對應(yīng)的數(shù)據(jù)庫;
所述移交模塊7012,還用于根據(jù)通知模塊提供的設(shè)置信息,將第二系 統(tǒng)所需要的事務(wù)交給第 一 系統(tǒng)進行處理。
上述第一事務(wù)管理框架中所述通知模塊7023,還用于將事務(wù)相關(guān)標 識設(shè)置為相關(guān)的信息通知給計數(shù)模塊;
所述第一事務(wù)管理框架702中還包括計數(shù)模塊7025,用于在事務(wù)相關(guān)標識為相關(guān)時,將事務(wù)計數(shù)器的值加1。
上述第一系統(tǒng)701中還包括
第二判斷模塊7014,用于判斷自身的事務(wù)處理操作是否正常,若正 常,再向第一事務(wù)管理框架發(fā)送通知,否則通知第一事務(wù)管理框架對所述第 一系統(tǒng)所對應(yīng)的數(shù)據(jù)庫進行回滾操作;
所述第 一事務(wù)管理框架中還包括
回滾模塊7015,用于根據(jù)接收到的通知,對所述第一系統(tǒng)所所對應(yīng)的 數(shù)據(jù)庫進行回滾操作。
上述提交模塊7024可以具體包括
提交子模塊,用于從連接映射對象中獲取存在的一個連接,提交所述連 接,關(guān)閉所述連接;
判斷子模塊,用于判斷所述連接映射對象中是否還存在連接,若是,則 返回提交子模塊,否則,通知設(shè)置子模塊;
設(shè)置子模塊,用于將第一事務(wù)管理框架的事務(wù)狀態(tài)設(shè)置為關(guān)閉。
應(yīng)用本發(fā)明實施例提供的裝置,在保證了數(shù)據(jù)庫內(nèi)事務(wù)一致的同時,降 低了業(yè)務(wù)系統(tǒng)與支撐系統(tǒng)的耦合度,且提高了開發(fā)的靈活性。并且,由于業(yè) 務(wù)系統(tǒng)與支持系統(tǒng)相對獨立,且可以相互通信,因而,如果新開發(fā)的業(yè)務(wù)系 統(tǒng)已經(jīng)采用新的事物管理框架完成了部分開發(fā),不需要對這部分代碼再進行 修改。
對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較 簡單,相關(guān)之處參見方法實施例的部分說明即可。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來 將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示 這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語"包 括"、"包含,,或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括 一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒 有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所 固有的要素。在沒有更多限制的情況下,由語句"包括一個......"限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的 相同要素。
驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機
可讀取存儲介質(zhì)中,這里所稱得的存儲介質(zhì),如ROM/RAM、磁碟、光盤
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范 圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均 包含在本發(fā)明的保護范圍內(nèi)。
權(quán)利要求
1、一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的方法,其特征在于,包括在第一系統(tǒng)設(shè)置第一事務(wù)管理框架,在第二系統(tǒng)設(shè)置第二事務(wù)管理框架,所述方法還包括第一系統(tǒng)接收來自第二系統(tǒng)的業(yè)務(wù)調(diào)用請求,調(diào)用第一事務(wù)管理框架,由所述第一事務(wù)管理框架判斷設(shè)置在第二系統(tǒng)的第二事務(wù)管理框架是否開啟了事務(wù),若是,則設(shè)置事務(wù)相關(guān)標識為相關(guān),并設(shè)置第一事務(wù)管理框架自身的事務(wù)為開啟狀態(tài);第一系統(tǒng)將第二系統(tǒng)所需要的事務(wù)交給第二系統(tǒng)進行處理,并且,第一系統(tǒng)對交給第二系統(tǒng)進行處理的事務(wù)進行相對應(yīng)的邏輯事務(wù)處理;第一系統(tǒng)處理完畢后通知第一事務(wù)管理框架,由第一事務(wù)管理框架判斷出不滿足提交條件后,結(jié)束。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,若第一事務(wù)管理框架判 斷出設(shè)置在第二系統(tǒng)的第二事務(wù)管理框架未開啟事務(wù),則所述方法還包括第一事務(wù)管理框架設(shè)置事務(wù)相關(guān)標識為不相關(guān),并設(shè)置自身的事務(wù)為開 啟狀態(tài),之后,第一系統(tǒng)將第二系統(tǒng)所需要的事務(wù)交給第一系統(tǒng)自身進行處 理;第一系統(tǒng)處理完畢后,再向第一事務(wù)管理框架發(fā)送通知,由第一事務(wù)管 理框架判斷是否滿足提交條件,若是,則將第一系統(tǒng)所處理的邏輯事務(wù)提交 至與第 一 系統(tǒng)對應(yīng)的數(shù)據(jù)庫。
3、 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述設(shè)置第一事務(wù)管 理框架自身的事務(wù)為開啟狀態(tài)后,還包括將事務(wù)計數(shù)器的值加l。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述判斷是否滿足提交 條件的步驟包括第一事務(wù)管理框架判斷自身的事務(wù)狀態(tài)為開啟,且事務(wù)相關(guān)標識為不相 關(guān),若是,將所述事務(wù)計數(shù)器的值減1,否則,判定為不滿足提交條件;判斷所述事務(wù)計數(shù)器的值是否為0,若是,則判定為滿足提交條件,否 則不滿足提交條件。
5、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將第一系統(tǒng)所處理 的邏輯事務(wù)提交至與第 一 系統(tǒng)對應(yīng)的數(shù)據(jù)庫的步驟包括01)從第一事務(wù)管理框架所管理的連接映射對象中獲取存在的一個連接,提交所述連接后,關(guān)閉所述連接;02) 判斷所述連接映射對象中是否還存在連接,若是,重復(fù)執(zhí)行步驟 01),否則,#1行步驟03);03) 第一事務(wù)管理框架設(shè)置自身的事務(wù)狀態(tài)為關(guān)閉。
6、 一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的裝置,其特征在于,包括 第一系統(tǒng),所述第一系統(tǒng)包括調(diào)用模塊,用于接收來自第二系統(tǒng)的業(yè)務(wù)調(diào)用請求,調(diào)用設(shè)置在第一系 統(tǒng)的第一事務(wù)管理框架;移交模塊,用于根據(jù)通知模塊提供的設(shè)置信息,將第二系統(tǒng)所需要的事 務(wù)交給第二系統(tǒng)進行處理,并且,將與交給第二系統(tǒng)進行處理的事務(wù)相對應(yīng) 的邏輯事務(wù)交給第 一 系統(tǒng)的處理模塊進行處理;處理模塊,用于事務(wù)處理完畢后,通知提交模塊;第一事務(wù)管理框架,所述第一事務(wù)管理框架包括 第一判斷模塊,用于根據(jù)接收到的調(diào)用請求,判斷出設(shè)置在第二系統(tǒng)的 第二事務(wù)管理框架開啟了事務(wù)時,通知設(shè)置模塊;設(shè)置模塊,用于設(shè)置事務(wù)相關(guān)標識為相關(guān),并設(shè)置第一事務(wù)管理框架自 身的事務(wù)為開啟狀態(tài);通知模塊,用于將所述設(shè)置模塊所設(shè)置的信息通知第 一 系統(tǒng)中的移交模塊;提交模塊,用于根據(jù)接收到的通知,判斷出不滿足提交條件時,結(jié)束。
7、 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第 一事務(wù)管理框架中的第 一判斷模塊,還用于根據(jù)接收到的調(diào)用請 求,判斷出設(shè)置在第二系統(tǒng)的第二事務(wù)管理框架未開啟事務(wù)時,通知設(shè)置模 塊;所述設(shè)置模塊,還用于設(shè)置事務(wù)相關(guān)標識為不相關(guān),并設(shè)置第一事務(wù)管 理框架自身的事務(wù)為開啟狀態(tài);所述提交模塊,還用于判斷出滿足提交條件時,將第一系統(tǒng)所處理的邏輯事務(wù)提交至與第 一 系統(tǒng)對應(yīng)的數(shù)據(jù)庫;所述第一系統(tǒng)中的移交模塊,還用于根據(jù)通知模塊提供的設(shè)置信息,將 第二系統(tǒng)所需要的事務(wù)交給第 一 系統(tǒng)進行處理。
8、 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于, 所述第一事務(wù)管理框架中所述通知^f莫塊,還用于將事務(wù)相關(guān)標識設(shè)置為相關(guān)的信息通知給計數(shù);漠塊;所述第一事務(wù)管理框架中還包括計數(shù);f莫塊,用于在事務(wù)相關(guān)標識為相關(guān)時,將事務(wù)計數(shù)器的值加l。
9、 根據(jù)權(quán)利要求7所述的裝置,其特征在于, 所述第一系統(tǒng)中還包括第二判斷模塊,用于判斷自身的事務(wù)處理操作是否正常,若正常,再向 第一事務(wù)管理框架發(fā)送通知,否則通知第一事務(wù)管理框架對所述第一系統(tǒng)所 對應(yīng)的數(shù)據(jù)庫進行回滾操作;所述第一事務(wù)管理框架中還包括回滾模塊,用于根據(jù)接收到的通知,對所述第一系統(tǒng)所對應(yīng)的數(shù)據(jù)庫進 行回滾操作。
10、 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述提交模塊具體包括提交子模塊,用于從連接映射對象中獲取存在的一個連接,提交所述連 接,關(guān)閉所述連接;判斷子模塊,用于判斷所述連接映射對象中是否還存在連接,若是,則 返回提交子模塊,否則,通知設(shè)置子模塊;設(shè)置子模塊,用于將第 一事務(wù)管理框架的事務(wù)狀態(tài)設(shè)置為關(guān)閉。
全文摘要
本發(fā)明公開了一種保證數(shù)據(jù)庫內(nèi)事務(wù)一致的方法及裝置,所述方法包括第一系統(tǒng)接收來自第二系統(tǒng)的業(yè)務(wù)調(diào)用請求,調(diào)用第一事務(wù)管理框架,由所述第一事務(wù)管理框架判斷設(shè)置在第二系統(tǒng)的第二事務(wù)管理框架是否開啟了事務(wù),若是,則設(shè)置事務(wù)相關(guān)標識為相關(guān),并設(shè)置第一事務(wù)管理框架自身的事務(wù)為開啟狀態(tài);第一系統(tǒng)將第二系統(tǒng)所需要的事務(wù)交給第二系統(tǒng)進行處理,并且,第一系統(tǒng)對交給第二系統(tǒng)進行處理的事務(wù)進行相對應(yīng)的邏輯事務(wù)處理;第一系統(tǒng)處理完畢后通知第一事務(wù)管理框架,由第一事務(wù)管理框架判斷出不滿足提交條件后,結(jié)束。應(yīng)用本發(fā)明,在保證了數(shù)據(jù)庫內(nèi)事務(wù)一致的同時,降低了業(yè)務(wù)系統(tǒng)與支撐系統(tǒng)的耦合度,且提高了開發(fā)的靈活性。
文檔編號G06F17/30GK101673275SQ200910013200
公開日2010年3月17日 申請日期2009年8月11日 優(yōu)先權(quán)日2009年8月11日
發(fā)明者尚忠法, 霞 張, 勇 紀, 胡士元 申請人:東軟集團股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
水富县| 西乌| 岳阳市| 碌曲县| 德化县| 基隆市| 灌南县| 醴陵市| 广南县| 米脂县| 屯留县| 奉化市| 鱼台县| 仙游县| 嵊州市| 巴彦县| 海林市| 盖州市| 白水县| 贵阳市| 澄迈县| 内黄县| 吉林省| 哈密市| 绵阳市| 泰安市| 玛沁县| 宜宾市| 蒲江县| 安丘市| 石景山区| 阳原县| 安宁市| 滕州市| 靖边县| 柞水县| 奇台县| 寻乌县| 凤庆县| 肃宁县| 文安县|