APP下载

Drools规则引擎在管理会计系统设计中的应用研究

2019-10-23朱龙梅

微型电脑应用 2019年10期
关键词:会计分录会计凭证子系统

朱龙梅

(陕西财经职业技术学院 管理学院, 咸阳 712000)

0 引言

管理会计系统在企业日常经营过程中起到非常重要的作用,将企业的盈亏状况及时反映给企业管理者,从而为合理经营策略的制定提供依据,第三方支付随着电子商务的发展而得到普遍应用,随之而来的是不断增长的日交易订单数,传统的管理会计系统在录入每笔交易的会计凭证和分录时自动化程度较低,难以做到自动化的试算平衡,无法提供业务规则,难以满足不断增长的业务需求,管理会计系统需记录每笔业务资金往来,稳定高效的管理会计系统是目前研究的重点之一[1]。

1 管理会计系统设计

1.1 系统数据处理过程

作为综合应用系统,管理会计系统规模庞大、数据量大,系统设计时需具备一定的扩展性,从而能够更好的满足不断增长的业务需求。本文从满足实际会计业务需求的角度出发,完成系统总体目标的确定,提高系统的性能和安全性,该系统采用B/S架构,用户同管理会计系统的交互通过互联网浏览器(如IE, CHROME, SAFARI等)即可实现,无需安装客户端,用户先向业务系统发起在线交易(通过HTTP/TCP请求),交易系统将数据记录到数据库中,并通过TCP/IP协议向Apache ActiveMQ服务器发送Active MQ消息,数据接收处理子系统对active MQ服务器的消息进行读取后再通过Netty通信框架完成规则引擎子系统接口的调用,在此基础上将交易消息转换成会计凭证后发送给规则引擎子系统进行处理:将会计凭证依据预先定义的会计规则完成相应会计分录的转换,通过JDBC实现规则引擎同Oracle数据库的连接,在同一个数据库事务里记录对应的会计凭证和会计分录,从而保证了数据的完整性和一致性,由业务系统向管理会计系统主动推送数据实现[2]。

对于会计批处理任务则通过ORACLE的DBlink技术实现,管理会计系统的数据库同各业务系统的数据库备库连接,完成各大业务系统历史交易数据的快速读取,然后将其转换为会计凭证对象写入缓存中,系统通过Drools规则引擎子系统接口的调用接收到缓存中的会计凭证对象,规则引擎在数据库中记录每笔会计凭证,再将凭证转换成会计分录并记录到数据库中,会计凭证和会计分录间为一对多的关系。财务人员通过会计规则和后台管理子系统,对会计记账规则使用的基础数据(如如会计科目、银行网关等)进行维护,及时调整规则引擎记账出错的数据。

1.2 系统总体软件架构

为使软件设计便于模块化和标准化操作和管理,系统设计采用了三层架构体系,即数据访问层、业务逻辑层和表现层,系统软件架构具体如图1所示。

图1 管理会计系统软件架构图

(1) 表现层,使用网络浏览器方式进行展示,主要功能在于同各大业务系统间进行交互操作,供外部最终用户使用,如使用网银完成在线付款,用户通过浏览器的使用完成相关业务的浏览和操作。内部员工通过后台管理子系统实现会计科目、银行网关、银行费率等的设置与审核,及查询导出报表等功能,显著提高了系统操作及使用的便利性。

(2) 业务逻辑层,主要负责实现系统的主要业务逻辑,包括数据接收处理、规则引擎、规则管理及会计后台管理四个重要的子系统,并为短信系统、邮件系统提供外在接口,当完成某些具体业务后,例如某个会计日的交易数据通过数据接收处理子系统已经完成会计凭证和会计分录的生成,系统会以短信和邮件的方式通知相关财务人员;或在系统发生错误时及时通知开发人员,各业务系统的交易数据消息的接收则通过ActiveMq消息队列系统实现。通过Memocached缓存系统中相关数据的使用,从而提升了系统性能[3]。

(3) 数据访问层,该层通过JDBC连接到业务逻辑层,使用关系型数据库Oracle对会计系统的基础数据(包括会计规则中涉及的基础数据、会计科目、银行网关等)进行管理,该数据库还负责保存用于会计记账的凭证和分录等数据;不允许测试环境访问生产环境数据以保证交易机密数据的安全,并且需专门的DBA执行数据库中DML、DDL的发布。财务人员和公司管理层具备报表的查询和导出权限(包括利润表、现金流量表、资产负债表等),业务系统与本系统数据库间跨库高速访问则通过使用DBlink技术实现[4]。

