基于JAVAEE的电子账务系统的设计与实现

2017-11-17 07:21李伟镰
电脑与电信 2017年9期
关键词:账务单据逻辑

李伟镰

(中国移动(深圳)有限公司,广东深圳518048)

基于JAVAEE的电子账务系统的设计与实现

李伟镰

(中国移动(深圳)有限公司,广东深圳518048)

本文探讨了建立电子账务系统的必要性,通过对财务报账作业的系统分析,在JAVAEE 的多层架构下,以Struts 作为表现层框架、以基于JDBC设计的可复用的持久层作为数据访问层框架, 并运用多种设计模式设计和实现了一个电子账务系统。该系统能有效支撑企业大量报账业务的快速处理,保障报账单据的规范化、审批流程的电子化和信息传递的自动化,并具有良好的可扩展性、可维护性。

电子账务系统;OA;JAVA EE;MVC;Struts;设计模式

1 引言

近年来,随着国内经济建设的持续发展和行业竞争的加剧,企业正以一种前所未有的热情致力于提高内部的管理素质与工作效率。财务管理工作作为企业管理的核心环节,将会直接影响企业的管理效率与经济效益。在传统的财务报账模式中,报账人要填写纸质单据并找到各级领导进行审批,最后将单据拿到财务部门进行审核。这种报账方式单据填写和业务审批、财务审批效率低下、无法有效进行资金控制、无法提供有价值数据进行资金管理和决策分析,同时财务部门工作量也十分巨大。

为了解决这一问题,本文设计和实现了一个电子账务系统。该系统采用了多种业界成熟的信息技术,参考了文献[1-6]的研究成果,在J2EE的B/S应用构架下,以Struts作为表现层框架、基于JDBC设计了一个可复用的数据持久层框架,并运用多种设计模式利用JAVA语言开发。

该系统提供了报账信息采集、审批、传递和财务审核功能,能有效支撑企业大量报账业务的快速处理,提高财务集中核算和结算的准确性和效率,保障报账单据的规范化、审批流程的电子化和信息传递的自动化,具有较好的可扩展性、相当的易用性和良好的可维护性。

2 主要技术背景

2.1 JAVAEE体系结构

JAVA EE(Java Platform,Enterprise Edition)是一种利用Java平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构,是一个基于组件的体系结构,定义了一套标准来简化多层分布式企业应用程序的开发,它定义了一套标准化的组件,并为这些组件提供了完整的服务。

JAVA EE体系架构将表示逻辑、业务逻辑与数据逻辑相分离,使系统的并行操作、网络计算能力大为提高,系统的整体性能得以优化,并采用先进的软件分层设计思想,支持基于框架的开发,降低开发难度和成本,同时降低组件的耦合度,极大地增强软件的可维护性、可扩展性,满足大型管理信息系统的要求。

2.2 Struts简介

Struts框架基于MVC设计模式,主要由模型(Model)、视图(View)、控制器(Controller)和解析XML文件的工具包四个部分构成,以实现业务代码与视图代码分离,提高应用程序的可扩展性。

Struts框架的核心是一个灵活的控制层,它基于Java Servlets、JavaBeans和XML等一些标准技术。Struts提供了自己的Controller组件,并集成其它技术以提供Model和View。对于View,Struts与JSP、JSTL、JSF、XSLT等表示系统一起工作得很好。对于Model,Struts不仅可与JDBC和EJB这些标准的数据访问技术交互,也可与Hibernate这类第三方程序包交互访问。

3 电子账务系统的分析与设计

3.1 需求分析

系统的目标是根据企业现有的财务管理制度,开发出符合企业应用要求的电子账务系统,以支撑企业财务集中,高效高质地传递核算资料为中心。具体建设目标如下:

(1)报账单据的规范化:通过报账系统对报账单据的内容和格式进行规范,保证财务入账依据的标准化,为财务核算规范奠定基础。

(2)审批流程的电子化:通过电子报账单和相应附件的电子化流转,以及与OA系统的待办事项集成,在保证审批质量的同时加快了审批流程,提高财务核算效率。

(3)信息传递的自动化:建立与ERP系统、合同管理系统、预算管理系统和OA系统的接口,实现信息快速准确传递,提高财务工作效率。

系统应具备相当的可靠性和可用性,足够的可缩放性和良好的可维护性。财务报账只是企业信息管理的其中一个部分,从企业整体发展战略来看,系统还要具备高度的可扩展性,以便于添加新功能或者调整已有功能,随时满足企业的发展和业务扩展的需要。

3.2 架构设计

电子账务系统在整个财务系统中处于财务扩展平台层。作为财务扩展系统的一部分,报账平台系统与已建成或将建设的多个财务系统都存在数据的交互关系。具体体系架构如图1所示:

图1 体系架构图

系统的技术架构基于JAVA EE多层架构构建,其前端Web采用Apache的Struts框架实现,后端采用了多种JAVA EE的设计模式实现。具体技术架构如图2所示:

