基于SOA架构的铁路财务会计核算系统的设计与实现
2012-11-29郭爱鲁
郭爱鲁
(铁道部资金清算中心 信息处, 北京 100038)
随着铁路改革进程的不断深化和发展方式的转变,铁路企业财务管理逐步由延续多年的多利益主体财务分配形式转向提升理财分配权限、统筹资金运用、全面预算管理的集团财务管理体系。这对铁路财务会计信息化建设中的重要组成部分“财务会计核算系统”提出了更高的要求:(1)用户由现在的非法人基层运输站段为主体,转向集团和以多种产权形式的母、子公司;(2)用户的需求从侧重基本核算转为侧重集中管理和过程监控,财务应用目的也从替代手工、提高效率转化为业务运作分析和监控。
根据《财务会计管理信息系统专项规划》,财务会计核算系统应确保铁路行业在财务会计上做到“核算精细、监控高效”,全面、真实、准确地反映各级单位生产经营状况,及时发现问题,准确分析预测,为正确决策和有效监管各铁路局、站段等提供一个强有力的支持平台,并为全路财务管理及战略管理等应用打下基础。
在技术层面,需充分考虑铁路企业当前管理模式与铁路全行业计算机硬件、网络环境情况等现实条件,采用适合于目前铁路行业的开发工具、通信机制、后台数据库、运行平台。
为此,在设计新的铁路财务会计核算系统时突破了单一应用程序的传统架构,采用了面向服务的体系结构(SOA)。借助SOA通用、自动集成和高效的特点,重点关注系统中不同业务模块的集成和集团化应用,提升易用性与稳定性,成功实现了账务处理、固资管理、工资管理、应收应付管理、报表处理等子系统的高度集成,并已在铁道行业全面投入使用,取得了较好的经济效益。
1 SOA简介
SOA架构中有3类组件:(1)服务提供者:发布自己的服务,并且对服务请求进行响应;(2)服务注册中心:注册已经发布的服务,对其进行分类,并提供搜索服务;(3)服务请求者:利用服务中心查找所需要的服务,然后使用该服务。各组件互相配合的工作流程如图1。
图1 SOA架构各组件工作流程
SOA架构中有3类操作:(1)发布操作:为了使服务可访问,需要发布服务描述以使服务使用者可以发现它。(2)查找操作:服务请求者定位服务,方法是查询服务注册中心找到满足其标准的服务。(3)绑定操作:在检索到服务描述之后,服务使用者继续根据服务描述中的信息来调用服务。
在SOA中要执行的相关标准包括:Web服务描述语言(WSDL),统一描述、发现和集成(UDDI),简单对象访问协议(SOAP)。WSDL用来描述服务,UDDI用来注册和查找服务,而SOAP作为传输层,用来在使用者和服务提供者之间传送消息。使用者可以在UDDI注册表中查找服务,取得服务的WSDL描述后通过SOAP来调用服务。实际应用中服务调用流程如图2。
图2 服务调用流程
2 系统设计与实现
2.1 系统逻辑架构
本系统采用SOA架构,可在全国铁路部门实现分层部署。除数据库服务器外,应用程序的不同功能单元被设计为不同的服务,存放于应用服务器上。系统架构如图3。
图3 系统架构
2.1.1 客户端展现层
客户端展现层(UI)是客户端的界面展现,使用Portlet方案实现。门户的主体由Master页作为主题的界面样式,Master页也是Portlet的容器,Portlet以用户控件(User Control)、自定义控件(Customer Control)或COM Control组成独立功能的用户界面。
2.1.2 用户界面处理层
用户界面处理层(UIP)是对UI层界面逻辑的组织,以任务和流程来组合一个完整的流程,为简化客户端的逻辑,将其部署到服务端,状态在ASP.NET状态服务器中保存。
2.1.3 调用接口层
调用接口层(CI)是业务服务层(BF)在客户端的调用接口,可理解为BF对象在客户端的代理,负责同服务器进行通信。CI将客户端UIP层的请求进行解析并封装成SOAP业务对象,发送SOAP请求给服务器。
2.1.4 服务端
服务端包括服务接口层(SI)、业务服务层(BF)和业务组件层(BO)。(1)SI是发布在IIS上的业务服务,BF对象通过SI将自身暴露给客户,SI对象和BF对象的接口是一致的。CI对象和SI对象是成对出现、业务无关的服务接口对象,CI是服务端SI的代理,SI是BF的代理,也就是说CI、SI在逻辑上是透明的,对于客户端,就好像直接调BF一样。(2)BF对象是业务组件对象(BO)的组合,是将不同BO按照业务需要进行功能性组合的结果,即展现给用户的业务外观。服务端仅BF对象对于客户端可见。(3)BO对象是具体的业务逻辑组件,其业务粒度较BF对象更细,包含具体业务规则,并负责业务数据持久化,控制事务边界,对客户端不可见。
服务端接收到SOAP请求后,对SOAP封装的业务信息进行解析,根据SI对象解析出的请求信息选择调用适当的BF处理本次业务请求,并将处理结果封装为SOAP格式,返回给CI层。
2.1.5 系统工作流程
当用户开始一项业务时,首先在UI层与系统进行交互;UIP层梳理用户请求,包括用户录入的提报资料和提请的各种申请;CI层将资料和申请解析并封装成SOAP业务对象,发送SOAP请求给服务器;服务器端由SI层接收SOAP请求并解析,根据请求的业务类型选择调用适当的业务服务,比如是否需进行相关的数据库处理流程;处理完成后同样由SI层将处理结果进行SOAP封装后传回CI层。实现了用户体验、应用服务、业务处理模块各自独立,具备易维护、高可用、伸缩性强等特点。
2.2 数据库设计
数据库中主要的信息表如下:
(1)账务余额表:期初余额方向、期初余额、本期借方累计、本期贷方累计、本年借方累计、本年贷方累计、期未余额方向、期未余额等。
(2)凭证主表:凭证主键编号、凭证号即凭证字第号、期间代码、公司信息编码、年份、凭证日期、记账日期、凭证类型代码、参考说明、附件说明等。
(3)凭证子表:凭证主键编号、凭证行项目、公司信息编码、年份、科目代码基础核算单位编号、摘要文本、借贷方向等。
(4)科目余额表:科目代码基础核算单位编号、科目内置代码、年份、公司信息编码、公司科目名称会计科目名称等。
(5)凭证类别表:凭证类别代码、凭证类别名称、简称、模块 、年份标识、一借多贷控制标识,一贷多借控制、打印默认模板、创建日期。
(6)报表任务:账套编码、任务编码、任务名称、应用、任务类别、任务年度、备注、创建时间。
(7)报表主表:账套编码、任务编码、报表编码、报表简码、报表名称、汇总类型、报表类型、金额单位、制定者。
(8)报表行:公司信息码、任务编码、报表编码、期间、系统行、行标、行类型、行数据。
2.3 功能设计
系统功能结构见图4。
图4 系统功能结构图
2.3.1 账务处理
(1)凭证管理:是账务处理的起点,是登记账簿的依据,也是所有数据查询的一个主要来源,凭证管理主要完成对记账凭证的录入、修改、打印、汇总、审核和记账等工作。
(2)账簿管理:用于查询统计各级科目的本期发生额、累计发生额和余额等。传统的总账, 是以总账科目分页设账, 而余额表则可输出某月或某几个月的所有总账科目或明细科目的年初余额、期初余额、本期发生额、期末余额以及本年累计发生额。
(3)辅助核算:用来反映系统中设置辅助核算信息的会计科目对应的辅助核算经济业务发生情况。它相对于科目明细账查询更细致,科目明细账只是反映各级科目的经济业务发生情况,而辅助明细账则反映了科目对应辅助信息的详细情况。
(4)期末处理:将本月的期末余额结转为下月的期初余额,并形成下月的累计发生;本月如果有未记账凭证,未记账凭证所涉及的科目余额不含未记账部分,月份余额结转操作在未结账以前可以进行多次重复操作。系统将根据当前注册日期自动执行月份或年度结转;年度结转要对成本科目清零,科目累计发生清零,结转凭证类别字典,结转辅助账。
(5)基础设置:是账务处理系统中的基础设置,主要是指对会计科目的设置。
2.3.2 报表处理
(1)报表数据:是报表处理的核心功能之一,是基层单位编制决算报表的必要手段。它的主要功能包括:数据生成(由公式形成数据)、录入修改、重设表样和收入报表导入。
(2)报表审核:此功能可以验证取数、计算公式形成的报表数据的正确性,并显示审核结果。
(3)汇总合并:本功能主要是上级单位对所属下级单位报表数据的再处理,主要包括报表数据的汇总和报表数据的舍入。报表的数据汇总是本系统的核心功能之一,利用该功能完成对下属单位报表数据的汇总,生成反映汇总单位整体财务状况的汇总报表。
(4)报表查询:可以实现任意单位的任意报表的简单查询,每打开一张报表就会在窗口下面形成一个新工作表,便于用户在不同表之间进行快速的切换查看。
(5)打印传输:完成已生成报表的打印、导出及上报等功能。
(6)基础定义:完成报表处理需要进行的相关基础设置。
(7)格式定义:提供工具让用户自行设计报表,包括表头和表尾、报表中间的数据类型和显示方式、数据来源、取得公式等。
2.3.3 系统维护
(1)账套管理:创建、删除账套,创建账套包括创建数据库用户,建立数据库结构,导入基础参数;备份、恢复账套数据;维护集团和下级单位的账套关系,为集团财务建立数据访问的链路。
(2)权限设定:增加、删除用户,用户口令管理,用户的停用和启用;增加、删除角色,维护用户角色对应关系;对用户、角色进行功能权限管理;选择数据权限方案,对用户、角色进行数据权限管理。
(3)基础字典维护:定义基础字典数据的编码规则,便于分级统计和管理;定义核算单位字典,设置单位之间的关系;维护会计核算的处理周期,维护会计年度、会计季度和每个会计期间的开始终了日期;设置基准和辅助计量单位,并设置计量单位之间的换算关系;增加删除货币档案,并设置货币档案的汇率信息;设置银行结算方式;维护部门档案,设置部门上下级关系;维护客户/供应商档案;设置辅助核算的项目分类、维护具体的项目对象。
(4)集团控制:维护统一的科目、项目、存货、客户、供应商、会计期间、币种以及计量单位等基础档案、编码规则数据和默认的控制规则(例如是否可修改以及修改的级次或范围);选择字典,控制规则下发到下级单位的账套,覆盖下级单位的基础数据,可采用推、拉方式。
2.4 系统特点
2.4.1 集成性
系统的集成性主要体现在底层技术、物理数据库、基础业务字典、业务功能模块之间、集团单位之间、外部系统接口等方面。系统的集成是实时的,同时也是业务驱动的,这就保证了业务数据在模块间的流转,同时保证实现核算的准确、及时并有很好的持续性,为将来的财务管理系统和财务战略应用打下一个良好的基础。
2.4.2 集团化应用
系统除能满足一般企业的会计核算处理功能以外,还实现从底层应用平台、基础数据结构到业务处理功能的集团化处理能力。包括支持集团的集中会计核算处理、分布式会计核算、跨网的应用查询、集团内部交易处理、远程报账等功能。同时,集团化应用还可以对整个会计核算系统进行统一监控。
2.4.3 易用性与稳定性
系统在打印输出、大规模并发操作、海量数据处理等方面充分考虑现有系统所存在的问题,同时在操作方面借鉴国内外主流商用财会软件的经验,充分保证了操作的便捷和系统的稳定。
2.5 系统实现
系统采用Visual Studio.Net开发,采用C#编程语言和Oracle数据库实现。
3 结束语
本文提出了一个采用SOA体系结构实现铁路财务会计核算系统的方案。本系统采用SOA理念进行设计,具有易维护性、高可用性、和可伸缩性的特点。系统能有效实现铁路财务会计核算各项业务的全过程管理,目前已经在铁道部内全面投入使用,为大型企业财务管理提供及时准确的信息,为提高企业的经济效益作出贡献。
[1]铁道部财务司,铁道部资金清算中心,铁道部信息办,财务管理信息系统专项规划[Z]. 2005.
[2](美)Paul C.Brown SOA实践指南—应用整体架构[M]. 胡键. 北京:机械工业出版社,2009.
[3]Simon Robinson、Christian Nagel. C#高级编程[M]. 李敏波.北京:清华大学出版社,2005.
[4](美)Thomas Erl. SOA服务设计原则[M]. 郭 耀.北京:人民邮电出版社, 2009.
[5]Stewart Fraser、Steven Livingstone . C#XML入门经典[M].毛尧飞,崔 伟. 北京:清华大学出版社, 2003.
[6](美)Thomas Erl.SOA Web Service合约设计与版本化[M].郭 耀. 北京:人民邮电出版社,2010.