本发明涉及计算机技术领域,尤其涉及一种业务处理方法和装置。
背景技术:
随着业务的扩展,业务量越来越大,批量业务处理日趋多见,由于一些因素影响可能导致对一些业务记录的业务处理失败或异常,现有方法是通过人工干预,或对批量业务记录所在的数据库表频繁扫描,直到未成功的那些业务记录业务处理成功。
以银行为例,银行提供了多种不同的中间业务产品,例如批量代收付业务、批量代扣业务等,其中跨系统转账是这些中间业务产品主要的功能。跨系统转账是指一笔转账业务要在两个或两个以上的系统进行账务处理,转出在第一个系统完成,转入在第二个系统完成,在此过程中双方交易的一致性显得尤为重要。如果有入账失败但是又必须入账的情况,目前的一种方案是由柜员选择入内部账或者更换其他账号入账,但是由于批量处理往往有很多笔合约,人工处理的工作量非常大;另一种方案定时扫描明细登记簿(正交易所在的数据表)直到失败的交易入账处理成功,而频繁扫描明细登记簿会导致明细登记簿中正交易(首次进行的交易)的处理受到影响。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
人工干预导致业务流程周期延长,且批量处理的人工工作量非常大;而对批量业务记录所在的数据库表频繁扫描,由于批量处理体量较大,导致资源占用过多、占用时间过长,还会影响正常业务记录的处理。
技术实现要素:
有鉴于此,本发明实施例提供一种业务处理方法和装置,能够避免业务流程周期延长,减少人工干预,从而减少人工工作量,解决资源占用过多、占用时间过长的问题,并且在对业务处理失败或异常的业务记录扫描时,不会影响正常业务记录的处理,还可根据业务处理的实际情况动态设定扫描的时间间隔,提高处理效率,此外避免同一业务记录无限次数的处理,防止浪费资源。
为实现上述目的,根据本发明实施例的一个方面,提供了一种业务处理方法。
一种业务处理方法,包括:对第一数据表中的业务记录进行业务处理,所述第一数据表中的业务记录是从接收的业务报文中解析得到的;将所述第一数据表中所述业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描所述第二数据表,并对所述第二数据表中符合重试条件的业务记录重试所述业务处理。
可选地,将所述第一数据表中所述业务处理未成功的业务记录插入第二数据表的步骤之后,还包括:将插入的业务记录的状态置为待处理;所述对所述第二数据表中符合重试条件的业务记录重试所述业务处理,包括:根据所述第二数据表中状态为待处理的业务记录生成待处理队列;按照所述待处理队列中的业务记录顺序,为所述待处理队列中预设数量的业务记录分配对应的线程,所述预设数量等于线程数;所述线程执行时,判断其对应的业务记录的已重试次数是否小于预设阈值,并在所述已重试次数小于所述预设阈值的情况下,对所述对应的业务记录重试所述业务处理。
可选地,所述线程执行时,判断其对应的业务记录的已重试次数是否小于预设阈值,并在所述已重试次数小于所述预设阈值的情况下,对所述对应的业务记录重试所述业务处理,包括:所述线程执行时,将其对应的业务记录进行特定的状态变更操作,所述特定的状态变更操作包括将状态由待处理变更为处理中;判断所述对应的业务记录进行所述特定的状态变更操作的次数是否小于或等于所述预设阈值,若是,则对所述对应的业务记录重试所述业务处理,其中,如果重试所述业务处理成功,则将所述对应的业务记录的状态置为处理成功,并结束对所述对应的业务记录的业务处理流程;如果重试所述业务处理未成功,则在所述线程执行完毕后,将所述对应的业务记录的状态恢复为待处理。
可选地,还包括:在所述已重试次数大于或等于所述预设阈值,或者所述特定的状态变更操作的次数大于所述预设阈值的情况下,将所述对应的业务记录的状态置为处理失败,并结束对所述对应的业务记录的业务处理流程。
可选地,还包括:定时监测业务处理成功率,并根据所述业务处理成功率动态设定所述最新时间间隔,其中,每次监测到的所述业务处理成功率,根据过去的最近预设时间段内进行所述业务处理的业务记录总数和其中业务处理成功的业务记录数计算得到。
根据本发明实施例的另一方面,提供了一种业务处理装置。
一种业务处理装置,包括:业务处理模块,用于对第一数据表中的业务记录进行业务处理,所述第一数据表中的业务记录是从接收的业务报文中解析得到的;业务处理重试模块,用于将所述第一数据表中所述业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描所述第二数据表,并对所述第二数据表中符合重试条件的业务记录重试所述业务处理。
可选地,所述业务处理重试模块包括状态设置子模块,用于:将插入的业务记录的状态置为待处理;所述业务处理重试模块包括重试执行子模块,用于:根据所述第二数据表中状态为待处理的业务记录生成待处理队列;按照所述待处理队列中的业务记录顺序,为所述待处理队列中预设数量的业务记录分配对应的线程,所述预设数量等于线程数;所述线程执行时,判断其对应的业务记录的已重试次数是否小于预设阈值,并在所述已重试次数小于所述预设阈值的情况下,对所述对应的业务记录重试所述业务处理。
可选地,所述重试执行子模块包括线程执行子单元,用于:所述线程执行时,将其对应的业务记录进行特定的状态变更操作,所述特定的状态变更操作包括将状态由待处理变更为处理中;判断所述对应的业务记录进行所述特定的状态变更操作的次数是否小于或等于所述预设阈值,若是,则对所述对应的业务记录重试所述业务处理,其中,如果重试所述业务处理成功,则将所述对应的业务记录的状态置为处理成功,并结束对所述对应的业务记录的业务处理流程;如果重试所述业务处理未成功,则在所述线程执行完毕后,将所述对应的业务记录的状态恢复为待处理。
可选地,所述线程执行子单元,还用于:在所述已重试次数大于或等于所述预设阈值,或者所述特定的状态变更操作的次数大于所述预设阈值的情况下,将所述对应的业务记录的状态置为处理失败,并结束对所述对应的业务记录的业务处理流程。
可选地,还包括扫描间隔设置模块,用于:定时监测业务处理成功率,并根据所述业务处理成功率动态设定所述最新时间间隔,其中,每次监测到的所述业务处理成功率,根据过去的最近预设时间段内进行所述业务处理的业务记录总数和其中业务处理成功的业务记录数计算得到。
根据本发明实施例的又一方面,提供了一种电子设备。
一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明实施例所提供的业务处理方法。
根据本发明实施例的又一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的业务处理方法。
上述发明中的一个实施例具有如下优点或有益效果:对第一数据表中的业务记录进行业务处理,该第一数据表中的业务记录是从接收的业务报文中解析得到的,将第一数据表中业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描第二数据表,并对第二数据表中符合重试条件的业务记录重试其业务处理。能够避免业务流程周期延长,减少人工干预,从而减少人工工作量,解决资源占用过多、占用时间过长的问题,并且在对业务处理失败或异常的业务记录扫描时,不会影响正常业务记录的处理,还可根据业务处理的实际情况动态设定扫描的时间间隔,提高处理效率,此外避免同一业务记录无限次数的处理,防止浪费资源。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明一个实施例的业务处理方法的主要步骤示意图;
图2是根据本发明一个实施例的账务处理流程示意图;
图3是根据本发明一个实施例的业务处理装置的主要模块示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明一个实施例的业务处理方法的主要步骤示意图。
如图1所示,本发明一个实施例的业务处理方法主要包括如下的步骤s101至步骤s102。
步骤s101:对第一数据表中的业务记录进行业务处理,第一数据表中的业务记录是从接收的业务报文中解析得到的。
步骤s102:将第一数据表中业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描第二数据表,并对第二数据表中符合重试条件的业务记录重试其业务处理。
第一数据表和第二数据表为不同的数据库表。
将第一数据表中业务处理未成功的业务记录插入第二数据表之后,还包括:将插入的业务记录的状态置为待处理。
在一个实施例中,对第二数据表中符合重试条件的业务记录重试其业务处理,包括:根据第二数据表中状态为待处理的业务记录生成待处理队列;按照待处理队列中的业务记录顺序,为待处理队列中预设数量的业务记录分配对应的线程,其中,预设数量等于线程数;线程执行时,判断该线程对应的业务记录的已重试次数是否小于预设阈值,并在已重试次数小于预设阈值的情况下,对对应的业务记录重试业务处理。
在该已重试次数大于或等于预设阈值的情况下,将对应的业务记录的状态置为处理失败,并结束对对应的业务记录的业务处理流程。
在另一个实施例中,对第二数据表中符合重试条件的业务记录重试其业务处理,包括:根据第二数据表中状态为待处理的业务记录生成待处理队列;按照待处理队列中的业务记录顺序,为待处理队列中预设数量的业务记录分配对应的线程,其中,预设数量等于线程数;线程执行时,将该线程对应的业务记录进行特定的状态变更操作,该特定的状态变更操作包括将状态由待处理变更为处理中;判断该对应的业务记录进行特定的状态变更操作的次数是否小于或等于预设阈值,若是,则对对应的业务记录重试业务处理,其中,如果重试业务处理成功,则将对应的业务记录的状态置为处理成功,并结束对对应的业务记录的业务处理流程;如果重试业务处理未成功,则在线程执行完毕后,将对应的业务记录的状态恢复为待处理。
在该特定的状态变更操作的次数大于预设阈值的情况下,将对应的业务记录的状态置为处理失败,并结束对对应的业务记录的业务处理流程。
在一个实施例中,定时监测业务处理成功率,并根据业务处理成功率动态设定最新时间间隔,其中,每次监测到的业务处理成功率,根据过去的最近预设时间段内进行业务处理的业务记录总数和其中业务处理成功的业务记录数计算得到。
下面以银行的账务处理为例,介绍本发明实施例的业务处理方法。在银行的账务处理场景中,上述的业务记录可以为交易记录,业务处理可以为对交易记录的入账处理。
随着银行业务的扩展,批量交易日趋多见,业务量越来越大,不乏大量的跨系统转账业务。例如银行提供了多种不同的中间业务产品,包括批量代收付业务、批量代扣业务等,不同的批量交易中间业务产品的系统架构相似,业务处理流程也相似,其中跨系统转账是这些中间业务产品主要的功能。跨系统转账是指一笔转账业务要在两个或两个以上的系统进行账务处理,转出在第一个系统完成,转入在第二个系统完成。当商业银行系统作为收款方时,中央银行系统发送确认收款报文,收款方必须无条件收款,这时候双方交易的一致性显得尤为重要,因为批量交易不一致会引起大量的人工调账,增加人工和时间成本。
在此业务场景下,中央银行是调用方,商业银行是被调用方。中央银行设有处理中心,由处理中心连接所有的参与者,负责接收、处理和转发各参与者的业务报文,并进行资金轧差清算。参与者是各商业银行,包括收款方商业银行(简称收款行)、付款方商业银行(简称付款行)。
以批量代付来账为例,中央银行处理中心、付款行、收款行之间的交互关系可以为:付款行向处理中心发送批量代付报文,处理中心向付款行返回通用业务回执报文,并向收款行发送收到的批量代付报文。中央银行的处理中心已轧差成功,调用收款行交易作入账处理,但是交易只能成功,也不存在可以冲正的情况,而批量交易本身体量较大,不能无止境的占用资源。
例如,收款行的同城批量交易(包括批量代付退汇来账、批量代收回执入账和批量代扣回执等业务)记录数较多,循环外呼主机(主机指收款行专门负责账务处理的系统)入账的时候,容易因为网络通信问题或其他原因而导致入账失败或未知(未知是指一定时间内未收到任何响应,这种情况下,将主动先置为入账情况未知),在中央银行已轧差的业务场景下,收款行收款必须成功时,如果发生入账失败或未知的情况,则会出现与中央银行不一致的账务交易。现有技术对于账务不一致的批量交易记录有两种处理方式:一是继续外呼直到入账成功,二是直接定义交易落地以等待后续人工干预(落地业务是指手工干预处理的业务,而非系统自动处理入账的业务,通常是落地到账户开户行经过人工干预处理,需要打印凭证),其中第一种方式继续外呼是针对明细登记簿的扫描,频繁扫描明细登记簿中入账未成功的交易记录,直到入账成功,由于入账未成功的交易记录与正交易(首次进行的交易)记录共用同一张数据库表,会一直占用资源,频繁地扫描极可能会影响正常交易的处理,第二种方式会增加人工干预工作量。
根据本发明的一个实施例,对于上述的与中央银行不一致的账务交易,收款行系统可以新建一张一致性表,在外呼主机入账失败或者入账结果未知时,在一致性表插入入账失败或者入账结果未知的交易记录,将插入的交易记录的初始化状态为一致性待处理,处理次数(指已重试次数)为0。同时,收款行系统后台启动定时任务,按时动态设定的最新时间间隔扫描一致性表,查找到状态为一致性待处理且处理次数小于预设的最大允许处理次数(即预设阈值)的交易记录,并组织请求报文外呼主机入账,每外呼一次,处理次数加一。若外呼成功,则将相应的交易记录的状态更新为一致性处理成功;若外呼失败或未知,则继续等待定时任务扫描处理。当定时任务扫描到处理次数等于预设的最大允许处理次数,且状态仍旧为一致性待处理的交易记录时,则直接将该交易记录的状态更新为一致性处理失败,等待后续由人工处理。
本发明实施例可以在不影响正交易的情况下,把明细登记簿中处理失败或未知(或其他入账异常情况)的交易记录插入数据库另一张专门表(即上述的一致性表),以释放资源,并可以机动地调整扫描调度的时间间隔,然后再根据最新时间间隔,处理交易不一致的账务,最大程度地解决由于网络或者通信等其他问题导致的交易不一致的问题,此外,外呼超过一定次数仍失败则不再外呼,避免无止境地外呼而浪费资源。
图2是根据本发明一个实施例的账务处理流程示意图。
如图2所示,本发明一个实施例的账务处理流程包括如下的步骤s201至步骤s210。本账务处理流程由收款行系统(具体可以为收款行系统服务器)执行。
步骤s201:接收中央银行系统的批量代付报文。
批量代付报文是付款行系统发送至中央银行系统的。
步骤s202:解析收到的批量代付报文,将解析得到交易记录插入明细登记簿。
明细登记簿为一张数据库表。插入明细登记簿的交易记录的状态可以设置为入账待处理。
通过解析批量代付报文得到的插入明细登记簿的交易记录为正常交易,其为首次进行的交易,称为正交易。下文的入账失败或异常的待进行一致性处理的交易记录不是正交易。
步骤s203:根据明细登记簿外呼记账,如果入账成功,则执行步骤s204,否则,执行步骤s205。
步骤s204:将明细登记簿中入账成功的交易记录的状态更新为已处理。
步骤s205:将入账失败或异常的交易记录插入一致性表。
一致性表为与明细登记簿不同的另一张数据库表,用于专门记录批量交易不一致(入账失败或异常)的交易记录。插入一致性表的交易记录的状态初始化为一致性待处理,已重试次数初始化为0。
入账异常例如入账情况未知(未知是一定时间内未收到任何响应,可能成功也可能失败)或其他异常情况。
步骤s206:启动定时扫描任务,其中扫描的时间间隔根据主机入账交易成功率机动调整,如果交易记录的状态为一致性待处理且已重试次数小于预设阈值,则执行步骤s208;如果交易记录的状态为一致性待处理且已重试次数大于或等于预设阈值,则执行步骤s207。
主机是指收款行专门的账务处理系统。主机入账交易成功率可以根据过去最近预设时间段内外呼主机记账的交易记录总数和其中入账成功的交易记录数计算得到,具体地,入账交易成功率可以是过去预设时间段内,入账成功的交易记录数与外呼主机记账的交易记录总数的比值。
根据主机入账交易成功率机动调整最新的扫描时间间隔(简称时间间隔),例如,假设最近一段时间内主机入账交易成功率小于设定的某个数值,表示最近主机入账交易成功率较低,则可以将时间间隔设置为一个较大值,相应地,如果主机入账交易成功率上升,则可以将时间间隔设置为一个较小值,其中,上述的较大值、较小值的具体数值可以根据需要定义。
还可以预先设定一个固定时间间隔,当最近一段时间内主机入账交易成功率大于或等于设定的某个数值,则将最新扫描时间间隔设置为该固定时间间隔,当主机入账交易成功率小于该设定的某个数值,则将最新扫描时间间隔从该固定时间间隔调高,具体调整多少可以根据需要设定。
步骤s207:将交易记录的状态置为一致性处理失败。
步骤s208:外呼主机入账。如果入账成功,则执行步骤s210,否则,执行步骤s209。
步骤s209:将交易记录的已重试次数累加1,然后跳转到步骤s206。
步骤s210:将交易记录的状态置为一致性处理成功。
上述流程中,在一定时间内,一致性表中状态为一致性待处理的所有记录将会进入批量一致性处理扫描队列中排队处理。在处理中的线程,其相关记录自动锁定其状态为一致性处理中。线程处理结束后仍状态仍为一致性处理中的交易记录,则自动恢复其状态为一致性待处理。
可以多线程执行对入账失败或异常的交易记录的重试入账处理,重试入账处理也可以称为一致性处理。线程执行时,先对交易记录进行已重试次数的判断,如果已重试次数为空,则初始化为0。若已重试次数大于或等于预设阈值,则置交易记录的状态为一致性处理失败,一致性处理结束。若已重试次数小于预设阈值,则根据交易记录的业务场景不同分别进行相应的账务处理。如果记账成功,则置交易记录状态为一致性处理成功,对该交易记录的一致性处理流程结束;如果记账失败,则恢复交易记录的状态为一致性待处理,以等待下一次数据库扫描处理。
根据本发明实施例处理完一次批量交易即返回响应报文,释放资源,并且机动地调整扫描调度的时间间隔,根据最新的时间间隔扫描一致性表以处理交易不一致的账务,最大程度地解决由于网络或者通信等其他问题导致的交易不一致问题,并且扫描调度任务时与正交易是不同的数据库表,保证对正常批量交易的影响降低到最小,此外,外呼记账有限次,有效地防止浪费资源。无需人工干预过多,克服了现有技术拖慢整个业务流程周期、人工处理工作量大的缺陷。
图3是根据本发明一个实施例的业务处理装置的主要模块示意图。
如图3所示,本发明一个实施例的业务处理装置300主要包括:业务处理模块301、业务处理重试模块302。
业务处理模块301,用于对第一数据表中的业务记录进行业务处理,第一数据表中的业务记录是从接收的业务报文中解析得到的。
业务处理重试模块302,用于将第一数据表中业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描第二数据表,并对第二数据表中符合重试条件的业务记录重试业务处理。
业务处理重试模块302可以包括状态设置子模块,用于:将插入的业务记录的状态置为待处理。
业务处理重试模块302还可以包括重试执行子模块,用于:根据所述第二数据表中状态为待处理的业务记录生成待处理队列;按照待处理队列中的业务记录顺序,为待处理队列中预设数量的业务记录分配对应的线程,该预设数量等于线程数。
重试执行子模块还可以包括线程执行子单元,在一个实施例中,线程执行子单元用于:线程执行时,判断其对应的业务记录的已重试次数是否小于预设阈值,并在已重试次数小于预设阈值的情况下,对对应的业务记录重试业务处理。
线程执行子单元,还用于:在所述已重试次数大于或等于预设阈值的情况下,将该对应的业务记录的状态置为处理失败,并结束对该对应的业务记录的业务处理流程。
在另一个实施例中,线程执行子单元用于:线程执行时,将其对应的业务记录进行特定的状态变更操作,该特定的状态变更操作包括将状态由待处理变更为处理中;判断对应的业务记录进行特定的状态变更操作的次数是否小于或等于预设阈值,若是,则对该对应的业务记录重试业务处理,其中,如果重试业务处理成功,则将该对应的业务记录的状态置为处理成功,并结束对该对应的业务记录的业务处理流程;如果重试业务处理未成功,则在线程执行完毕后,将该对应的业务记录的状态恢复为待处理。
线程执行子单元,还用于:在特定的状态变更操作的次数大于预设阈值的情况下,将该对应的业务记录的状态置为处理失败,并结束对该对应的业务记录的业务处理流程。
业务处理装置300还可以包括扫描间隔设置模块,用于:定时监测业务处理成功率,并根据业务处理成功率动态设定最新时间间隔,其中,每次监测到的业务处理成功率,根据过去的最近预设时间段内进行业务处理的业务记录总数和其中业务处理成功的业务记录数计算得到。
另外,在本发明实施例中所述业务处理装置的具体实施内容,在上面所述业务处理方法中已经详细说明了,故在此重复内容不再说明。
图4示出了可以应用本发明实施例的业务处理方法或业务处理装置的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的交易信息处理请求等数据进行分析等处理,并将处理结果(例如入账信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的业务处理方法一般由服务器405执行,相应地,业务处理装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统500的结构示意图。图5示出的终端设备或服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram503中,还存储有系统500操作所需的各种程序和数据。cpu501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考主要步骤示意图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤示意图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(cpu)501执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
附图中的主要步骤示意图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,主要步骤示意图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或主要步骤示意图中的每个方框、以及框图或主要步骤示意图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括业务处理模块、业务处理重试模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,业务处理模块还可以被描述为“用于对第一数据表中的业务记录进行业务处理的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:对第一数据表中的业务记录进行业务处理,所述第一数据表中的业务记录是从接收的业务报文中解析得到的;将所述第一数据表中所述业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描所述第二数据表,并对所述第二数据表中符合重试条件的业务记录重试所述业务处理。
根据本发明实施例的技术方案,对第一数据表中的业务记录进行业务处理,该第一数据表中的业务记录是从接收的业务报文中解析得到的,将第一数据表中业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描第二数据表,并对第二数据表中符合重试条件的业务记录重试其业务处理。能够避免业务流程周期延长,减少人工干预,从而减少人工工作量,解决资源占用过多、占用时间过长的问题,并且在对业务处理失败或异常的业务记录扫描时,不会影响正常业务记录的处理,还可根据业务处理的实际情况动态设定扫描的时间间隔,提高处理效率,此外避免同一业务记录无限次数的处理,防止浪费资源。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
1.一种业务处理方法,其特征在于,包括:
对第一数据表中的业务记录进行业务处理,所述第一数据表中的业务记录是从接收的业务报文中解析得到的;
将所述第一数据表中所述业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描所述第二数据表,并对所述第二数据表中符合重试条件的业务记录重试所述业务处理。
2.根据权利要求1所述的方法,其特征在于,将所述第一数据表中所述业务处理未成功的业务记录插入第二数据表的步骤之后,还包括:将插入的业务记录的状态置为待处理;
所述对所述第二数据表中符合重试条件的业务记录重试所述业务处理,包括:
根据所述第二数据表中状态为待处理的业务记录生成待处理队列;
按照所述待处理队列中的业务记录顺序,为所述待处理队列中预设数量的业务记录分配对应的线程,所述预设数量等于线程数;
所述线程执行时,判断其对应的业务记录的已重试次数是否小于预设阈值,并在所述已重试次数小于所述预设阈值的情况下,对所述对应的业务记录重试所述业务处理。
3.根据权利要求2所述的方法,其特征在于,所述线程执行时,判断其对应的业务记录的已重试次数是否小于预设阈值,并在所述已重试次数小于所述预设阈值的情况下,对所述对应的业务记录重试所述业务处理,包括:
所述线程执行时,将其对应的业务记录进行特定的状态变更操作,所述特定的状态变更操作包括将状态由待处理变更为处理中;
判断所述对应的业务记录进行所述特定的状态变更操作的次数是否小于或等于所述预设阈值,若是,则对所述对应的业务记录重试所述业务处理,其中,如果重试所述业务处理成功,则将所述对应的业务记录的状态置为处理成功,并结束对所述对应的业务记录的业务处理流程;如果重试所述业务处理未成功,则在所述线程执行完毕后,将所述对应的业务记录的状态恢复为待处理。
4.根据权利要求3所述的方法,其特征在于,还包括:在所述已重试次数大于或等于所述预设阈值,或者所述特定的状态变更操作的次数大于所述预设阈值的情况下,将所述对应的业务记录的状态置为处理失败,并结束对所述对应的业务记录的业务处理流程。
5.根据权利要求1所述的方法,其特征在于,还包括:定时监测业务处理成功率,并根据所述业务处理成功率动态设定所述最新时间间隔,其中,每次监测到的所述业务处理成功率,根据过去的最近预设时间段内进行所述业务处理的业务记录总数和其中业务处理成功的业务记录数计算得到。
6.一种业务处理装置,其特征在于,包括:
业务处理模块,用于对第一数据表中的业务记录进行业务处理,所述第一数据表中的业务记录是从接收的业务报文中解析得到的;
业务处理重试模块,用于将所述第一数据表中所述业务处理未成功的业务记录插入第二数据表,按照动态设定的最新时间间隔扫描所述第二数据表,并对所述第二数据表中符合重试条件的业务记录重试所述业务处理。
7.根据权利要求6所述的装置,其特征在于,所述业务处理重试模块包括状态设置子模块,用于:将插入的业务记录的状态置为待处理;
所述业务处理重试模块包括重试执行子模块,用于:
根据所述第二数据表中状态为待处理的业务记录生成待处理队列;
按照所述待处理队列中的业务记录顺序,为所述待处理队列中预设数量的业务记录分配对应的线程,所述预设数量等于线程数;
所述线程执行时,判断其对应的业务记录的已重试次数是否小于预设阈值,并在所述已重试次数小于所述预设阈值的情况下,对所述对应的业务记录重试所述业务处理。
8.根据权利要求7所述的装置,其特征在于,所述重试执行子模块包括线程执行子单元,用于:
所述线程执行时,将其对应的业务记录进行特定的状态变更操作,所述特定的状态变更操作包括将状态由待处理变更为处理中;
判断所述对应的业务记录进行所述特定的状态变更操作的次数是否小于或等于所述预设阈值,若是,则对所述对应的业务记录重试所述业务处理,其中,如果重试所述业务处理成功,则将所述对应的业务记录的状态置为处理成功,并结束对所述对应的业务记录的业务处理流程;如果重试所述业务处理未成功,则在所述线程执行完毕后,将所述对应的业务记录的状态恢复为待处理。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
技术总结