图2 技术架构图

系统总体上可分为以下五个层次:

(1)客户层:运行在用户机器的浏览器中,处理与用户的交互。

(2)交互层:整个Web层建立在Struts框架基础上,处理用户的请求并作出响应。其中View由JSP/HTML页面组成,其数据表示是ActionForm Bean;Controller由ActionServlet、Struts-config.xml和ActionClass组成,而Model则交由业务逻辑层来实现。

(3)业务逻辑层:完成系统所需的业务,为Web层提供所需的业务方法,主要由JavaBean等Business Objects(BO)构成;业务逻辑层是整个系统的核心部分,系统所需的大部分逻辑代码都放在这一层,该层采用了Façade、Factory等的设计模式。

(4)数据存取层:处于业务逻辑层与后端的DBMS之间,提供业务对象到数据库的映射,对业务逻辑层屏蔽数据库的细节。

(5)资源层:即数据库层,存放电子账务系统的应用数据。

采用多层的体系结构,使应用数据的表示被限制到相应的层内,降低了数据在各层之间的耦合性,提高了整体架构的可维护性和可扩展性。

3.3 功能设计

图3 系统功能

系统功能设计如图3所示。电子账务系统功能架构主要包括:报账单据模板功能、报账单据流程管理、报账通知管理、原始单据管理、预算和额度控制、查询统计、信用报销体系、接口管理和系统管理。其中:

(1)报账单据模板功能包括对如下报账单据功能的要求和定义:差旅费、借款还款、日常及其他费用、采购订单类、非采购订单类、人工成本、税金、预付款、批量报账、计提类费用、支付申请、暂收管理类、收入管理类、资产管理类、工程管理类、资金管理类、其他类。

(2)报账单据流程管理报账单据如下流转流程:录入、提交、审批、拒绝、删除、授权录入和授权审批。

(3)接口管理包括如下系统的接口:ERP系统、银企互联系统、合同管理系统、预算管理系统、OA系统。

(4)报账通知管理包括:待办事项通知和单据状态通知。

(5)原始单据管理包括:原始单据的电子影像信息管理、原始单据的条码管理和跟踪。

(6)预算和额度控制包括:预算控制和额度控制。

(7)查询统计包括:单据查询和统计查询。

(8)信用报销体系。

(9)系统管理包括:用户管理、配置管理、工作流管理、报账模板管理和系统维护。

3.4 业务流程设计

根据3.1节需求分析及3.3功能设计可知,电子账务系统的核心是各种报账单据的流程管理。每一种单据都有自己独立的业务流程。下面以最常用的差旅费报销单为例,设计企业电子账务系统的业务流程。差旅费报销单的业务流程主要包括申请人提出差旅报销申请、人事行政助理审批、上级业务审批、财务会记审批、财务经理审批、财务出纳审批、单据入库结束等步骤。具体业务流程如图4所示。

图4 差旅费报销单业务流程

根据申请人的级别以及申请人提交的申请单所涉及的金额不同,具体的业务审批流程也有所不同:若申请人为部门主管、部门经理、部门总监、总经理,则自动跳过与自己同级别及以下的审批人;若普通员工申请,若申请金额小于等于主管审批额度,则会跳过部门经理、部门总监、总经理,部门主管审批完后直接跳到财务会计;若金额大于主管额度又小于等于经理额度,则跳过部门总监和总经理,以此类推。

4 电子账务系统的实现

下面给出系统在数据持久层、业务逻辑层和表现层中的实现过程。

(1)数据持久层的实现

数据持久层主要采用了Data Access Object模式,访问数据库的细节都放在DAO中,业务层中的Business Object都继承了基类DAOObject,而DAOObject主要定义了query和update方法,分别对应对数据库的查询和更新(包括增加、修改、删除)操作。该层还运用了Service Locator模式来查找数据源,数据源从数据库连接池中取得,ServiceLocator还会把第一次查找到的数据源缓存起来,以提高系统的整体性能。业务对象与数据库的映射主要通过Value Object(VO)模式来实现,系统用到的所有值对象VO都继承ValueObject基类,ValueObject基类中的getValues和setValues方法分别实现了从JavaBean➔数据库和从数据库➔JavaBean的值传递,前者将值对象中的字段值放到一个Properties对象中,从而最终传入到数据库中,而后者则将查找数据库得到的以Properties为参数的值设到值对象中,供系统各个部分调用。

系统用到的所有SQL语句都集中存放在sqlCode.properties文件中,有利于数据库管理员对数据库做配置优化。

该数据持久层与实际业务逻辑无关,可供其他系统进行复用。

(2)业务逻辑层的实现

业务逻辑层负责封装数据持久层提供的数据对象,并为表示层提供功能接口,由业务逻辑对象Business Objects实现。

