APP下载

基于云计算SaaS 模式OA 系统的设计与实现*

2014-12-31冀汶莉李向军

西安科技大学学报 2014年5期
关键词:数据模型应用程序短信

冀汶莉,李向军,戴 旭

(1.西安科技大学 通信与信息工程学院,陕西 西安710032;2.杭州市数字城管信息处置中心,浙江 杭州310003)

0 引 言

办公自动化(Office Automation,OA)系统开始于美国,70 年代后期逐步发展成为一门涉及通信、系统科学等多种技术的新型学科[1]。第一代OA系统利用个人电脑上的Office,WPS 等办公软件,实现了办公流程中数据统计和文档写作的电子化。第二代OA 系统引入了协同工作流的概念,利用网络技术基于C/S 结构实现了工作流程自动化。第三代OA 系统是融合信息处理、业务流程和知识管理于一体的基于B/S 结构的网络协同工作阶段[2]。中国办公自动化是80 年代中期才发展起来的,大多提供公文审批、文档存储、管理、查询这些公众化功能,远远不能适应目前可扩展性、可移动性以及企业的多样化的要求。

云计算是随着互联网的发展而出现的一种先进的理念和技术,在Google,IBM,Amazon 等众多著名IT 公司的积极推动下迅速发展[3]。云计算的核心理念是将计算和存储形成大规模资源池,通过云平台的管理和虚拟化技术,使计算资源和存储资源按照用户需求进行弹性伸缩,按需提供服务[4]。SaaS(Software as a Service)软件即服务作为一种新型的软件架构与应用模式,也是云计算所提供的服务之一,近年来得到学术界和产业界的广泛关注。软件开发者可以利用基于云平台的SaaS 模式,给某类用户或组织以服务的方式开发通用或特殊的应用。

目前中小企业都非常重视企业办公自动化的建设和实施。传统B/S 模式的办公自动化软件系统开发成本相对较低,但每个中小企业都需要购置相关的数据库服务器和应用服务器,还需要定期进行应用系统维护,无形中会增加企业的运行成本。对于软件开发公司也需要针对每个客户,耗用人力和物力开发相似的产品。目前随着云计算在企业界的出现和快速发展,以及基于云平台SaaS 软件开发模式的提出,可以更好的解决上述的问题。因此,将OA 系统置于“云”端为众多企业提供服务,是文中探索和实践的方向。由于Google 公司的云平台是目前技术最成熟的公有云平台之一,文中就以Google App Engine 云平台为基础,实现了一个面向中小企业的基于云平台SaaS 模式的OA 系统。

1 Google App Engine 平台的关键技术

Google 云计算平台首先为其著名的搜索引擎提供服务,其次为普通用户提供了一系列基于SaaS 模式的云应用(例如邮件系统、Google 云端文档系统)服务和开发接口。Google 云计算的基础架构包含四个相互独立又紧密结合在一起的系统,包括提供分布式文件管理的文件系统Google File System,Google 提出的特有的Map/Reduce 编程模式,分布式的锁机制Chubby 以及模型简单的大规模分布式数据库BigTable[5]。

1.1 Google App Engine(GAE)

Google 的GAE 平台的服务之一是为开发者提供应用程序托管服务,服务对象是拥有大量并发用户的Web 应用系统。在GAE 上运行的应用程序随着用户人数的增多,GAE 会自动为其分配更多的计算和存储资源,并提供自动管理,应用程序不需要考虑使用资源的分配情况。在GAE 上应用程序所使用的资源包括CPU 使用率、每月存储容量、出入口带宽以及其他特定于App Engine 服务。与Web 托管或自管服务不同的是用户无需按月付费或者预付费,只需要为那些使用到的资源付费。

