基于Spring框架的煤炭企业物资管理系统的分析与设计
2012-01-08赵琳娜
张 玮,赵琳娜
(1.华北科技学院教务处,北京 101149;2.华北科技学院外语系,北京 101149)
1 概述
煤炭生产是关系到国家经济、人民生活的重要产业。由于煤炭企业的特殊作业方式,其突发事件多,供应过程中急用料多,给煤炭企业的物资管理带来了很大的困难。煤炭企业的物资管理部门,必须要及时与生产一线进行信息交换,及时将物资消耗信息与生产工程进度、安全、质量等过程的信息进行比较、分析,从而做到生产资料全过程、全方位的管理与监控。如图1所示。
煤炭企业的物资管理系统涉及的部门多、人员广,从物资采购部、物资储存部,一直到一线生产矿井。通过分布式的物资管理系统,能够及时了解煤炭企业内部所有物资的进货渠道、价格、库存、消耗情况。同时,对于超过采购计划的物资、数额以及库存不足的物资能够及时警告,从而在保证企业正常生产的前提下,做到控制成本,减少库存积压。同时,也对物资管理系统的分布性、并行性提出了更高的要求。
鉴于这种复杂性和高要求,本文从煤炭企业物资管理的需求入手,提出了以J2EE技术平台为基础,基于Spring框架为核心的分布式物资管理系统的解决方案。
2 煤炭企业物资管理的需求分析
煤炭企业的物资管理涉及到两个主要环节:生产资料企业外采购、生产资料企业内流动。
图1 煤炭企业物资管理中信息的流动
生产资料企业外采购环节主要由采购部门负责进行。采购部门根据库存量和生产进度,及时、保量的完成一线生产所需的各种原材料,以保证整个企业的正常生产。基本业务流程如图2所示。
图2 生产资料企业外采购流程图
生产资料企业内流动环节主要由仓库部门负责。仓库部门管理整个煤炭企业的物资存储,包括原材料、维修配件、生产消耗品等。物资存储直接面向生产一线,解决企业生产中遇到的物资消耗和物资采购间的不同步,以保证煤炭企业生产的连续性,起到物资需求缓冲带的作用。基本业务流程如图3所示。
图3 生产资料企业内流动流程图
3 架构设计的必要性
在开发高效的分布式物资管理系统的过程中,如何同时满足众多参与者跨越空间、不同时效性的需求,实现他们各自的功能需求,是一个非常现实而棘手的问题。架构设计,就是在系统开发之初,就对可能出现的“不一致”进行评估、分析。力争在项目初期,就对重要的问题、关键的技术进行统一的梳理、规划。随着功能的日益完善,整个系统在保证架构一致的基础上逐步构建。
这一过程与现代高楼的建造颇为类似。工程师们在建造之初,就对整个大楼的地基、框架进行了设计、建造。随后,只需要逐层进行少量的修改,就可以在短时间内完成整个大楼的建造。
4 煤炭企业物资管理系统的架构设计
在煤炭企业物资管理系统中,我们并不采用J2EE平台中传统的EJB容器,而是使用Spring框架支持的“轻量级容器”架构。Spring框架所提供的“轻量级容器”架构,并不要求业务对象必须实现特定的接口,只要是合法的Java对象,都可以成为业务对象,即通常我们所说的POJO(Plain Old Java Object)。这样一来,作为业务对象而言,就可以甩掉沉重的EJB接口,而专注于实现业务功能,从而达到较高的内聚性。系统架构如图4所示。
图4 煤炭企业物资管理系统架构设计图
用户接口层主要是与用户进行交互,提供人机交互界面,可以是应用程序也可以是网页等网络服务。
业务服务层主要是提供具体的业务功能,这些功能主要由业务对象来实现。同时,该层对外提供各种业务服务接口,供用户接口层中的各种对象调用。
数据访问层则封装了数据访问的所有实现,并对外提供数据访问接口。对于数据的使用者而言,数据访问对象是不存在的。数据访问对象根据不同的实际情况,既可以直接操作数据库也可以和对象关系映射层进行交互。
对象关系映射层(即Object-Relation Mapping)则完成了从对象到关系数据中表或字段的转换。这种转换经过配置后是自动完成的,并不需要对象本身进行显示的干预。
5 煤炭企业物资管理系统网络拓扑结构
根据煤炭企业的具体情况,设计其网络结构,如图5所示。
图5 网络结构示意图
采购部门、仓储工作人员使用“客户端”通过Internet或企业内部的Intranet经过防火墙访问业务逻辑服务器,直接调用各种业务对象,完成各种业务操作。
物资供应商则使用“浏览器”经由Internet,并穿过防火墙访问WEB服务器,查询订单、追踪订单结算等情况。
一线的生产矿井工作人员则通过浏览器、客户端,及时了解物资储备情况、本矿井随生产消耗的物资情况,同时可以及时追加物资领取申请。
6 煤炭企业物资管理系统的实施方案
在“轻量级容器”为核心的架构设计中,主要涉及到了两种框架的使用。一个是由Spring提供的分布式对象框架,主要负责各种业务对象的调度,为客户端和WEB服务器提供业务功能;另一个是由Hibernate提供的对象关系映射框架,主要负责将普通的Java对象转换为关系数据库可以识别的表及表间关系,为数据的持久化提供一种透明的实现机制。
6.1 轻量级容器中的分布式对象框架
Spring是目前应用较为广泛的J2EE架构,它可以替代EJB架构作为企业级应用的轻量级解决方案。Spring框架的核心机制,是依赖注入和声明式事务管理,这两项技术可将最普通的Java对象(Plain Old Java Object)直接放到框架中进行管理,从而将被管理对象的侵入程度降到最低。
Spring框架使用HttpInvoker类,将函数的参数和返回值进行序列化,然后利用HTTP协议进行传输,整个过程相对于客户端而言是透明的。分布式处理过程的参与类图,如图6所示。
图6 分布式处理过程的参与类图
DistributedClass:是被分布处理的类,其方法可以被远程调用,简称为“分布类”。
IDistributedClass:Java接口类型,是分布类在“本地”的代理,包含了远程服务方法的完整签名。
DistributedClassClient:是分布类的使用者,简称为“调用者”。
ParameterClass:参数类,在远程调用时需要被序列化,所以必须实现Java中的Serializable接口。
分布式处理过程中异地调用对象的序列图,如图7所示。
6.2 轻量级容器中的对象关系映射
Hibernate框架是近几年逐渐崛起的O/R映射工具。在配置好Hibernate框架后,从对象到关系数据库的映射即可自动完成。除了最基本的增、删、改、查外,Hibernate中也可以很好的管理事务,而无需在程序设计上花费大量的精力。Hibernate框架中,对象关系映射的参与类图,如图8所示。
PersistentClass代表了需要存储在数据库中的类,简称“存储类”。BusinessService代表了需要将存储类的数据写入数据库的业务服务类。PersistentClassList代表了一组“存储里类”,是一个列表或组的概念。DAO 定义了数据访问对象必须实现的方法签名,这些方法均与数据库存储有关。DAOImpl 则具体实现了DAO接口中定义的数据访问方法,封装了访问关系数据库的实际过程。
7 总结
煤炭企业的物资管理具有独特的信息流程,所涉及到的部门、人员众多,因此对煤炭企业的物资管理系统具有更多分布式的要求。我们利用J2EE平台下Spring框架优良的分布式处理机制和Hibernate框架,很好的解决了这一问题,并给出了专门针对煤炭企业物资管理系统的架构实施方案。
图7 分布式处理过程中异地调用对象的序列图
图8 Hibernate框架中对象关系映射的参与类图
架构设计为整个系统的实现提供了一个一致性的基础。在架构设计的基础上,便可以着手针对具体的用户需求实现具体的功能。这些后续的过程,都是在项目架构设计基础上进行的。
[1]O.A.Burkres and J Chen.Luterase.An Execution Environment for Heterogeneous Software System[J].IEEE Computer,1993,26(8):57-69.
[2]孙卫琴.精通Hibernate:Java对象持久化技术详解[M].北京:电子工业出版社,2006.
[3]王琰,朱福海.浅谈煤炭企业供应物资的管理创新[J].煤炭经济研究,2005(3):48-49.
[4]李刚.Spring宝典[M].北京:电子工业出版社,2006.
[5]Rod Johnson,Juergen Hoeller.J2EE Development without EJB[M].JavaEye译.北京:电子工业出版社,2006.
[6]王智利.论物资系统构建[J].物资科技,2004(3):8-10.
[7]A.P.Sheth,J.A.Larson.Federated Database System for Managing Distributed,Heterogeneous and Autonomous Databases[J].ACM Computing Surveys,1990,22(3):183-236.