业务逻辑对象继承I_BusinessObject接口实现业务逻辑,当Service Façade调用具体业务组件时,通过Factory工厂模式创建具体的Business Object。具体的过程是,Façade类通过调用BOFactory类的getBOName方法,根据操作类型取得对应的BusinessObject类名,然后再利用JAVA的反射机制,生成继承了I_BusinessObject接口的业务对象子类,从而执行对应的业务方法。

其中工厂类BOFactory的关键部分是根据操作类型将操作分配给不同的业务对象,所以每一个业务操作operation都要定义好,这些操作类型都放到了Operation.java类中,各个操作根据不同的业务分配一段不同的常量。

本系统主要包括以下Business Objects:EmployeeManager(处理与员工有关的业务操作)、DepartmentManager(处理与部门有关的业务操作)、ApplyManager(处理与申请单据有关的业务操作)、FlowManager(处理与审批流程有关的业务操作)、ApprovalManagerManager(处理与审批有关的业务操作)、RoleManager(处理与角色权限相关的业务操作)。

(3)表现层的实现

系统用户首先通过IE浏览器向系统发出HTTP请求,然后Struts框架中的Controller捕获到发来的请求,然后把请求Dispatch到相应的Action去执行相应的功能,Action会根据请求的类别找到业务逻辑层中的Service Façade,然后调用相应的业务逻辑;同时Controller还会把后台返回的数据放到View(通过JSP页面实现)中以页面的形式返回给用户。Controller是整个Struts的控制中心,访问任何页面、发出的任何请求、返回的数据都首先经过Controller然后才转向相应的部分去执行。而Action则是Struts框架中主要实现的部分,所有的操作代码都放在这里实现,Action类做的工作只有两个,那就是首先从页面收集请求数据,把数据放到AppRequest中去,然后传到后台Business Objects执行相应的业务逻辑,然后把后台返回的数据分发到不同的页面并显示给用户。Struts从页面收集数据和把数据返回页面中的时候会借助ActionForm自动进行数据绑定。

这些数据绑定的配置信息以及控制器如何转发页面这些信息都放在struts-config.xml相关文件中。至于具体的业务逻辑,则是业务逻辑层的任务了。

5 结语

本文给出了基于JAVA EE MVC架构的电子账务系统的总体设计和实现。该系统充分利用了Struts和多种设计模式的优点,基本上解决了电子账务系统的问题与不足。该系统是一个技术结构和业务类型相当复杂的应用系统,具有良好的可伸缩性和可扩展性,运行安全可靠。该系统对企业报账业务的快速处理起到了很好的支撑作用,具有很好的应用前景。

[1] Tal Cohen,Joseph Gil.Aspect J2EE = AOP + J2EE towards an aspect based,programmable and extensible middleware framework. In:Proceedings of ECOOP 2004-Object- Oriented Programming,Oslo,Norway,June 14-18,2004.LNCS 3086/2004,219-243.

[2] Stefan B ⋅ ttcher,Robert Hoeppe. Do we need components for persistent data storage in the Java 2 enterprise environment?In:Proceedings of Objects,Components,Architectures,Services,and Applications for a NetworkedWorld,Erfurt,Germany,October 7-10,2002.LNCS 2591/2003,152-165.

[3] 马丽雪.财务集中化报账平台系统的设计与实现[D].南京:南京大学,2011.

[4] 屈昊.基于J2EE财务管理系统的研究[D].长春:吉林大学,2016.

[5] Deepak Alur,Dan Malks,John Crupi. Core J2EE Patterns[M].Prentice Hall PTR,2003.

[6] E.Gamma,R.Helm,R.Johnson,J.Vlissides.Design Patterns-Elements of Reusable Object- Oriented Software[M]. Addison Wesley,2002.

Design and Implementation of an E-accounting System Based on JAVAEE

Li Weilian
(China Mobile(Shenzhen)Limited,Shenzhen 518048,Guangdong)

The necessity of building an e-accounting system is discussed first.Based on the system analysis of the process of financial reimbursement,an e-accounting system is designed and implemented using Struts as the presentation layer framework and a reusable persistent layer based on JDBC as the data layer framework and using multiple design patterns under JAVA EE architecture.Our system can effectively support a large number of business accounting,ensuring the standardization of reimbursement documents,the electronization of approval process and the automation of information transfer.It is also characterized by its good expansibility and maintainability.

e-accounting system;OA;JAVAEE;MVC;Struts;design pattern

F275

A

1008-6609 (2017) 09-0034-04

李伟镰(1980-),男,广东南海人,硕士,软件工程师,研究方向为计算机网络技术、软件设计开发。

猜你喜欢
账务单据逻辑
刑事印证证明准确达成的逻辑反思
逻辑
创新的逻辑
第三方单据辨析
汇票在信用证项下单据融资中的作用
金融终端应用系统账务风险防范设计
浅谈电力企业电费账务管理工作
女人买买买的神逻辑
重视单据的寄送
浅析融资租赁实务中承租人的账务处理