GAE 可分为3 大块:运行时环境、数据存储区、以及提供的服务。其中与系统开发关系密切的是数据存储区。在GAE 中通过数据存储区对应用系统提供事务的支持,数据存储区在其分布式网络中使用“实体组”实现事务,事务处理单个组中的实体,同一组中的实体存储在一起以提高事务执行效率。在数据存储区中使用开放式并发性控制,应用程序可以在一个事务中执行多个数据存储区操作,这些操作要么全部成功要么全部失败,从而确保了数据的完整性[5-6]。在GAE 中提供了基于消息驱动的服务协调技术,可以让开发者透明的快速实现业务流中不同模块间的互操作。

1.2 基于GAE 的数据存储

1.2.1 BigTable 基本概念

在云环境中也需要某种存储模式来保存虚拟机映像、用户的应用和应用所需的持久化数据,因此在云中也具有数据库的概念。Google 采用Big-Table 作为它的云数据库,BigTable 是“键-值”的NoSQL 结构的数据模型的典型代表,它的首要任务是保证Google 的快速搜索所涉及的海量数据。BigTable 本质上是稀疏的、分布式的、持久化存储的多维度排序Map,它的物理存储模式采用了类似数据结构中B+树索引组织表的模式,称为多维度的分类映射,其中的分支和叶节点可以分布在多台机器上,通过在成千台计算机上分布数据,提供了对PB 级数据的快速访问。由于节点是分布式的,随着树的增长节点会拆分,根据应用需求量获得高伸缩性成为可能[6]。

1.2.2 BigTable 的应用实例

下面是结合文中的开发实例给出的一个完整的BigTable 数据模型,用来描述公文实体数据,如下段(1)所示:

其中table 表示一张表,row 表示表中1 行的数据。title,content,state,realseState,flowId,create-Time,createTime 为该行的列,setting 为列族包括2列:isSendTelephone,isSendMessage,其中每一列保存不同的版本,以时间戳来区分。伴随着行的增多Table 会根据行键自动划分为tablet,这些tablet会分布在不同的计算机上,tablet 中的数据最终会存储到GFS 文件系统中[7]。

2 系统设计

2.1 系统实例简介

本项目以实际A 公司结合多家同等公司的需求为开发背景。A 公司原有的OA 是一个B/S 模式的MIS 系统,但该系统已经不能适应目前的办公需要。例如在公文审批的整个环节中,当有新公文需要处理或者公文处理失败和成功时,没有向相关人员发送任何形式的提醒,公司人员只能频繁的登陆系统查询公文的处理信息,这严重影响了工作效率。该系统也无法扩展移动办公,同时公司需要能在新OA 系统中可以共享某种常用的办公软件(例如电子文档系统)和邮件系统,云平台的出现可以为上述的需求提供一种新的思路。

由于Google 云平台中不但提供开发接口,同时也提供SaaS 模式的Google 文档系统和邮件系统,可以在不增加企业成本的情况下快速创建共享电子文档、电子表格等协同应用。因此本项目以Google 的GAE 为开发平台,设计实现了SaaS 模式的OA 系统。

系统包括公文审批、短信管理、人事管理、公告管理、订餐管理、考勤管理、规章制度管理、分享平台及注册和登录功能,其中公文审批功能包括待审批公文管理、已审批公文管理、创建公文、创建审批流程等功能。在公文审批中将会伴随系统消息,发送邮件提醒,短信发送等子功能。以上功能都可以按照企业需求进行有效组合。系统的功能如图1 所示。

图1 系统功能图Fig.1 System module function frame

2.2 数据模型设计

2.2.1 OA 系统的数据模型

数据模型是对业务数据的抽象化。GOA 项目主要涉及的数据模型有:用户、部门、公文、工作流程、公文处理、工作流-用户、任务、短信、群组、群组-用户、系统消息等。模型如图2 所示。

2.2.2 GAE 中的Datastore 对象

在Google 云平台上开发应用软件,仍然可以采用目前流行的Web 开发方法。但GAE 中数据存储是基于BigTable 设计的,它不是一个关系型的数据库,更像是一个分布式的、分类的哈希表,这种分布式的设计让并行数据以及数据查询非常高效[8-9]。本系统开发的关键问题是如何将数据模型的实体形式对应于云平台的存储形式,也就是数据对象的映射和持久化问题。Google 云平台通过Datastore 对象提供了数据对象的映射和数据持久化的支持。

图2 数据模型图Fig.2 Database model

Datastore 中的对象称为实体。数据存储区中的每个实体使用键来唯一地标识该实体。每个实体具有一个或多个属性,支持的数据类型是整数、浮点值、字符串、日期、二进制等常用数据类型。Datastore 中的每个实体都属于一个特定的类型,类型是由应用程序指定的一个名称。与关系数据库不同的是,同一类型的2 个实体不必具有相同的属性。每个实体的唯一键的一部分可用作该实体的标识符。应用程序可以分配要在键中使用的它自己的标识符(称为键名称),也可以在首次存储实体时由数据存储区分配的数字ID。由于标识符是键的一部分,所以在创建实体后,实体的ID 或名称无法更改。

2.2.3 GAE 中的持久化对象

GAE 分别支持Java Data Object(JDO)以及Java Persistence API(JPA)2 种标准接口来调用数据对象[10-11]。这2 种接口都允许用户使用类型安全的Java 类来描述数据结构。在本项目中使用JPA来实现数据实例化的功能。

JPA(Java Persistence API,Java 持久化API)定义了对象-关系映射(ORM)以及实体对象持久化的标准接口[12]。在利用JPA 持久化对象时,首先要获取EntityManager 实例,可以通过在EntityManagerFactory 类的实例上实例化并调用一个方法来获取此实例。如以下代码(2)所示。

通过Psistent 类,可以创建EntityManager 实例,如以下代码(3)所示。

当获取到Entity Manager 对象,就可以调用其API 提供的方法对数据做存储、更新、查询、删除的操作。

如以下代码(4)执行对User 对象的保存。

如以下代码(5)执行对User 对象的查找。

如以下代码(6)执行对User 对象的更新。

如以下代码(7)执行对User 对象的删除。

2.3 系统实现

应用系统采用Struts2. 0 + spring3. 0 开源框架,开发语言采用Java 语言。在Eclipse 4.2 的开发工具下,需要安装Google App Engine Java SDK 1.7.7,它是GAE 支持Java 开发应用的软件开发工具包;以及Eclipse4.2 版本专用的Google 插件程序Google Plugin for Eclipse 4.2[12]。

1)系统的主要模块-公文审批具体实现如图3 所示。

2)公文流转的过程会伴随着短信息的发送,本项目将短信功能独立出来,不但可以嵌入公文审批功能中,给用户发送短信提醒,而且可以作为一个独立的功能模块,提供给用户发送短信。

图3 审批公文模块Fig.3 Archives examine and approve modular

短信功能模块主要包括短信发送、群组管理、黑名单管理和已发送短信。短信模块功能采用了SMGP 形式,SMGP 是GOA 项目中的短信模块和运营商网管之间的桥梁。短息模块通过Http 的形式,将数据提交给SMGP,SMGP 最终将短信提交给运营商网管。系统成功的在云平台下的Web 系统中调用非云平台下的系统。在SMGP 中采用线程池的技术来处理短信的发送,具体处理流程如图4所示。

图4 SMGP 处理短信流程Fig.4 SMGP note-dealing note modular

系统的具体实现如图5 所示。

图5 发送短信Fig.5 Note-sending modular

3)可定制化。本项目是以企业的实际OA 需求出发,每个公司都可以根据自己实际需求在该项目中定制相应的功能。中小企业以租用SaaS 服务的方式申请这些服务的使用权,基于Web 使用这些服务,管理自己的数据,以满足企业多样化的需求[13]。下图为2 个不同的企业所定制的GOA系统。

4)项目开发完成后,需要在GAE 中部署应用程序。

图6 不同公司需求的定制化服务Fig.6 Custom-made service modular

首先需要线下编辑工程war 目录下的appengine-web.xml 文件,将 <application ></application >元素更改为已注册的ID:GOA. 随后选择google- >deploy to app engine,点击配置工程信息,配置好工程信息以后,就可以将工程上传到GAE 云平台之上。GAE 提供了Eclipse Google Plugins 的上传界面来将应用程序上传到GAE 云平台中。工程上传以后,可以在GAE 的应用管理页面看到上传的应用,完成部署。

当部署完成后,用户利用GoAgent 代理服务器(Google App Engine 的服务器充当代理),通过浏览器就可以进行功能使用和访问。用户不但可以体验利用Google 云平台的数据存储和并行处理的优势提供的应用软件按需服务,同时还可以共享Google 的云端的文档系统及邮件系统,增加OA 系统的网络协同和共享特性。

3 系统测试

本系统分别在普通环境下和GAE 环境下测试,其中普通环境下的数据库采用MySql. 测试主要包括数据存储,读取速率的测试以及系统性能测试。在进行数据存储、读取速率测试时,测试了同时插入以及读取100、1000、10000 条数据的所需时间。性能测试主要测试ART(AverageResponse-Time,平均响应时间)和TPS(RequestsPerSeeond,每秒可相应的请求数)。测试结果见表1.

表1 普通环境数据读写速度Tab.1 Data reading and writing speed in normal circumstances

表2 GAE 环境数据读写速度Tab.2 Data reading and writing speed in GAE

表3 GAE 环境下系统压力测试Tab.3 System stress test in GAE

从表1 和表2 可以看出,GAE 环境中BigTable的存储速率远远大于普通环境下数据的存储速读,并且随着数据量的增大,这种优势会越来越大。但是GAE 环境中数据的读取速率小于普通环境下数据读取的速率,这与BigTable 的设计有关,BigTable 并不完全支持关系数据库,在数据的查询中没有像关系数据库那样对查询做了优化。由于Web 系统中大数据量的获取可以通过分页技术实现数据的分批加载,因此可以忽略BigTable 读取数据速率方面的不足。

表3 描述了在GAE 环境下系统的性能测试结果。性能测试采用Loadruuner 自动化测试化工具,测试分2 组进行。第一组设定200 个vuser(虚拟用户),第二组设定400 个vuser,2 组的测试时间均为2 min.从图中可以看出随着虚拟用户的增加,用户请求数会增多,同时也会有部分丢失的情况,但是这与并发用户数有关,而实际情况并不会有如此高的并发。2 组测试数据的ART 结果,符合Web 压力测试标准,可见系统的性能良好。

从上面的分析可以看出,GAE 环境下的Web应用在数据的存储以及性能方面均高于普通环境中的Web 应用。GAE 环境下的Web 应用在数据读取方面等同于传统的基于关系数据库的应用系统。

4 结 论

文中分析了传统OA 系统的缺陷,提出了将云计算技术应用于传统OA 系统。根据大多高科技中小企业的实际需求,基于GAE 平台设计并实现了一个云端的OA 系统。并将其成功的部署到Google 云平台下,目前系统运行稳定,正在对A 企业提供OA 系统的支持。作者通过对本系统的设计和开发,认为目前在云端适合开发部署一些基于请求-应答的高伸缩性的互联网应用系统(例如电子商务系统);或一些非战略的不涉及多表关联查询的公共应用系统,例如人事管理系统、OA系统;还可以应用在智慧城市的建设中。

References

[1] 薛 涵,张静芳,赵 宁.融入知识管理的高校图书馆OA 系统研究[J]. 情报科学,2013,31(1):140 -144.XUE Han,ZHANG Jing-fang,ZHAO Ning. Reacher on university library office automation system integrated into advanced idea of kowledge management[J].Information Science,2013,31(1):140 -144.

[2] 庄 玫,何 玉,向 阳.清华大学图书馆协同办公体系基于Web 2.0 的实践与思考[J].高校图书馆工作,2011,31(4):19 -21.ZHUANG Mei,HE Yu,XIANG Yang. Practice and research of the collaborative office system in Tsinghai university library based on Web2.0[J].Bulletin of College Library,2011,31(4):19 -21.

