APP下载

基于MEAN架构与图数据库的企业社交网络平台设计

2016-12-22石春菊

软件导刊 2016年11期

石春菊

摘 要:从社交网络发展现状和企业需求出发,设计了企业社交网络平台。对平台功能进行了划分,从平台易用性和易维护角度进行架构设计,讨论了基于MEAN架构的系统实现模式。在此基础上依据数据特点,设计了图数据库存储模型。

关键词关键词:企业社交网络;MEAN;MVC;REST服务;Neo4j图数据库

DOIDOI:10.11907/rjdk.161967

中图分类号:TP319

文献标识码:A 文章编号文章编号:16727800(2016)011008202

0 引言

社交网络平台信息交流形成庞大数据,对这些数据进行分析和预测,发现有价值的信息,使社交平台根据用户偏好,以主推特定广告等方式受益。中国制造2025规划提出,制造业要向智造业转化,企业的转化不仅需要CRM、ERP、SRM等相关软件组合应用,更多的是对资源优化、流程优化。资源优化就包含企业社交关系的优化。近年来,企业对社交网络的需求越来越强烈[1]。企业通过分析和处理网络中的大量数据,整合消费者关系、市场关系,并对企业供应关系进行分析,以优化企业业务流程和有效制定市场策略。利用社交网络理论,对企业网络建模,为业务提供战略性指导,对供求关系、客户关系、地域关系等建立对应关系图数据库,通过对图数据库的查询、增加、修改和删除,管理企业动态交互性信息。利用网络平台,企业关系网络可对用户管理、企业关系中的供求关系管理,以图数据的形式展示企业关系、公布企业动态,使企业信息交互性更强,消除企业内部与外部信息不一致的情况,与员工分享工作任务和战略决策,为企业推荐优秀的合作伙伴。

1 系统总体设计

1.1 系统功能及流程

ENFORCE(企业社交网络平台)系统用户分为企业用户和平台管理员两种角色,企业用户分为认证用户和未认证用户。经过身份验证的用户,可以选择企业并获得该企业数据,能够对这些数据进行维护。未认证用户只能浏览这些数据。

企业管理员可进行企业信息维护、员工维护、数据中心、企业展厅和信息交流5大功能管理。

企业信息维护指企业关系建立、查看、解除、发出关系申请、拒绝申请查看等信息维护;员工维护功能包括查询、增加、删除企业员工;数据中心功能有企业关系图展示、企业供应关系展示、企业热点图展示;企业展厅主要展示企业生产、经营、证书、获奖等信息;信息交流平台可提供企业员工内的信息交流,也可提供企业间的信息交流。

平台管理员同样可实现5大功能,各部分功能主模块与企业管理员相同。数据中心增加了爬虫功能,将爬取的网络公开数据进行清洗、匹配、去重和格式化后显示。企业管理员可以增、删、改、查平台上的所有企业和用户,同时对优秀厂商进行推荐,具备邮件管理功能。

1.2 系统框架设计

系统使用者权限不同,界面不同,可操作内容也不同,为满足不同用户群体登录后实现所需功能,系统框架采用MEAN设计,采用Java语言实现。由于企业关系网络一般由许多以制造商为核心的星形网络构成,交互密切,为了更好地表现企业与企业、企业与员工的关系,数据库采用Neo4j图数据库。

MEAN框架较为流行,它实现了MVC模式思想,将界面显示和业务逻辑分离,利用模型化的开发思路优化界面与服务关系,实现服务的复用性。可通过控制器分发业务逻辑,根据不同用户显示不同界面,实现不同功能。将界面和业务逻辑分离简化了系统的后期维护。

AngularJS是前端开发JS框架,克服了HTML在构建动态网页应用上的不足,方便实现动态数据的显示和处理[2]。基于MVC模式, HTML是视图,JS是控制器,通过数据视图双向绑定方式实现动态数据处理,利用控制器实现服务处理。AngularJS通过bower安装Bootstrap开源插件后,可方便实现html的前端显示界面美化。Bootstrap是基于HTML、CSS、Javascript开发的,可适用多种设备,是快捷的Web前端开发框架。

ExpressJS和Node.JS共同实现Web应用服务器端开发,通过http发出请求,对返回的JSON数据进行分析处理,将结果传回前端Angularjs控制器,实现页面动态显示。

为了公开服务接口,利用JAX-RS简化REST应用实现服务处理。基于JAX-RS实现的框架应用程序可以方便地部署到Tomcat上。

根据平台中用到的数据特性,将单一、无关系连接的信息存于MySQL数据库,对存在关系的数据采用Neo4j数据库存储。Neo4j数据库是非关系型数据库,以图的形式存储数据,又称为节点,每个节点具有各自的属性,节点和节点之间可以建立关系,如职工节点,它的属性有姓名、地址、电话、邮箱、创建日期等属性。企业节点有企业名称、地址、商品、创建日期、邮箱、电话、传真等,职工与企业建立归属关系。

