CN107492031B - 一种基于函数契约旁路分析的准实时金融系统对账方法 - Google Patents
一种基于函数契约旁路分析的准实时金融系统对账方法 Download PDFInfo
- Publication number
- CN107492031B CN107492031B CN201710547261.9A CN201710547261A CN107492031B CN 107492031 B CN107492031 B CN 107492031B CN 201710547261 A CN201710547261 A CN 201710547261A CN 107492031 B CN107492031 B CN 107492031B
- Authority
- CN
- China
- Prior art keywords
- contract
- function
- bypass
- verification
- rule
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/12—Accounting
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种基于函数契约旁路分析的准实时金融系统对账方法,包括如下步骤:在系统开发阶段产生包含函数契约规则的可执行文件,通过函数注解方式、定义和账务相关的关键函数执行后需要满足的契约,并利用面向方面编程对旁路触发契约验证代码进行编译器织入;在系统运行时,由旁路监听器接受数据,在数据库运行契约验证;当发现契约被违反后,执行补偿规则并报警。本发明在不影响系统运行效率的前提下,使金融系统中错账数据被更加及时的发现,降低因为系统错误造成的经济损失。
Description
技术领域
本发明涉及一种金融系统的账务对账系统实现方法,具体地,涉及到通过定义函数契约,在系统运行时触发对数据的旁路分析,从而对金融系统的账务准确性进行验证的方法。
背景技术
目前的账务类金融系统,采用每日日终跑批方式,对数据库中所有当天发现的交易进行会计对账的方式,保证账务的正确性,该技术的原理是利用会计等式,核对存储在数据库中各会计要素数据是否满足会计规则,从而发现错账,并对错账进行事后处理。错账的原因一般为运行时软件的BUG引起,例如数据库事务未正确执行、高并发情况下对竞争资源的使用不当、逻辑错误等。该方法的局限性主要体现在:时效性低、影响运行时系统性能。
发明内容
针对上述现有技术中的缺陷,本发明要解决的技术问题体现在以下几点:1)采用更细粒度的函数级规则定义,实现局部数据对账;2)采用旁路分析方法,不影响运行时系统性能;3)提高发现错账的时效性,进行及时补偿操作。
针对上述技术问题,本发明提供了一种基于函数契约旁路分析的准实时金融系统对账方法,在程序语言的关键函数中定义契约规则,并在函数运行完成后触发对契约规则的准实时旁路数据分析,能够达到快速发现账务错误并进行补偿行为的功效。
为实现上述目的,本发明是根据以下技术方案实现的:
一种基于函数契约旁路分析的准实时金融系统对账方法,包括如下步骤:
步骤S1:在系统开发阶段产生包含函数契约规则的可执行文件,通过函数注解方式、定义和账务相关的关键函数执行后需要满足的契约,并利用面向方面编程对旁路触发契约验证代码进行编译期织入;
步骤S2:在系统运行时,由旁路监听器接受数据,在数据库从库中运行契约验证;
步骤S3:当发现契约被违反后,执行补偿规则并报警。
上述技术方案中,步骤S1具体包括:
步骤S101:根据业务规则及系统数据模型设计,建立系统核心规则的不变式及识别不变式中变量可能被改变的场景;
步骤S102:在函数上编写注释,注释内容包括契约规则、补偿规则;例如,在虚拟账户充值函数后,对虚拟账户和实体账户数据进行校验的契约为“转入资金和-转出资金和=实体余额”且“余额变动表中,引起余额变动的交易类型为充值,则必须有且仅有一条原交易流水号对应这种余额的变化”;
步骤S103:在程序编译阶段,解析函数注释上的契约规则,转换为可执行的验证脚本;将转换后的契约规则验证脚本、原程序代码、触发旁路验证的客户端代码,通过面向方面编程的编织技术,共同编译成可执行代码,产生可运行的可执行文件。
上述技术方案中,步骤S2具体包括:
步骤S201:系统运行时,首先执行正常业务逻辑函数,数据会被写入数据库主库中,利用数据库自身的数据主从同步技术,将该次操作变动的数据备份到从库中;
步骤S202:当带有契约规则定义的正常业务逻辑函数被执行后,编织到可执行文件中的旁路验证客户端将在正常业务逻辑函数结束时,将函数输出、输出、契约验证脚本、验证失败补偿脚本通过异步通讯的方式发送到旁路分析服务器;
步骤S203:旁路分析服务器的契约监听收到信息后,到数据库从库中获取契约验证需要的数据,并验证契约规则是否被满足;
步骤S204:当发现契约被违反后,执行补偿规则并报警。
由于采用了上述技术方案,本发明的有益效果是:
本发明在不影响系统运行效率的前提下,使金融系统中错账数据被更加及时的发现,降低因为系统错误造成的经济损失。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1为本发明的金融系统对账方法示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
图1为本发明的金融系统对账方法示意图,如图1所示,本发明的一种基于函数契约旁路分析的准实时金融系统对账方法,包括如下步骤:
步骤S1:在系统开发阶段产生包含函数契约规则的可执行文件,通过函数注解方式、定义和账务相关的关键函数执行后需要满足的契约,并利用面向方面编程对旁路触发契约验证代码进行编译器织入;
步骤S2:在系统运行时,由旁路监听器接受数据,在数据库从库中运行契约验证;
步骤S3:当发现契约被违反后,执行补偿规则并报警。
步骤S1具体包括:
步骤S101:根据业务规则及系统数据模型设计,建立系统核心规则的不变式及识别不变式中变量可能被改变的场景;不同的业务,包含不同的规则,大部分情况账务类的规则来自于会计科目的设置及会计公式。
步骤S102:在函数上编写注释,注释内容包括契约规则、补偿规则;契约规则用来验证账务数据的准确性,补偿规则用于契约规范被违反情况下所采取的补救措施。例如,在虚拟账户充值函数后,对虚拟账户和实体账户数据进行校验的契约为“转入资金和-转出资金和=实体余额”且“余额变动表中,引起余额变动的交易类型为充值,则必须有且仅有一条原交易流水号对应这种余额的变化”。补偿规则为“将此笔操作涉及的虚拟账户可用余额减少,将冻结金额增加,并通过短信报警”。
步骤S103:在程序编译阶段,解析函数注释上的契约规则,转换为可执行的验证脚本;将转换后的契约规则验证脚本、原程序代码、触发旁路验证的客户端代码,通过面向方面编程的编织技术,共同编译成可执行代码,产生可运行的可执行文件。
步骤S2具体包括:
步骤S201:系统运行时,首先执行正常业务逻辑函数,数据会被写入数据库主库中,利用数据库自身的数据主从同步技术,将该次操作变动的数据备份到从库中。
步骤S202:当带有契约规则定义的正常业务逻辑函数被执行后,编织到可执行文件中的旁路验证客户端将在正常业务逻辑函数结束时,将函数输出、输出、契约验证脚本、验证失败补偿脚本通过异步通讯的方式发送到旁路分析服务器。
步骤S203:旁路分析服务器的契约监听收到信息后,到数据库从库中获取契约验证需要的数据,并验证契约规则是否被满足。例如,针对用户充值的场景,支付交易的结果由第三方支付通道采用异步通知形式告知账务系统,可能由于网络延迟原因在同一时间针对一个订单通知2次。在更新数据库用户余额字段时,如果未对用户余额记录加锁,会造成重复更新数据问题,使得余额被重复累加。此时,契约监听模块会发现“余额变动表中,引起余额变动的交易类型为充值,则必须有且仅有一条原交易流水号对应这种余额的变化”规则中,“必须有且仅有一条原交易流水号对应这种余额的变化”被违反,从而立即处理补偿规则“对用户账号余额做冻结交由人工处理”,及时避免损失。
步骤S204:当发现契约被违反后,执行补偿规则并报警。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (2)
1.一种基于函数契约旁路分析的准实时金融系统对账方法,其特征在于,包括如下步骤:
步骤S1:在系统开发阶段产生包含函数契约规则的可执行文件,通过函数注解方式、定义和账务相关的关键函数执行后需要满足的契约,并利用面向方面编程对旁路触发契约验证代码进行编译期织入;
步骤S2:在系统运行时,由旁路监听器接受数据,在数据库从库中运行契约验证;
步骤S3:当发现契约被违反后,执行补偿规则并报警;
所述步骤S2具体包括:
步骤S201:系统运行时,首先执行正常业务逻辑函数,数据会被写入数据库主库中,利用数据库自身的数据主从同步技术,将该次操作变动的数据备份到从库中;
步骤S202:当带有契约规则定义的正常业务逻辑函数被执行后,编织到可执行文件中的旁路验证客户端将在正常业务逻辑函数结束时,将函数输出、契约验证脚本、验证失败补偿脚本通过异步通讯的方式发送到旁路分析服务器;
步骤S203:旁路分析服务器的契约监听收到信息后,到数据库从库中获取契约验证需要的数据,并验证契约规则是否被满足。
2.根据权利要求1所述的一种基于函数契约旁路分析的准实时金融系统对账方法,其特征在于,步骤S1具体包括:
步骤S101:根据业务规则及系统数据模型设计,建立系统核心规则的不变式及识别不变式中变量可能被改变的场景;
步骤S102:在函数上编写注释,注释内容包括契约规则、补偿规则;在虚拟账户充值函数后,对虚拟账户和实体账户数据进行校验的契约为“转入资金和-转出资金和=实体余额”且“余额变动表中,引起余额变动的交易类型为充值,则必须有且仅有一条原交易流水号对应这种余额的变化”;
步骤S103:在程序编译阶段,解析函数注释上的契约规则,转换为可执行的验证脚本;将转换后的契约规则验证脚本、原程序代码、触发旁路验证的客户端代码,通过面向方面编程的编织技术,共同编译成可执行代码,产生可运行的可执行文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710547261.9A CN107492031B (zh) | 2017-07-06 | 2017-07-06 | 一种基于函数契约旁路分析的准实时金融系统对账方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710547261.9A CN107492031B (zh) | 2017-07-06 | 2017-07-06 | 一种基于函数契约旁路分析的准实时金融系统对账方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107492031A CN107492031A (zh) | 2017-12-19 |
CN107492031B true CN107492031B (zh) | 2020-05-29 |
Family
ID=60644340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710547261.9A Active CN107492031B (zh) | 2017-07-06 | 2017-07-06 | 一种基于函数契约旁路分析的准实时金融系统对账方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107492031B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108319521A (zh) * | 2018-01-29 | 2018-07-24 | 中国工商银行股份有限公司 | 自动补账处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201150070Y (zh) * | 2007-11-19 | 2008-11-12 | 上海久隆电力科技有限公司 | 集中审计数据采集处理系统 |
CN102129653A (zh) * | 2011-03-01 | 2011-07-20 | 南京审计学院 | 一种基于审计逻辑单元的电子商务审计方法 |
CN103136245A (zh) * | 2011-11-29 | 2013-06-05 | 深圳市腾讯计算机系统有限公司 | 一种虚拟货币余额旁路查询方法及系统 |
CN104021454A (zh) * | 2014-06-23 | 2014-09-03 | 国网山东省电力公司 | 用于集团企业资金账户数据监控的方法及系统 |
CN105894376A (zh) * | 2016-03-07 | 2016-08-24 | 浙江爱贷金融服务外包股份有限公司 | 一种金融账户资金管理系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065280B2 (en) * | 2003-12-17 | 2011-11-22 | International Business Machines Corporation | Method, system and computer program product for real-time data integrity verification |
-
2017
- 2017-07-06 CN CN201710547261.9A patent/CN107492031B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201150070Y (zh) * | 2007-11-19 | 2008-11-12 | 上海久隆电力科技有限公司 | 集中审计数据采集处理系统 |
CN102129653A (zh) * | 2011-03-01 | 2011-07-20 | 南京审计学院 | 一种基于审计逻辑单元的电子商务审计方法 |
CN103136245A (zh) * | 2011-11-29 | 2013-06-05 | 深圳市腾讯计算机系统有限公司 | 一种虚拟货币余额旁路查询方法及系统 |
CN104021454A (zh) * | 2014-06-23 | 2014-09-03 | 国网山东省电力公司 | 用于集团企业资金账户数据监控的方法及系统 |
CN105894376A (zh) * | 2016-03-07 | 2016-08-24 | 浙江爱贷金融服务外包股份有限公司 | 一种金融账户资金管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107492031A (zh) | 2017-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Decan et al. | What do package dependencies tell us about semantic versioning? | |
US11243941B2 (en) | Techniques for generating pre-emptive expectation messages | |
US8799230B2 (en) | Method and system for centralized issue tracking | |
CN113227971A (zh) | 实时应用错误识别和缓解 | |
CN107016029B (zh) | 一种业务数据的处理方法、装置及系统 | |
WO2012052215A1 (en) | Software development | |
CN115409590A (zh) | 一种统一对账方法、装置、设备及存储介质 | |
EP2199905A1 (en) | Lifecycle management and consistency checking of object models using application platform tools | |
CN111125106A (zh) | 一种跑批任务执行方法、装置、服务器和存储介质 | |
US20220405659A1 (en) | Data-driven automated model impact analysis | |
CN107492031B (zh) | 一种基于函数契约旁路分析的准实时金融系统对账方法 | |
CN110618873A (zh) | 一种基于信息系统的数据锁定方法、设备以及系统 | |
CN111339187B (zh) | 基于智能合约的数据处理方法、装置、设备和存储介质 | |
CN110046977B (zh) | 记账方法、对账方法、装置和服务器 | |
CN110580624B (zh) | 链码升级方法及装置 | |
US10528549B2 (en) | Systems and methods for use in loading data based on a hierarchical framework | |
CN112148762A (zh) | 一种实时数据流的统计方法和装置 | |
CN115018621A (zh) | 一种合约变更方法、装置、设备及介质 | |
US11698829B2 (en) | Identifying root causes of software defects | |
CN113239064A (zh) | 一种数据库更新方法、装置、电子设备及存储介质 | |
CN110046877B (zh) | 对账方法和装置、服务器 | |
US9342541B1 (en) | Presentation oriented rules-based technical architecture display framework (PORTRAY) | |
CN112596781A (zh) | 一种业务执行以及业务配置方法及装置 | |
CN112037016A (zh) | 一种业务处理方法、装置及设备 | |
CN110597862A (zh) | 一种基于信息系统的数据录入方法、设备以及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |