基于Google云平台的ERP系统的设计与实现
2014-07-24林清滢冯健文陆锡聪
林清滢++冯健文++陆锡聪
摘要:针对传统 ERP 系统不易扩展、重复建设、成本高、难以满足中小型企业需求等问题,设计并提出基于云计算的ERP系统体系结构。并构建Google App Engine(GAE)云平台开发环境,以此实现一个可扩展的、服务可重用的、按需付费的、低成本的云计算ERP系统,从而满足中小型企业的信息化需求。
关键词:Google App Engine;云计算;ERP
中图分类号:TP311.5 文献标识码:A 文章编号:1009-3044(2014)15-3554-04
Design and Implementation of ERP System Based on Google Cloud Platform
LIN Qing-ying, FENG Jian-wen, LU Xi-cong
(Department of Computer Science and Engineering,Hanshan Normal College,Chaozhou 521041,China)
Abstract: In order to solve the problems of the traditional ERP system on difficult to extend, redundant construction, high cost, not suitable for the small and medium-sized enterprises, designs and proposes the ERP system architecture based on cloud computing. By building a cloud platform development environment of Google App Engine to implement scalable, reusable, pay-for-use, low cost ERP system of cloud computing. To meet the small and medium-sized enterprises information needs.
Key words: Google App Engine; cloud computing; ERP
目前,当云计算从最初的技术理念到技术融合创新,最后到商业运营成功时,基于云计算的ERP系统建设显然已成为企业追求的方向。实际上,从云计算服务模式来看,云计算ERP系统的建设应该是基于IaaS(Infrastructure as a Service,基础设施即服务)、然后在PaaS(Platform as a Service,平台即服务)平台上而开发出的SaaS软件系统,这种软件模式,可以满足中小型企业快速构建、重用原有 IT 资源、数据共享和按需付费的需求[1]。因此,该文利用 Google App Engining 云平台设计与实现一个可扩展、可重用、可持续性、即时提供、低成本的云计算 ERP系统。
Google 公司是目前最大的云计算服务提供商,从云计算服务的分类来看,其推出的Google App Engine(GAE)属于云计算体系中的 PaaS(Platform as a Service,平台即服务)层,主要是向用户提供了一个有限免费的“运行时环境”云计算平台,允许用户将应用系统“寄存”在 Google 的服务器上,并充分利用 Google 基础架构提供的云计算能力[2]。通过使用 GAE,开发人员可以在Google 的服务器上运行和维护ERP应用程序,并且应用程序可根据访问量和数据存储需要的增长轻松进行扩展。GAE包括分布式处理技术MapReduce、分布式文件系统GFS(Google File System)和分布式数据库BigTable,这三大部分构成了在Google云平台上实现云计算服务的基础[3,4]。
1 云计算ERP系统的设计
根据文献[5]中提出的云计算技术体系结构,提出了基于Google云平台ERP系统的体系结构,如图 1 所示。
表现层:表现层是直接表现给用户使用的,主要为用户提供友好的输入输出界面,使用户体验比较好的人机交互。可以通过业务逻辑功能的划分,根据不同用户所分配的不同权限生成个性化的操作界面。
服务发布层:通过该层,实现各种业务逻辑以Web服务的形式发布。发布时,该层通过服务总线发布到UDDI服务注册中心;然后服务请求者,通过服务总线到UDDI服务注册中心查找所需的服务,根据服务总线返回的查询结果绑定并调用该服务[6-7]。
业务逻辑层:通过该层,把云计算ERP系统的业务逻辑按照业务维度划分,将企业的业务逻辑封装成规范的服务组件。包括销售服务、采购服务、生产服务、库存服务、人力资源服务、财务服务等各种业务逻辑服务组件[8]。这种设计模式,有利于用户根据实际需求,按需使用ERP系统中的各种业务逻辑。
数据访问层:通过该层,封装了对数据表中数据的增加、删除、修改、查询等操作。避免了对数据库的直接存取和频繁操作。此外,由于GAE使用的BigTable数据库,实际上它并不是我们常用的关系型数据库,而是称为“数据存储区”(Datastore),Datastore与传统关系型数据库不同,因此,在对数据表中的数据进行操作之前,需要对数据库中的每个表都映射为一个实体类。
数据层:按照GAE所使用的Datastore形式,存储系统所有的数据信息。
2 云计算ERP系统的实现
2.1 GAE云平台的搭建和部署
由于GAE支持Java语言,通过GAE的Java运行时环境,开发人员可以使用标准Java技术构建应用程序。因此,在Eclipse上搭建Google App Engine平台,先在本地模拟Google App Engine,调试完善后再将系统部署到GAE云平台上。其具体的环境搭建和部署步骤如下:endprint
1) 安装JDK和Eclipse。
2) 安装Eclipse Google插件。运行 Eclipse 之后,在 Help → Software Updates 中获取 Google App Engine 的插件Google Plugin for Eclipse。
3) 安装 Google App Engine 的 SDK。
4) 在本地机器上开发、调试系统。
5) 申请 GAE 空间。
6) 利用GAE自带的上传工具将系统部署到GAE平台上。
2.2 主要层的实现
1)服务发布层实现
① 服务描述
本文采用Web服务基于XML的WSDL语言描述ERP系统的业务服务,每一个Web服务都封装了一个系统内的业务逻辑。在服务开发时,只需在Eclipse开发环境中导入该服务的XML文档,便可产生一个服务代理类。
② 服务实现
系统整合Apache CXF和Spring框架来完成Web服务的实现。Apache CXF 是一个开源框架,提供了构建和开发 Web 服务的可靠基础架构。而且能提供对WSDL、SOAP、JAX-WS API等Web服务技术的全面支持,可以嵌入到Spring框架中,从而方便开发人员的使用。
2)业务逻辑层实现
业务逻辑层是整个系统架构的关键部分,系统中以Web服务的形式封装了核心业务逻辑功能,从而完成企业的业务流程。业务逻辑层的实现采用了Spring框架,主要用到Spring框架的依赖注入机制(IoC)和AOP技术,通过可配置性文件完成Java对象的自动生成和销毁,并整合数据访问层对事务的管理功能;完成与数据访问层的通信。
下面以库存服务为例,说明在GAE云平台上实现业务逻辑层中的业务逻辑功能的主要代码:
@WebService("endpointIterface=com.jkevin.ioa.service.iservice.IStorehouseService")
public class StorehouseAction {
private IStorehouse sh;
//获取仓库信息列表
public Object[] getStorehouseList(String shName){
Object[] objList=null;
try{
objList=this.sh.getStorehouseList(shName);
}catch(Exception e){
e.printStackTrace();
}return objList;
}//保存仓库信息
public int saveStorehouse(BaseStorehouse storehouse){
int rc=0;
try{
this.sh.saveStorehouse(storehouse);
}catch (Exception e){
rc=-1;
e.printStackTrace();
}return rc;
}……}
3) 数据访问层实现
由于GAE提供了一个强大的分布式数据存储服务Datastore,Datastore是基于Google的Bigtable技术构建。Datastore与传统关系数据库不同,Datastore中存储的数据对象叫做实体(Entity),每个实体都可以拥有一个或多个属性。因此数据库中的每个表都映射为一个实体类,表内的字段代表这个实体类的属性。
例如:
@PersistenceCapable(identityType=IdentityType.APPLICATION, detachable="true")
public class BaseStorehouse {
@PrimaryKey
@Persistent(valueStrategy=GeneratorStrategy.IDENTITY)
private String storehouseid; //仓库ID
@Persistent
private String storehousename; //仓库名称
@Persistent
private String adminname; //仓库管理员名称
@Persistent
private String tel; //联系电话
@Persistent
private String remark; //备注
……}
GAE支持JDO(Java Data Objects)和JPA(Java Persistence API)的标准对数据库进行操作,该文使用JPA方式。因为是基于POJO封装的,所以基本上不支持利用数据做关联查询,或者更加复杂的存储过程、触发器等。如果数据库表是关联关系的,一般采用Java类的嵌套关系来实现。另外,应用程序与Datastore进行交互,包括实例化对象、更新对象、取出以及查询对象等,JPA提供了EntityManagerFactory来获取EntityManage类的实例来实现的。为了节省内存和时间,系统中采用单态模式来获取数据对象,因此设计了EMF类来实现,然后与Datastore进行交互,完成添加实体对象、更新对象、取出以及查询对象等。主要代码如下:endprint
public class EMF {
private final static EntityManagerFactory emfInstance =Persistence.createEntityManagerFactory ("hbase-filesharesys");// hbase-filesharesys是指persistence.xml文件中的配置集的名称
public static EntityManagerFactory getInstance() {
return emfInstance;
}}
然后通过EMF.getInstance().createEntityManager()创建完实体对象后,就可以将映射的实体对象写入到Datastore中,主要代码如下:
EntityManager em= EMF.getInstance ().createEntityManager();
EntityTransaction tx=em.getTransaction();
try{
tx.begin();
em.persist(storehouse); // storehouse为BaseStorehouse实体类的对象
t.commit();
}
finally{
if(tx.isActive(){
tx.rollback();
}
em.close();
}……
3 结束语
利用Google云平台提供的云计算技术设计与实现的ERP系统,借助Google云平台所提供的基础服务,方便开发人员的开发和维护,特别是对于数据的分布存储、实时备份,应用的高度集成以及安全可靠等问题,Google云平台提供了有力的支持。该文通过对云计算和面向服务架构的研究,提出了基于Google云平台的ERP系统体系结构,以此设计和实现一个可扩展、服务可重用的、按需付费的针对中小型企业的云计算 ERP 服务系统。
参考文献:
[1] Hirzalla M. Realizing Business Agility Requirements through SOA and Cloud Computing [C].Proceedings of the 2010 18th IEEE International Requirements Engineering Conference, Sydney,NSW. 2010.
[2] BOSS G,MALLADI P,QUAN D,et,al.Cloud computing[EB/OL]. [2007-10-08].http://download. boulder.ibm.com/ibmdl/pub/software/dw/wes/hipods/Cloud_computing_wp_final_8Oct.pdf.
[3] Eugene Ciurana. Developing with Google App Engine[M]. Berkeley:Apress,2009.
[4] Fay Chang, Jeffrey Dean, Sanjay Ghemawat. Bigtable: A Distributed Storage System for Structured Data[J]. ACM Transactions on Computer Systems.2008,26(2):205-218.
[5] 刘鹏.云计算技术原理[EB/OL]. [2009-06-17].http://www.chinacloud.cn/show.aspx?id=1929&cid=12.
[6] Li B. Research on SOA and Component Oriented Technology in Development of Large System[C].Computational Intelligence and Design (ISCID), 2010 International Symposium on IEEE, 2010,1:20-23.
[7] 梁爽.基于 SOA 的云计算框架模型的研究与实现[J].计算机工程与应用,2011,47(35): 92-94.
[8] 修桂华,李玉敏. ERP原理与实践[M].北京:清华大学出版社,2013.endprint