2 MEAN架构下ENFORCE系统实现

根据ENFORCE系统用户特点,考虑软件代码重用性,设计具有最小冗余的组织结构。MVC模式是MEAN架构中各层的主要实现模式,是基于请求——响应模式的应用方式。

2.1 视图层模式

AngularJS框架实现了视图层技术,并利用HTML和JS实现数据的双向绑定。为了解决中文乱码问题,需要在html头部加入语句,在对应的js中则通过创建一个Module对象实例来实现数据与模型之间的数据绑定。

2.2 业务处理层模式

业务处理通过MEAN架构中的node.js实现,采用Express应用框架,其中app.js文件是启动文件,也就是Express执行的入口文件,是一个总的路由接口。在app.js文件中,require用于加载express、path等模块,以及routes路由文件夹下的所有js文件,通过app.use()实现路由控制。在具体的路由文件中,router.get(路由名, function(req,res,next){})生成一个路由实例来捕获访问主页的GET请求,导出这个路由并在app.js中通过app.use()加载路由,当访问某个页面时调用相应的路由并将结果返回到浏览器。

服务定位器:在ENFORCE系统中的routes文件夹下,所有的js文件由该系统的路由实现。routes文件夹由用户创建,便于管理路由文件。Express封装了多种http请求方式[3],常用的是get和post,app.get()和app.post(),一般有两个参数:①请求的路径;②处理请求的回调函数。回调函数中的参数req和res,代表请求信息和响应信息,通过处理req.query或req.params获得前端传递进来的数据,对数据进行封装后通过http.request向后台服务发出请求。此请求符合超文本传输协议,在回调函数中可以通过捕捉状态码,判断处理返回的内容。请求方法一般有GET、POST、PUT、DELETE,分别对应资源中的查询、修改、增加、删除4个操作。HTTP与后台交互时需传递URL地址,URL地址用于描述一个网络资源。通过回调函数返回JSON格式数据,并将其返回到前台控制端,最终用于前台数据显示。

服务处理:利用JAX-RS简化REST服务开发,REST服务基于HTTP协议[4]。通过JAX-RS标注来实现相应的Web资源,一个POJO java类封装为Web资源,通过http请求中的GET、POST、PUT、DELETE动作,对应于REST服务中的查询资源、修改资源、增加资源、删除资源。通过服务接口实现服务的重用性。@Path标注资源或者方法的相对路径,@Produces、@Consumes标注方法支持或返回MIME类型[5]。

2.3 数据库设计

根据数据交互性,系统采用Neo4j图数据库和MySQL关系型数据库存储数据,利用关系数据库存储独立性较强的数据。由于关系型数据库不支持类似“主机厂的供应商的供应商”这种复杂数据库查询,所以对交互性、复杂性并且动态变化的数据利用图数据库进行存储。图数据库能够高效存储、管理、更新数据的内在关系,并可进行复杂的多层操作[6]。图数据库的基本要素是节点、属性和关系[7]。节点代表实体且包含多个属性,关系连接对应的节点,用于表达对象之间的关系。图数据库的连接操作只需要一个起始节点就可实现查询功能。图数据库查询语言是Cypher,它具有灵活性强、表达能力强的特点,本系统中,企业与企业间的供应关系、企业员工的隶属关系、企业之间的多供应商关系、产品的部件依属关系、企业资质等均采用图数据库存储。

如图2所示,双格上部为标签,下部为属性,企业以名称作为索引,员工以用户登录名为索引,并保证是唯一的。节点之间的关系以星形形式显示。

3 结语

MEAN架构将视图表现层、控制层和模型层完全分离,利用JS和CSS完美结合,建立标准化的客户端界面组件。通过控制层和模型层实现HTTP协议数据传输,将界面和逻辑处理分离,使用户有更好的体验。通过封装化的控制器简化了程序员设计和处理逻辑工作量。

参考文献:

[1] 杨涛.企业社交网络的理论及实践研究[J].中国高新技术企业,2015(17):162163.

[2] 陈涛.基于AngularJS和Bootstrap聊天室的设计与实现[J].电脑知识与技术,2015(9):9192.

[3] [美]ETHAN BROWN.Node与Express开发[M].北京:人民邮电出版社,2015.

[4] 黄华东.Java环境下REST风格Web服务的开发方法[J].科技信息,2008(15):6869.

[5] 谢玉开.基于JAXRS的面向资源架构应用研究[D].杭州:浙江理工大学,2011.

[6] 王余蓝.图形数据库NEO4J与关系数据库的比较研究[J].现代电子技术,2012(20):7779.

[7] 廖理.基于Neo4j图数据库的时空数据存储[J].信息安全与技术,2015(5):4345.

(责任编辑:杜能钢)