无忧支付网首页
站内搜索
您当前的位置:主页 > 相关文档 >

非银支付机构账务系统的技术实现

添加时间:2022-06-18

  1、数据定义

  从数据的角度来看账务 系统与其他系统没什么区别,存储的也是数据,只不过存储的是账务相关的数据,将按会计科目分类存储。

  账务核心主要有4张表:分录流水、分户账、明细账、总账。

  (1)分录流水是记账的凭证,记录每笔资金活动的来龙去脉,具体字段如表1所示。

表1

表1

  交易编码包含以下类型,如表2所示。

表2

表2

续表

续表

  (2)分户账记录账户的余额,有用户分户账、商户分户账、贷款分户账、内部分户账等,具体字段如表3所示。

表3

表3

  (3)总账分为日总账和周期总账,日总账每日生成,周期总账由明末、季末、半年末、年末生成,记录每个科目的期末余额和本期借、贷发生额。具体业务要素如表4所示。

表4

续表

续表

  (4)明细账记录每个账户对应余额的变化,具体的业务要素如表5所示。

表5

表5

  其中,支付状态如表6所示。

表6

表6

  账户类型如表7所示。

表7

表7

  当一笔支付业务发生时,首先会生成分录流水,然后驱动对应账户余额改变,在账户余额改变后,再生成明细账。

  日终时账务系统根据分录流水生成总账,根据业务需要,也可以先修改账户余额,然后异步生成分录流水,但无论是先生成会计分录,还是异步生成会计分录,都要保证分录流水与分户账余额的一致性,通过对日终账务系统的检查来保证账目的准确性。

  2、技术实现之规则引擎

  在非银支付机构系统中,账务系统是一个非常繁忙并且数据流巨大的子系统。随着支付机构业务和系统的发展,账务系统面临不同业务场景下繁杂的会计账务规则,在早期的账务系统中仍然需要人工干预并推进记账、核对、核算及报账流程。目前,在非银支付机构的账务系统中会使用大量的会计规则引擎来适应业务多变和业务量快速发展的场景。

  根据账务系统对账场景下的多规则、多计算方案的特点,设计和建立基于规则弓|擎的能灵活变更对账规则的模型及对账解决方案,将业务逻辑同代码实现解耦及使用标准规则描述语言,可以使系统对账效率高、适应性强。

  经过规则弓|擎的大量业务都是按既定的流程和规则运行、决策的,主要用于控制业务流和数据流的导向,以及账务业务风险。

  规则引擎起源于基于规则的专家系统,属于人工智能的范畴,它模仿人的推理方式,使用试探性的方法进行推理,并使用人能理解的术语解释和证明它的推理结论并进行流程引导。

  开源的规则弓|擎选型有Drools、Easy Rules、Mandarax、 IBMILOG。目前使用最广泛并且与Spring开发框架结合最紧密的是Drools规则引擎。下面以Drools规则弓 |擎为例来构建账务系统对账模块。

  1.Drools介绍

  Drool是基于Charles Forgy的RETE算法,是易于访问企业级策略调整及管理的开源业务规则引擎,并且符合规则引擎的业内标准,有速度快、效率高等特征。

  Drools在开源规则引擎中使用率最广泛,在保险及金融支付行业、政府政务系统、学校考试及气象模拟系统中使用较多。除了技术人员可以使用,非技术类的账务分析师或账务审核人员也可以使用它轻松查看业务规则,从而检验相关流程是否执行了已编码所需的对账核对、核算业务规则。

  Drools的优点如下。

  (1)有非常活跃的社区支持。

  (2)基于Java和XML语言,简单、易用。

  (3)高效的执行速度。

  (4)在Java领域流行,并且与Java Rule Engine API(JSR 94)兼容。

  Drools的相关技术概念如下

  (1)事实(Fact):表示对象之间及对象属性之间的关系。

  (2)规则(rule):是由条件和结论构成的推理语句,一般被表示为“..Then”。 一个规则的if部分被称为LHS,then部分被称为RHS。

  (3)模式(module):指条件(IF)语句表达式。这里的条件可能是由几个更小的条件组成的大条件。

  Droals将事实、规则和模式等概念相互组合并形成规则表达式来完成工作。

  2.Drools与Spring Boo集成

  Drools能与Spring Boot很好地集成,如图1所示是Spring Boot与Drools规则弓|擎整合之后的业务数据流程图1。

