本發明涉及電子金融領域,尤其是一種交易沖正方法和系統。
背景技術:
在電子金融領域進行交易操作時,當出現對于交易請求的應答報文超時或其它原因造成交易狀態不確定的情況,需要向交易請求接收方發送沖正報文來取消原始的交易請求。這里,沖正是對正交易的反向交易。例如,在終端進行取款交易時,若發送到后臺系統的取款請求沒有得到響應,則需要針對原始取款請求發送沖正報文來取消該筆交易的流水,從而避免出現多個金融系統間交易狀態記錄不一致的情況。
為了確保銀行核心系統受理的交易能夠按需撤銷,通常需要針對各類原交易定制各自的沖正交易,發明人在實現沖正過程中發現現有的沖正方法至少存在以下問題:
1、沖正過程數據無法追溯、沖正結果無法逆轉。
2、隨著業務的發展,沖正定制化過程會越來越復雜,且維護成本也會隨之不斷提升,最終必定出現技術支持無法快速支撐業務發展的局面。
技術實現要素:
本發明的提供了一種交易沖正方法和系統,旨在解決現有沖正過程的結果無法逆轉的缺陷。
為此,本發明提供的交易沖正方法包括以下步驟:
值對象獲取步驟:獲取交易前值對象和交易后值對象,以及當前數據庫值對象;
判斷步驟:根據原表名和表級沖正字段,判斷表控制表信息的表控制表對象和沖正實現類是否存在;
第一主處理步驟:如果所述表控制表對象和沖正實現類存在,則將所述原交易前值、原交易后值和當前數據庫值傳入對應的沖正實現類進行沖正主處理。
根據本發明所述的交易沖正方法,在所述判斷步驟之后,以及所述第一主處理步驟之前,還包括:
沖正前處理步驟:如果所述表控制表對象存在,并且存在沖正前實現類,則將所述交易前值對象、交易后值對象和當前數據庫值對象傳入對應的沖正實現類進行沖正前處理,如果所述沖正前處理成功,則進入所述第一主處理步驟。
根據本發明所述的交易沖正方法,所述沖正前處理步驟之后,以及所述第一主處理步驟之前,還包括:
第二主處理步驟:如果所述表控制表對象存在而所述沖正實現類不存在,則將沖正數據傳入應用平臺的沖正實現方法實現沖正主處理,其中,所述沖正數據包括業務日志對象、原交易操作標志、沖正控制表對象、表實體類、索引類、交易前值對象、交易后值對象、當前數據庫值對象、關鍵字列表、交易舊數據及交易新數據。
根據本發明所述的交易沖正方法,所述值對象獲取步驟還包括:獲取業務日志中的關鍵字列表、數據庫操作標志和索引類;
所述第二主處理步驟中的所述應用平臺的沖正實現方法包括:
操作標志判斷步驟:如果所述操作標志為插入標志,則獲取所述表實體類、交易前值對象、交易后值對象、當前數據庫值對象、關鍵字列表、索引類及沖正控制表對象;
沖正控制字段配置檢查步驟:根據表實體類獲取表字段列表,根據表名和字段級沖正字段獲取沖正控制表信息,如果沖正控制表存在記錄且字段名稱不為空,則移除關鍵字列表中對應的記錄,并進入字段級檢查步驟;
字段級檢查步驟:根據交易前表實體對象、交易后表實體對象、當前數據庫表實體對象以及沖正控制信息中的字段名稱,獲取該字段對應的交易前值對象、交易后值對象、當前數據庫值對象,并且根據所述沖正控制表中的字段變值可沖標志判斷是否允許沖正:
如果字段變值可沖標志為拒沖,則比較交易后值對象和當前數據庫值對象是否一致,如一致,則允許沖正,如不一致,則不允許沖正。
根據本發明所述的交易沖正方法,如果所述字段級檢查步驟判定字段檢查通過,所述第二主處理步驟在所述沖正控制字段配置檢查步驟之后,還包括沖正控制表對象判定步驟,所述沖正控制表對象判定步驟包括以下步驟:
a、如果沖正控制表對象為空,則根據表實體類、唯一索引類、當前數據庫表對象刪除此記錄;
b、如果沖正控制表對象不為空且沖正控制表配置為賬單明細,則根據配置的明細沖正實現類進行處理;
c、如果沖正控制表對象不為空且沖正控制表配置為非賬單明細且沖正控制表配置為允許表記錄刪除,則根據表實體類、唯一索引類、當前數據庫表對象刪除此記錄;
d、如果沖正控制表對象不為空且沖正控制表配置為非賬單明細且沖正控制表配置為不允許表記錄刪除,則根據表實體類、唯一索引類、當前數據庫表對象更新此記錄狀態為刪除。
根據本發明所述的交易沖正方法,所述操作標志判斷步驟還包括:
如果操作標志為刪除標志或者更新數據標志,則不予任何處理;
如果操作標志為多記錄刪除,則根據表實體類和交易前表實體類對象將原記錄插入數據庫表中;
如果操作標志為多記錄更新,則對表的每個字段進行沖正處理流程,如果當前字段沒有配置控制信息,則按默認處理,否則按控制信息處理。
根據本發明所述的交易沖正方法,所述沖正處理流程包括:
根據表實體類獲取表字段列表,根據表名和字段級沖正字段獲取沖正控制表信息,如果沖正控制表存在記錄且字段名稱不為空,則移除關鍵字列表中對應的記錄,并做字段級處理步驟;以及,
字段級處理流程:根據交易前表實體對象、交易后表實體對象、當前數據庫表實體對象以及沖正控制信息中的字段名稱,獲取某個字段的交易前、后、當前數據庫值,結合沖正控制表中的字段變值可沖標志判斷是否允許沖正。
根據本發明所述的交易沖正方法,所述字段變值可沖標志判斷是否允許沖正的步驟包括:
如果字段變值可沖標志為拒沖,則比較交易后值和當前數據庫值,如一致,則允許沖正,如不一致,則不允許沖正;
如果特殊值沖正標志不為空且特殊值沖正列表為空,則提示“在特殊值情況下,未配置特殊值沖正列表”;
如果特殊值沖正標志為“包含時拒沖”且當前數據庫值不為空且在特殊值沖正列表內,則置可沖標志為不可沖;
如果特殊值沖正標志為“不包含時拒沖”,且當前數據庫值為空或不在特殊值沖正列表內,則置可沖標志為不可沖;
如果特殊值沖正標志為“包含時可沖”,且當前數據庫值為空或不在特殊值沖正列表內,則置可沖標志為不可沖;
如果特殊值沖正標志為“不包含時可沖”,且當前數據庫值不為空且在特殊值沖正列表內,則置可沖標志為不可沖。
根據本發明所述的交易沖正方法,在所述第一主處理步驟和第二主處理步驟之后,還包括:
時間戳更新步驟:將當前時間戳更新至表記錄中;
對象更新步驟:如果沖正主處理成功且表控制表對象存在且沖正后實現類存在,則將交易前值對象、交易后值對象、當前數據庫值對象傳入對應的沖正后實現類進行沖正后處理;以及
日志表更新步驟:新交易日志表相關狀態,沖正標志為被沖正,沖正柜員為公共運行區交易柜員,沖正機構為公共運行區交易機構,沖正流水為公共運行區交易流水,沖正日期為公共運行區交易日期。
此外,本發明還提供了一種交易沖正系統,包括一個或多個相互連接的服務器,所述服務器包括:
處理器,適用于實現各指令,以及
存儲設備,適用于存儲多條指令,所述指令適用于由處理器加載并執行以下步驟:
值對象獲取步驟:獲取交易前值對象和交易后值對象,以及當前數據庫值對象;
判斷步驟:根據原表名和表級沖正字段,判斷表控制表信息的表控制表對象和沖正實現類是否存在;
第一主處理步驟:如果所述表控制表對象和沖正實現類存在,則將所述原交易前值、原交易后值和當前數據庫值傳入對應的沖正實現類進行沖正主處理。
本發明的有益效果是:本發明提供的交易沖正方法和系統通過獲取交易前值對象、交易后值對象和當前數據庫值對象,根據原表名和表級沖正字段判斷表控制表信息的表控制對象和沖正實現類是否存在,如果存在則將原交易值對象、交易后值對象和當前數據庫值傳入沖正實現類進行沖正主處理,從而在沖正時僅需根據交易流水,將所有關聯的數據庫操作反向執行一次,即可抹除原交易對業務數據變化產生的影響,并且能夠追溯變化過程,包括明細記錄、數據、操作等。
附圖說明
圖1是本發明第一實施方式提供的交易沖正方法的流程圖;
圖2是本發明第二實施方式提供的交易沖正方法的流程圖;
圖3是本發明第三實施方式提供的交易沖正系統的結構示意圖。
具體實施方式
為了能夠更清楚地理解本發明的上述目的、特征和優點,下面結合附圖和具體實施方式對本發明進行詳細描述。需要說明的是,在不沖突的情況下,本申請的實施方式及實施方式中的特征可以相互組合。
在下面的描述中闡述了很多具體細節以便于充分理解本發明,所描述的實施方式僅僅是本發明一部分實施方式,而不是全部的實施方式。基于本發明中的實施方式,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施方式,都屬于本發明保護的范圍。
除非另有定義,本文所使用的所有的技術和科學術語與屬于本發明的技術領域的技術人員通常理解的含義相同。本文中在本發明的說明書中所使用的術語只是為了描述具體的實施方式的目的,不是旨在于限制本發明。
圖1是本發明第一實施方式提供的交易沖正方法的流程圖。如圖1所示,本實施方式提供的交易沖正方法包括步驟s11~s13。
在步驟s11(值對象獲取步驟)中,獲取交易前值對象和交易后值對象,以及當前數據庫值對象。
在步驟s12(判斷步驟)中,根據原表名和表級沖正字段,判斷表控制表信息的表控制表對象和沖正實現類是否存在。
在步驟s13(第一主處理步驟)中,如果所述表控制表對象和沖正實現類存在,則將所述原交易前值、原交易后值和當前數據庫值傳入對應的沖正實現類進行沖正主處理。
圖2是本發明第二實施方式提供的交易沖正方法的流程圖。本發明交易沖正方法第二實施例是對本發明交易沖正方法第一實施例的進一步擴展,故對與本發明交易沖正方法第一實施例相同的步驟,在此不再贅述。需要說明的是,在本發明的精神范圍內,適用于第一實施方式中的各具體方案也可以相應的適用于第二實施方式中。
本發明交易方法第二實施例包括步驟s21~
在步驟s21(值對象獲取步驟)中,獲取交易前值對象和交易后值對象,以及當前數據庫值對象。本步驟中,所述值對象獲取步驟還可以獲取業務日志中的關鍵字列表、數據庫操作標志和索引類;
在步驟s22(沖正控制字段配置檢查步驟)中,根據表實體類獲取表字段列表,根據表名和字段級沖正字段獲取沖正控制表信息,如果沖正控制表存在記錄且字段名稱不為空,則移除關鍵字列表中對應的記錄,并進入字段級檢查步驟;
在步驟s23(字段級檢查步驟)中,根據交易前表實體對象、交易后表實體對象、當前數據庫表實體對象以及沖正控制信息中的字段名稱,獲取該字段對應的交易前值對象、交易后值對象、當前數據庫值對象,并且根據所述沖正控制表中的字段變值可沖標志判斷是否允許沖正。其中,所述字段變值可沖標志判斷是否允許沖正的步驟包括以下情況:
1)如果字段變值可沖標志為拒沖,則比較交易后值和當前數據庫值,如一致,則允許沖正,如不一致,則不允許沖正;
2)如果特殊值沖正標志不為空且特殊值沖正列表為空,則提示“在特殊值情況下,未配置特殊值沖正列表”;
3)如果特殊值沖正標志為“包含時拒沖”且當前數據庫值不為空且在特殊值沖正列表內,則置可沖標志為不可沖;
4)如果特殊值沖正標志為“不包含時拒沖”,且當前數據庫值為空或不在特殊值沖正列表內,則置可沖標志為不可沖;
5)如果特殊值沖正標志為“包含時可沖”,且當前數據庫值為空或不在特殊值沖正列表內,則置可沖標志為不可沖;
6)如果特殊值沖正標志為“不包含時可沖”,且當前數據庫值不為空且在特殊值沖正列表內,則置可沖標志為不可沖。
在步驟s24(判斷步驟)中,根據原表名和表級沖正字段,判斷表控制表信息的表控制表對象和沖正實現類是否存在;
步驟s25(沖正前處理步驟):如果所述表控制表對象存在,并且存在沖正前實現類,則將所述交易前值對象、交易后值對象和當前數據庫值對象傳入對應的沖正實現類進行沖正前處理,如果所述沖正前處理成功,則進入所述第一主處理步驟,否則進入步驟s26。
步驟s26(第二主處理步驟):如果所述表控制表對象存在而所述沖正實現類不存在,則將沖正數據傳入應用平臺的沖正實現方法實現沖正主處理,其中,所述沖正數據包括業務日志對象、原交易操作標志、沖正控制表對象、表實體類、索引類、交易前值對象、交易后值對象、當前數據庫值對象、關鍵字列表、交易舊數據及交易新數據。其中,本步驟中,所述應用平臺的沖正實現方法包括操作標志判斷步驟。所述操作標志判斷步驟包括以下情形:
1)如果所述操作標志為插入標志,則獲取所述表實體類、交易前值對象、交易后值對象、當前數據庫值對象、關鍵字列表、索引類及沖正控制表對象。此外,所述操作標志判斷步驟還包括:
2)如果操作標志為刪除標志或者更新數據標志,則不予任何處理;
3)如果操作標志為多記錄刪除,則根據表實體類和交易前表實體類對象將原記錄插入數據庫表中;
4)如果操作標志為多記錄更新,則對表的每個字段進行沖正處理流程,如果當前字段沒有配置控制信息,則按默認處理,否則按控制信息處理。其中,所述沖正處理流程包括:
4a)根據表實體類獲取表字段列表,根據表名和字段級沖正字段獲取沖正控制表信息,如果沖正控制表存在記錄且字段名稱不為空,則移除關鍵字列表中對應的記錄,并做字段級處理步驟;以及,
4b)字段級處理流程:根據交易前表實體對象、交易后表實體對象、當前數據庫表實體對象以及沖正控制信息中的字段名稱,獲取某個字段的交易前、后、當前數據庫值,結合沖正控制表中的字段變值可沖標志判斷是否允許沖正。
如果所述步驟s23(字段級檢查步驟)判定字段檢查通過,則所述第二主處理步驟(步驟s26)在所述字段級處理步驟之后,還包括步驟s27(沖正控制表對象判定步驟),所述沖正控制表對象判定步驟包括以下步驟:
a、如果沖正控制表對象為空,則根據表實體類、唯一索引類、當前數據庫表對象刪除此記錄;
b、如果沖正控制表對象不為空且沖正控制表配置為賬單明細,則根據配置的明細沖正實現類進行處理;
c、如果沖正控制表對象不為空且沖正控制表配置為非賬單明細且沖正控制表配置為允許表記錄刪除,則根據表實體類、唯一索引類、當前數據庫表對象刪除此記錄;
d、如果沖正控制表對象不為空且沖正控制表配置為非賬單明細且沖正控制表配置為不允許表記錄刪除,則根據表實體類、唯一索引類、當前數據庫表對象更新此記錄狀態為刪除。
在步驟s28(第一主處理步驟)中,如果所述表控制表對象和沖正實現類存在,則將所述原交易前值、原交易后值和當前數據庫值傳入對應的沖正實現類進行沖正主處理。
本實施方式中,在所述步驟s27(第一主處理步驟)和步驟s26(第二主處理步驟)之后,還包括:
步驟s29(時間戳更新步驟):將當前時間戳更新至表記錄中;
步驟s30(對象更新步驟):如果沖正主處理成功且表控制表對象存在且沖正后實現類存在,則將交易前值對象、交易后值對象、當前數據庫值對象傳入對應的沖正后實現類進行沖正后處理;以及
步驟s31(日志表更新步驟):新交易日志表相關狀態,沖正標志為被沖正,沖正柜員為公共運行區交易柜員,沖正機構為公共運行區交易機構,沖正流水為公共運行區交易流水,沖正日期為公共運行區交易日期。
圖3為本發明提供的可應用上述各實施方式的電子設備的結構示意圖。如圖3所示,沖正系統包括一個或者多個相互連接的服務器10,所述服務器10包括存儲器和處理器11。
存儲器可以包括只讀存儲器12和隨機存取存儲器13,并向處理器提供指令和數據。存儲器的一部分還可以包括非易失性隨機存取存儲器(nvram)。服務器10的各個組件通過總線耦合在一起,其中總線除包括數據總線之外,還可以包括電源總線、控制總線和狀態信號總線等。但是為了清楚說明起見,在圖中將各種總線都標為總線。
存儲器存儲了如下的元素,可執行模塊或者數據結構,或者它們的子集,或者它們的擴展集:
操作指令:包括各種操作指令,用于實現各種操作。
操作系統:包括各種系統程序,用于實現各種基礎業務以及處理基于硬件的任務。
處理器11控制數據交互處理裝置的操作,處理器11還可以稱為cpu(centralprocessingunit,中央處理單元)。處理器可能是一種集成電路芯片,具有信號的處理能力。處理器還可以是通用處理器、數字信號處理器(dsp)、專用集成電路(asic)、現成可編程門陣列(fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。
所述存儲器適用于存儲多條指令,所述指令適用于由處理器11加載并執行以下步驟:
值對象獲取步驟:獲取交易前值對象和交易后值對象,以及當前數據庫值對象;
判斷步驟:根據原表名和表級沖正字段,判斷表控制表信息的表控制表對象和沖正實現類是否存在;
第一主處理步驟:如果所述表控制表對象和沖正實現類存在,則將所述原交易前值、原交易后值和當前數據庫值傳入對應的沖正實現類進行沖正主處理。
本實施方式提供的交易沖正方法和系統通過獲取交易前值對象、交易后值對象和當前數據庫值對象,根據原表名和表級沖正字段判斷表控制表信息的表控制對象和沖正實現類是否存在,如果存在則將原交易值對象、交易后值對象和當前數據庫值傳入沖正實現類進行沖正主處理,從而在沖正時僅需根據交易流水,將所有關聯的數據庫操作反向執行一次,即可抹除原交易對業務數據變化產生的影響,并且能夠追溯變化過程,包括明細記錄、數據、操作等。
在本發明所提供的幾個實施例中,應該理解到,所揭露的設備和方法,可以通過其它的方式實現。例如,以上所描述的設備實施方式僅僅是示意性的。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施方式方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。
所述集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)或處理器(processor)執行本發明各個實施方式所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
以上所述僅為本發明的實施方式,并非因此限制本發明的專利范圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護范圍內。