[3] 翟 勃,刘 柯.基于云计算的煤炭企业电子采购系统研究与设计[J].西安科技大学学报,2012,32(2):255 -261.ZHAI Bo,LIU Ke. Design of e-procurement system of coal enterprises based on cloud computing[J]. Journal of Xi’an University of Science and Technology,2012,32(2):255 -261.

[4] 王 磊,陈 刚,陆忠华.基于云计算的高效科学计算应用软件框架[J]. 华中科技大学学报,2011,39(1):167 -172.WANG Lei,CHEN Gang,LU Zhong-hua. Cloud-based software framework for efficient scientific computing[J]. Journal of Huazhong University of Science and Technology,2011,39(1):167 -172.

[5] 邢文凯,翟玉梅.面向用户的通用云计算平台负载均衡机制[J].科学技术与工程,2012,12(12):1 671 -1 815.XING Wen-kai,ZHAI Yu-mei. Vertical deformation analysis on mixed structure considering the load simulation methods and the time-varying performance of concrete[J].Science Technology and Engineering,2012,12(12):1 671 -1 815.

[6] 兰建文,刘 敏,任高峰.多业态企业安全生产管理信息系统设计与实现[J].西安科技大学学报,2012,32(4):532 -538.LAN Jian-wen,LIU Min,REN Gao-feng.Design and implementation of multi-format enterprise safety production management information system[J]. Journal of Xi’an University of Scinece and Technology,2012,32(4):532-538.

[7] Demirkan Haluk,Cheng Hsing Kenet,Bandyopadhyay Subhajyoti. Coordination strategies in an SaaS supplychain[J]. Journal of Management Information Systems,2010,26(4):119 -143.

[8] 王 磊,陈 刚,陆忠华.基于云计算的高效科学计算应用软件框架[J]. 华中科技大学学报,2011,39(1):167 -172.WANG Lei,CHEN Gang,LU Zhong-hua. Cloud-based software framework for efficient scientific computing[J]. Journal of Huazhong University of Science and Technology,2011,39(1):167 -172.

[9] Gonzalez H,Halevy A Y,Jensen C S,et al. Google fusion tables:Web-centered data management and collaboration[C]//Acm Sigmod 2010:Proceedings of the ACM SIGMOD International Conference on Management of Data,Indianapolis,Indiana,USA,New York:ACM Press,2010.

[10] 王意洁,孙伟东,周 松,等.云计算环境下分布存储关键技术[J].软件学报,2012,23(4):962 -986.WANG Yi-Jie,SUN Wei-Dong,ZHOU Song,et al. Key technologies of distributed storage for cloud computing[J].Journal of Software,2012,23(4):962 -986.

[11] 丁雪芳,张 锐.一种基于场景的轻量级软件架构分析方法[J].西安科技大学学报,2011,31(5):636 -672.DING Xue-fang,ZHANG Rui.A scenario-based software architecture analysis method[J].Journal of Xi’an University of Science and Technology,2011,31(5):636 -672.

[12] 龚尚福,王艳军.多线程保护应用程序自动加载研究与实践[J].西安科技大学学报,2013,33(2):230 -236.GONG Shang-fu,WANG Yan-jun. Research and Practice of automatic loading of applications based on multi threaded Protection[J]. Journal of Xi’an University of Scinece and Technology,2013,33(2):230 -236.

[13] 林子雨,赖永炫,林 琛,等.云数据库研究[J].软件学报,2012,23(5):1 148 -1 166.LIN Zi-yu,LAI Yong-xuan,LIN Chen,et al. Research on cloud databases[J]. Journal of Software,2012,23(5):1 148 -1 166.

猜你喜欢

数据模型应用程序短信
删除Win10中自带的应用程序
道歉短信
谷歌禁止加密货币应用程序
面板数据模型截面相关检验方法综述
代发短信
经济全球化对我国劳动收入份额影响机制研究——基于面板数据模型
基于数据模型的编程应用
一种顾及级联时空变化描述的土地利用变更数据模型
三星电子将开设应用程序下载商店
“八一”节日短信之一