本发明涉及电子金融领域,尤其是一种交易冲正方法和系统。
背景技术:
在电子金融领域进行交易操作时,当出现对于交易请求的应答报文超时或其它原因造成交易状态不确定的情况,需要向交易请求接收方发送冲正报文来取消原始的交易请求。这里,冲正是对正交易的反向交易。例如,在终端进行取款交易时,若发送到后台系统的取款请求没有得到响应,则需要针对原始取款请求发送冲正报文来取消该笔交易的流水,从而避免出现多个金融系统间交易状态记录不一致的情况。
为了确保银行核心系统受理的交易能够按需撤销,通常需要针对各类原交易定制各自的冲正交易,发明人在实现冲正过程中发现现有的冲正方法至少存在以下问题:
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)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。