具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种文件处理方法,该方法可以包括以下步骤:
步骤101:当监听到当前文件的到达消息时,获取当前文件的第一配置信息。
在实际应用场景中,当前文件的到达消息可以由金融机构向第三方支付平台发送,文件处理方法可以应用于第三方支付平台。当前文件的到达消息中包括当前文件的第一配置信息,通过当前文件的到达消息,可以区分到达的各个文件。
在本发明实施例中,当前文件的到达消息如表1所示。审批通过文件、审批驳回文件、邮寄文件和激活文件为银行发卡交易过程中涉及的四种文件类型,在实际应用场景中,可以以天为周期对文件进行处理,即当天处理前一天到达的文件。因此,在表1中BIZ_DATE对应的value为D-1日期。
当前文件的第一配置信息包括:文件到达日期、文件类型、机构ID和文件工厂代码等。例如,文件1的到达日期为20180708,文件类型为审批通过文件,机构ID为SHBANK。
表1当前文件的到达消息
步骤102:根据当前文件的第一配置信息,确定预设的统计时间段内当前文件所属的业务对应的若干文件是否均到达,如果是,执行步骤103,否则,执行步骤101。
业务对应的若干文件与业务的若干状态相对应,不同的文件属于不同的文件类型。以发卡业务为例,其对应的若干文件可以包括:审批通过文件、审批驳回文件、邮寄文件和激活文件。上述四种类型的文件均到达时,则发卡业务对应的若干文件均到达。
在实际应用场景中,可以根据当前文件的到达日期和当前文件的类型,确定统计时间段内当前文件所属的业务对应的若干文件是否均到达。统计时间段可以为一天、一个月等,可以根据实际业务需求进行设置。
如果业务对应的若干文件均到达则开始进行后续的文件处理,如果没有,则继续监听。
步骤103:根据若干文件的第二配置信息,确定各个文件的处理顺序。
在实际应用场景中,可以同时获取文件的第二配置信息和文件的第一配置信息,当然,也可以依次获取两者。例如,当监听到当前文件的到达消息时,获取所述当前文件的第一配置信息和第二配置信息。
文件的第一配置信息与文件的第二配置信息相同,或者,文件的第一配置信息包括文件的第二配置信息,或者,文件的第二配置信息包括文件的第一配置信息。
例如,文件的第二配置信息包括:文件到达日期、文件类型、机构ID;文件的第一配置信息包括:文件到达日期、文件类型、机构ID和文件工厂代码。
在本发明实施例中,步骤103可以具体包括:根据各个文件的文件类型和预先配置的文件类型与处理顺序的对应关系,确定各个文件的处理顺序。
当业务需求发生变化时,可以通过调整配置的文件类型与处理顺序的对应关系,改变各个文件的处理顺序。
步骤104:根据各个文件的处理顺序,调用业务对应的业务处理装置处理各个文件中的若干交易记录。
每个文件中包括属于一个或多个业务的交易记录。
该方法根据当前文件的第一配置信息确定业务推进所需的若干文件是否全部到达,在确定业务对应的若干文件均到达时,根据当前文件的第二配置信息确定各个文件的处理顺序,并按照该处理顺序处理各个文件中的交易记录。该方法将处理大文件转变为处理多个小文件,减小降低了文件解析或文件拆分的系统代价。
在本发明的一个实施例中,为了避免出现同一个文件被重复处理的情况,在获取当前文件的第一配置信息之后,在根据当前文件的第一配置信息,确定预设的统计时间段内当前文件所属的业务对应的若干文件是否均到达之前,该方法还包括:根据当前文件的第一配置信息,生成当前文件的摘要信息;当已记录的文件的摘要信息中不存在当前文件的摘要信息时,记录当前文件的摘要信息,并执行根据当前文件的第一配置信息,确定预设的统计时间段内当前文件所属的业务对应的若干文件是否均到达。
当前文件的摘要信息中可以包括当前文件的第一配置信息中的全部内容,也可以包括当前文件的第一配置信息中的部分内容。例如,当前文件的摘要信息包括:当前文件的到达日期和当前文件的文件类型;或,当前文件的摘要信息包括:当前文件的到达日期、当前文件的文件类型和机构ID。
表2文件记录表1
文件到达日期 |
文件类型 |
机构ID |
20180808 |
审批通过文件 |
SHBANK |
20180808 |
审批驳回文件 |
SHBANK |
20180808 |
邮寄文件 |
SHBANK |
20180808 |
激活文件 |
SHBANK |
在实际应用场景中,当前文件的摘要信息可以以文件记录表的形式存储,如表2所示。
在本发明的一个实施例中,步骤104具体包括:按照各个所述文件的处理顺序,解析所述若干文件中的目标文件;当目标文件解析成功时,调用业务对应的业务处理装置处理目标文件中的若干交易记录;当存在处理顺序排在目标文件之后的文件时,将处理顺序排在目标文件后一位的文件作为更新后的目标文件执行按照各个所述文件的处理顺序,解析所述若干文件中的目标文件。
在本发明实施例中,按照文件的处理顺序解析处理顺序排在第一位的文件,当解析成功时,调用业务对应的业务处理装置对该文件中的若干交易记录依次进行处理,然后再解析处理顺序排在下一位的文件,以此类推,直至处理完成业务对应的全部交易记录。
例如,业务对应的文件包括文件1、文件2和文件3,处理顺序为文件2、文件1、文件3,则先解析文件2,调用业务处理装置处理文件2中的交易记录,然后解析文件1,调用业务处理装置处理文件1中的交易记录,最后解析文件3,调用业务处理装置处理文件3中的交易记录。
该方法能够降低解析得到的文件对存储资源的占用,同时有序、高效地处理交易记录。
在实际应用场景中,还可以按照各个文件的处理顺序解析各个文件,调用业务对应的业务处理装置处理各个文件中的若干交易记录。
沿用上例,按照处理顺序依次解析文件2、文件1、文件3,调用业务处理装置依次处理文件2中的交易记录、文件1中的交易记录和文件3中的交易记录。
需要说明的是,业务处理装置可以为一个,也可以为多个。例如,不同的业务处理装置可用于处理不同业务类型的业务,例如,业务处理装置1用于处理存款业务,业务处理装置2用于处理贷款业务。此时,当前文件的第一配置信息中还可以包括业务类型等信息,根据当前文件的业务类型确定当前文件对应的业务处理装置。
在本发明的一个实施例中,为了降低单个文件解析失败对整个业务推进过程的影响,该方法还包括:当目标文件解析失败时,根据目标文件生成文件补偿任务;将文件补偿任务发送至异步任务处理装置;当接收到异步任务处理装置针对文件补偿任务的触发时,执行按照各个所述文件的处理顺序,解析所述若干文件中的目标文件。
异步任务处理装置能够重新触发文件解析过程,继续推进业务处理的进度。
在本发明的一个实施例中,调用业务对应的业务处理装置处理目标文件中的若干交易记录,包括:确定各个交易记录的处理顺序;按照各个交易记录的处理顺序,调用业务对应的业务处理装置处理若干交易记录中的目标交易记录;当目标交易记录处理成功、且存在处理顺序排在目标交易记录之后的交易记录时,将处理顺序排在目标交易记录后一位的交易记录作为更新后的目标交易记录执行按照各个交易记录的处理顺序,调用业务对应的业务处理装置处理若干交易记录中的目标交易记录。
与文件的处理过程相似的是,交易记录的处理也可以通过异步任务处理装置重新触发,以保证文件处理过程的顺利推进。
在此情况下,该方法还包括:当目标交易记录处理失败时,根据目标交易记录生成交易记录补偿任务;将交易记录补偿任务发送至异步任务处理装置;当接收到异步任务处理装置针对交易记录补偿任务的触发时,执行按照各个交易记录的处理顺序,调用业务对应的业务处理装置处理若干交易记录中的目标交易记录。
文件补偿任务和交易记录补偿任务可以被发送至同一个异步任务处理装置,也可以被发送至不同的异步任务处理装置。
当单个文件处理失败或单条交易处理失败时,通过异步任务补偿方式能够进行系统的自动补偿,无需人工介入。
如图2所示,本发明实施例提供了一种文件处理引擎,包括:
获取单元201,用于当监听到当前文件的到达消息时,获取当前文件的第一配置信息;
确定单元202,用于根据当前文件的第一配置信息,确定预设的统计时间段内当前文件所属的业务对应的若干文件是否均到达,如果是,根据若干文件的第二配置信息,确定各个文件的处理顺序;
处理单元203,用于根据各个文件的处理顺序,调用业务对应的业务处理装置处理各个文件中的若干交易记录。
如图3所示,在本发明的一个实施例中,该引擎还包括:幂等单元204;
幂等单元204,用于根据当前文件的第一配置信息,生成当前文件的摘要信息;当已记录的文件的摘要信息中不存在当前文件的摘要信息时,记录当前文件的摘要信息,并触发所述确定单元202。
在本发明的一个实施例中,确定单元202,用于根据各个文件的文件类型和预先配置的文件类型与处理顺序的对应关系,确定各个文件的处理顺序。
在本发明的一个实施例中,处理单元203,用于按照各个所述文件的处理顺序,解析所述若干文件中的目标文件;当目标文件解析成功时,调用业务对应的业务处理装置处理目标文件中的若干交易记录;当存在处理顺序排在目标文件之后的文件时,将处理顺序排在目标文件后一位的文件作为更新后的目标文件执行按照各个所述文件的处理顺序,解析所述若干文件中的目标文件。
在本发明的一个实施例中,处理单元203,进一步用于当目标文件解析失败时,根据目标文件生成文件补偿任务;将文件补偿任务发送至异步任务处理装置;当接收到异步任务处理装置针对文件补偿任务的触发时,执行按照各个所述文件的处理顺序,解析所述若干文件中的目标文件。
在本发明的一个实施例中,处理单元203,用于确定各个交易记录的处理顺序;按照各个交易记录的处理顺序,调用业务对应的业务处理装置处理若干交易记录中的目标交易记录;当目标交易记录处理成功、且存在处理顺序排在目标交易记录之后的交易记录时,将处理顺序排在目标交易记录后一位的交易记录作为更新后的目标交易记录执行按照各个交易记录的处理顺序,调用业务对应的业务处理装置处理若干交易记录中的目标交易记录;其中,按照各个交易记录的处理顺序依次处理各个交易记录。
在本发明的一个实施例中,处理单元203,进一步用于当目标交易记录处理失败时,根据目标交易记录生成交易记录补偿任务;将交易记录补偿任务发送至异步任务处理装置;当接收到异步任务处理装置针对交易记录补偿任务的触发时,执行按照各个交易记录的处理顺序,调用业务对应的业务处理装置处理若干交易记录中的目标交易记录。
如图4所示,本发明实施例提供了一种文件处理系统,包括:上述任一实施例的文件处理引擎401、异步任务处理装置402和业务处理装置403。
本发明实施例以图5所示的发卡业务交易流水状态为例,对文件处理方法进行详细的说明,该方法包括:
S1:当监听到当前文件的到达消息时,获取当前文件的第一配置信息。
例如,当前文件的第一配置信息包括:文件类型-审批通过文件,文件到达日期-20180808,机构ID为SHBANK。
S2:根据当前文件的第一配置信息,生成当前文件的摘要信息。
根据文件类型和文件日期,生成当前文件的摘要信息,例如,当前文件的摘要信息为:20180808审批通过文件。
S3:当已记录的文件的摘要信息中不存在当前文件的摘要信息时,记录当前文件的摘要信息。
当文件记录表中不存在当前文件的摘要信息,则将该标文件的摘要信息写入该文件记录表。文件记录表的形式可以参考表2。
S4:根据当前文件的第一配置信息,确定预设的统计时间段内当前文件所属的业务对应的若干文件是否均到达,如果是,执行S5,否则,执行S1。
统计时间段为2018年8月8当天,结合图5中的发卡业务交易流水状态,发卡业务对应的文件包括:审批通过文件、审批驳回文件、邮寄文件和激活文件。
S5:根据各个文件的文件类型和预先配置的文件类型与处理顺序的对应关系,确定各个文件的处理顺序。
例如,文件的处理顺序为:审批通过文件-审批驳回文件-邮寄文件-激活文件。
S6:按照各个所述文件的处理顺序,解析所述若干文件中的目标文件,当目标文件解析成功时,执行S7,否则,执行S11。
S7:确定各个交易记录的处理顺序。
S8:按照各个交易记录的处理顺序,调用业务对应的业务处理装置处理若干交易记录中的目标交易记录,当目标交易记录处理成功时,执行S9,否则,执行S14。
S9:当存在处理顺序排在目标交易记录之后的交易记录时,将处理顺序排在目标交易记录后一位的交易记录作为更新后的目标交易记录执行S8;其中,按照各个交易记录的处理顺序依次处理各个交易记录;当不存在处理顺序排在目标交易记录之后的交易记录时,执行S10。
S10:当存在处理顺序排在目标文件之后的文件时,将处理顺序排在目标文件后一位的文件作为更新后的目标文件执行S6;当不存在处理顺序排在目标文件之后的文件时,终止当前流程。
S11:根据目标文件生成文件补偿任务。
S12:将文件补偿任务发送至异步任务处理装置。
S13:当接收到异步任务处理装置针对文件补偿任务的触发时,执行S6。
S14:根据目标交易记录生成交易记录补偿任务。
S15:将交易记录补偿任务发送至异步任务处理装置;
S16:当接收到异步任务处理装置针对交易记录补偿任务的触发时,执行S8。
表3文件记录表2
文件到达日期 |
文件类型 |
机构ID |
文件状态 |
20180808 |
审批通过文件 |
SHBANK |
I |
20180808 |
审批驳回文件 |
SHBANK |
I |
20180808 |
邮寄文件 |
SHBANK |
I |
20180808 |
激活文件 |
SHBANK |
I |
20180808 |
审批通过文件 |
SHBANK |
P |
20180808 |
审批驳回文件 |
SHBANK |
P |
20180808 |
邮寄文件 |
SHBANK |
P |
20180808 |
激活文件 |
SHBANK |
P |
20180808 |
审批通过文件 |
SHBANK |
S/F |
20180808 |
审批驳回文件 |
SHBANK |
S/F |
20180808 |
邮寄文件 |
SHBANK |
S/F |
20180808 |
激活文件 |
SHBANK |
S/F |
需要说明的是,在文件处理过程中,还可以记录文件状态,该文件状态可以被记录在文件记录表中。如表3所示,文件状态I用于表示文件已到达;文件状态P用于表示文件正在被处理,例如,文件正在被解析;文件状态S用于表示文件处理成功;文件状态F用于表示文件处理失败。
当文件处理过程因意外发生中止时,可以通过文件状态确定后续的文件处理步骤。此时,该方法进一步包括:当接收到中止触发时,根据记录的当前文件状态,处理当前文件。例如,文件1在处理的过程中机器意外重启,由于记录有文件1状态为P,说明文件1处理过程并未完成,则继续处理文件1。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。