APP下载

基于Google云平台的ERP系统的设计与实现

2014-07-24林清滢冯健文陆锡聪

电脑知识与技术 2014年15期
关键词:云计算

林清滢++冯健文++陆锡聪

摘要:针对传统 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

猜你喜欢

云计算
基于云计算的移动学习平台的设计
实验云:理论教学与实验教学深度融合的助推器
云计算中的存储虚拟化技术应用