图1

图1

  下面以一个简单的例子来说明如何接入规则弓|擎。

  (1)在依赖配置文件pom.xml中增加以下依赖:

代码1

  (2)先定义一个账务记录类:

代码2

代码3

  (3)创建一个规则引擎脚本rule.rle :

代码

  (4)声明规则引擎配置文件:

  (5)创建一 个产品服务类:

代码6

代码7

  (6)获取KieContainer容器实例:

代码8

  通过以上步骤就可以构建一个基于地税和国税计算 账务收付费用的简单示例程序。当然,真实的税务计算有非常多的规则,例如:营业额超过一定金额时,就需要进行不同的税费扣率计算等,这样的多条件判断和计算就非常适合账务系统的规则引擎运算。

  3、技术实现之并行网关

  在支付和账务流程中经常会遇到需要并行处理和并行审批的情况,为了提升账务的流量处理效率,我们可以使用并行网关。

  并行网关(Parall Gateway)能在一个流程里对并发建模。在一个流程模型里引入并发计算的直接方式就是使用并行网关,它允许创建分支(Fork)执行多个路径,或者合并(Join)多个执行的到达路径。

  ·分支(Fork):对并行后的每个外出顺序流都创建一 个并发分支。

  ·合并(Join):所有数据流到达并行网关后,都在此等待并进入分支,在所有进入顺序流的分支都到达以后,流程就会汇聚并通过网关。

  如图2所示模拟了一个网络购物支付流程,其中有4个用户任务,分别是付款、发货、收款、收货,付款和收货的处理人是买家,发货和收款的处理人是卖家。其中就涉及了流程的Fork和Join操作。

图2

图2

  1.BPMN的概念

  谈及并行网关,必定需要先了解BPMN(Business ProcessModeling Notation,业务流程建模与标注),包括这些图元如何组合成一个业务流程图(Business Process Diagram)。BPMN是由图形对象(Graphical Objects)组成的网状图,其中的图形对象包括活动(Activities)和用于定义这些活动执行顺序的流程控制器(FlowControls)。BPMN也是BPM(Business Process Model,业务流程模型)及Workflow的建模语言标准之一,支持提供一个内 部的模型以生成可执行的BPEL.4WS。

  BPMN定义了一个业务流程图(Business Process Diagram),该业务流程图是一个图形化的流程图(Flow Charting),用于创建业务流程操作的图形化模型,便于其他非专业人士使用。

  BPMN的出现,弥补了从业务流程设计到流程开发的间隙,也支持提供一个内部的模型以生成可执行的BPEL 4WS。

  2.Activit项目

  Activiti项目是基于Apache许可的开源BPMN平台,支持新的BPMN 2.0标准,也支持对象管理组(Object Management Group,OMG),可以从头开始构建工作流引擎,也可以发布设计好的流程定义,并允许通过API进行流程调度。

  3.Activiti与Spring Boo集成

  Activiti与Spring Boot可以集成来实现并行网关。下面以一 个简单的例子说明如何接入并行网关引擎。

  (1)在依赖配置文件pom.xml中增加以下依赖:

代码9

  (2)创建业务流程图,可以直接在Eclipse里面使用Activitij插件完成BPMN的业务流程图的绘制,并实现配置类:

代码10

  (3)启动流程:

代码11

  (4)获取工作任务的运行结果:

代码12

关闭

1.点击下面按钮复制微信号

***********

2.打开微信→查找微信号

加为好友 开始支付接入