业务逻辑模块因使用Drools规则引擎而得以独立出来,实现了在代码层次的松藕合,将xml或drl规则文件在线编辑好即可实现对会计记账规则的新增或修改,避免重新编译代码和新系统版本发布所增加的工作量,各子系统统一采用代码架构层次清晰的Saturn框架,易于维护和扩展,Saturn框架如图2所示。

图2 Saturn框架

2 系统实现

2.1 单笔交易数据的接收与处理

(1) 数据消息接收

数据接收处理子系统使用开源的Apache ActiveMQ完成数据的接收,具体通过在spring配置文件accountfront-biz.xml中添加配置如下:

value =(TP_ SC_ ACCOUNT_ FRONT REQUEST/)

完成上述添加配置后,各业务系统发送到队列TP_ SC—ACCOUNT_ FRONT_ REQUEST的消息通过MessageListener对象即可实现监听和接收[5]。

(2) 数据消息处理

消息队列的消息由MessageListener接收后,需采用统一的JsoN消息格式对消息进行处理,通过JSONObject对象的方法如下:

JSONObject obj=new JSONObject(json);

String value=obj.getString(keyName);

将各业务系统传递来的交易消息进行解析,并将其转换为相应的会计凭证请求对象传递给规则引擎子系统进行相关处理(VoucherFacade接口)。

2.2 批量交易数据的接收与处理

考虑到新增的业务系统中所包含的历史数据也需接入到管理会计系统中,此种情况则需使用批处理任务完成,批处理任务采用多线程方式,首先设定定时调度任务并完成会计日期的选择,通过DBLink技术实现业务系统数据的跨库批量拉取,并直接将交易数据转换为相应的会计凭证,在通过规则引擎子系统接口的调用将其传给管理会计系统完成会计凭证在数据库中的记录,并根据分录产生规则完成会计凭证到会计分录的转换,同样在系统数据库中记入会计分录[6]。

(1) 系统处理批量交易数据的时序图

设定任务调度后,在到达定时任务时间点时,数据接收处理子系统将接收到消息通知,并开始执行批处理任务,从交易系统数据库中的交易数据缓存到到系统内存,将其转换为会计凭证后传送给规则引擎子系统进行模式匹配,即会计凭证与会计分录产生规则的匹配,当每笔凭证的数据字段匹配到一条规则的条件部分后,系统自动将凭证转换成会计分录,完成数据持久层的调用,并在数据库中记录会计凭证和会计分录,从而完成自动记账过程。批量交易数据处理的时序图如图3所示。

图3 批量数据接收处理时序图

(2) 系统处理批量交易数据的类图

定时任务消息侦听对象接口实现了该接口的消息监测方法,接收到任务调度中心的消息后调用规则引擎子系统的RuleEngineServiceProvide接口,再通过会计凭证服务对象的调用,在数据库中写入会计凭证;通过会计分录服务的对象的调用,在数据库中写入会计分录,处理批量数据的类图如图4所示[7]。

图4 批量数据接收类图

3 系统检测

为检测基于Drools规则引擎的管理会计系统的稳定性和实用性,具体检测方法为:通过业务系统将数据传递给本文系统以及接入新系统后批量业务的处理情况进行检测,结果表明能够实现在线修改发生变更后的记账规则,具有较强的扩展性和兼容性;Saturn编程框架的使用使框架结构更加清晰,无需具备专业知识即可操作本系统,系统可以做到实时和自动记账,进而使公司财务成本得以有效降低,在管理会计系统中实现了统一集中各交易系统的数据完成记账过程,避免重复记账问题,使数据的正确性和完整性得以显著提升,系统连续运行了3个月,运行稳定,累计使用人次超过5万,同业务系统对接效果较好,单笔及批量交易数据的接收与处理过程未出现错误,可有效满足企业业务拓展的会计管理需求。

4 总结

本文从管理会计的实际需求出发,主要对管理会计系统进行优化设计,研究了Drools规则引擎在管理会计系统设计中的应用,完成了系统整体软件结构的设计,阐述了主要模块的功能,对单笔及批量交易数据的接收与处理过程进行软件设计,从而实现了会计凭证及会计分录的自动生成和存储过程,实验检测结果表明该系统能够有效的提高会计记账的自动化水平,具有较高的实用性。

猜你喜欢

会计分录会计凭证子系统
不对中转子系统耦合动力学特性研究
合作社林木类生物资产的会计核算
集体资产对外投资的会计处理
合作社专项基金的会计核算
会计凭证电子化下企业内部审计的问题及对策研究
关于会计凭证审核的思考
任务驱动法在《会计凭证》教学中的运用
网络空间供应链中入侵检测及防御子系统的投资机制研究
网络空间供应链中入侵检测及防御子系统的投资机制研究
一种基于NB-IoT的公路雾灯自动指示系统