石春菊
摘 要:從社交網(wǎng)絡(luò)發(fā)展現(xiàn)狀和企業(yè)需求出發(fā),設(shè)計了企業(yè)社交網(wǎng)絡(luò)平臺。對平臺功能進行了劃分,從平臺易用性和易維護角度進行架構(gòu)設(shè)計,討論了基于MEAN架構(gòu)的系統(tǒng)實現(xiàn)模式。在此基礎(chǔ)上依據(jù)數(shù)據(jù)特點,設(shè)計了圖數(shù)據(jù)庫存儲模型。
關(guān)鍵詞關(guān)鍵詞:企業(yè)社交網(wǎng)絡(luò);MEAN;MVC;REST服務(wù);Neo4j圖數(shù)據(jù)庫
DOIDOI:10.11907/rjdk.161967
中圖分類號:TP319
文獻標識碼:A 文章編號文章編號:16727800(2016)011008202
0 引言
社交網(wǎng)絡(luò)平臺信息交流形成龐大數(shù)據(jù),對這些數(shù)據(jù)進行分析和預(yù)測,發(fā)現(xiàn)有價值的信息,使社交平臺根據(jù)用戶偏好,以主推特定廣告等方式受益。中國制造2025規(guī)劃提出,制造業(yè)要向智造業(yè)轉(zhuǎn)化,企業(yè)的轉(zhuǎn)化不僅需要CRM、ERP、SRM等相關(guān)軟件組合應(yīng)用,更多的是對資源優(yōu)化、流程優(yōu)化。資源優(yōu)化就包含企業(yè)社交關(guān)系的優(yōu)化。近年來,企業(yè)對社交網(wǎng)絡(luò)的需求越來越強烈[1]。企業(yè)通過分析和處理網(wǎng)絡(luò)中的大量數(shù)據(jù),整合消費者關(guān)系、市場關(guān)系,并對企業(yè)供應(yīng)關(guān)系進行分析,以優(yōu)化企業(yè)業(yè)務(wù)流程和有效制定市場策略。利用社交網(wǎng)絡(luò)理論,對企業(yè)網(wǎng)絡(luò)建模,為業(yè)務(wù)提供戰(zhàn)略性指導(dǎo),對供求關(guān)系、客戶關(guān)系、地域關(guān)系等建立對應(yīng)關(guān)系圖數(shù)據(jù)庫,通過對圖數(shù)據(jù)庫的查詢、增加、修改和刪除,管理企業(yè)動態(tài)交互性信息。利用網(wǎng)絡(luò)平臺,企業(yè)關(guān)系網(wǎng)絡(luò)可對用戶管理、企業(yè)關(guān)系中的供求關(guān)系管理,以圖數(shù)據(jù)的形式展示企業(yè)關(guān)系、公布企業(yè)動態(tài),使企業(yè)信息交互性更強,消除企業(yè)內(nèi)部與外部信息不一致的情況,與員工分享工作任務(wù)和戰(zhàn)略決策,為企業(yè)推薦優(yōu)秀的合作伙伴。
1 系統(tǒng)總體設(shè)計
1.1 系統(tǒng)功能及流程
ENFORCE(企業(yè)社交網(wǎng)絡(luò)平臺)系統(tǒng)用戶分為企業(yè)用戶和平臺管理員兩種角色,企業(yè)用戶分為認證用戶和未認證用戶。經(jīng)過身份驗證的用戶,可以選擇企業(yè)并獲得該企業(yè)數(shù)據(jù),能夠?qū)@些數(shù)據(jù)進行維護。未認證用戶只能瀏覽這些數(shù)據(jù)。
企業(yè)管理員可進行企業(yè)信息維護、員工維護、數(shù)據(jù)中心、企業(yè)展廳和信息交流5大功能管理。
企業(yè)信息維護指企業(yè)關(guān)系建立、查看、解除、發(fā)出關(guān)系申請、拒絕申請查看等信息維護;員工維護功能包括查詢、增加、刪除企業(yè)員工;數(shù)據(jù)中心功能有企業(yè)關(guān)系圖展示、企業(yè)供應(yīng)關(guān)系展示、企業(yè)熱點圖展示;企業(yè)展廳主要展示企業(yè)生產(chǎn)、經(jīng)營、證書、獲獎等信息;信息交流平臺可提供企業(yè)員工內(nèi)的信息交流,也可提供企業(yè)間的信息交流。
平臺管理員同樣可實現(xiàn)5大功能,各部分功能主模塊與企業(yè)管理員相同。數(shù)據(jù)中心增加了爬蟲功能,將爬取的網(wǎng)絡(luò)公開數(shù)據(jù)進行清洗、匹配、去重和格式化后顯示。企業(yè)管理員可以增、刪、改、查平臺上的所有企業(yè)和用戶,同時對優(yōu)秀廠商進行推薦,具備郵件管理功能。
1.2 系統(tǒng)框架設(shè)計
系統(tǒng)使用者權(quán)限不同,界面不同,可操作內(nèi)容也不同,為滿足不同用戶群體登錄后實現(xiàn)所需功能,系統(tǒng)框架采用MEAN設(shè)計,采用Java語言實現(xiàn)。由于企業(yè)關(guān)系網(wǎng)絡(luò)一般由許多以制造商為核心的星形網(wǎng)絡(luò)構(gòu)成,交互密切,為了更好地表現(xiàn)企業(yè)與企業(yè)、企業(yè)與員工的關(guān)系,數(shù)據(jù)庫采用Neo4j圖數(shù)據(jù)庫。
MEAN框架較為流行,它實現(xiàn)了MVC模式思想,將界面顯示和業(yè)務(wù)邏輯分離,利用模型化的開發(fā)思路優(yōu)化界面與服務(wù)關(guān)系,實現(xiàn)服務(wù)的復(fù)用性??赏ㄟ^控制器分發(fā)業(yè)務(wù)邏輯,根據(jù)不同用戶顯示不同界面,實現(xiàn)不同功能。將界面和業(yè)務(wù)邏輯分離簡化了系統(tǒng)的后期維護。
AngularJS是前端開發(fā)JS框架,克服了HTML在構(gòu)建動態(tài)網(wǎng)頁應(yīng)用上的不足,方便實現(xiàn)動態(tài)數(shù)據(jù)的顯示和處理[2]?;贛VC模式, HTML是視圖,JS是控制器,通過數(shù)據(jù)視圖雙向綁定方式實現(xiàn)動態(tài)數(shù)據(jù)處理,利用控制器實現(xiàn)服務(wù)處理。AngularJS通過bower安裝Bootstrap開源插件后,可方便實現(xiàn)html的前端顯示界面美化。Bootstrap是基于HTML、CSS、Javascript開發(fā)的,可適用多種設(shè)備,是快捷的Web前端開發(fā)框架。
ExpressJS和Node.JS共同實現(xiàn)Web應(yīng)用服務(wù)器端開發(fā),通過http發(fā)出請求,對返回的JSON數(shù)據(jù)進行分析處理,將結(jié)果傳回前端Angularjs控制器,實現(xiàn)頁面動態(tài)顯示。
為了公開服務(wù)接口,利用JAX-RS簡化REST應(yīng)用實現(xiàn)服務(wù)處理?;贘AX-RS實現(xiàn)的框架應(yīng)用程序可以方便地部署到Tomcat上。
根據(jù)平臺中用到的數(shù)據(jù)特性,將單一、無關(guān)系連接的信息存于MySQL數(shù)據(jù)庫,對存在關(guān)系的數(shù)據(jù)采用Neo4j數(shù)據(jù)庫存儲。Neo4j數(shù)據(jù)庫是非關(guān)系型數(shù)據(jù)庫,以圖的形式存儲數(shù)據(jù),又稱為節(jié)點,每個節(jié)點具有各自的屬性,節(jié)點和節(jié)點之間可以建立關(guān)系,如職工節(jié)點,它的屬性有姓名、地址、電話、郵箱、創(chuàng)建日期等屬性。企業(yè)節(jié)點有企業(yè)名稱、地址、商品、創(chuàng)建日期、郵箱、電話、傳真等,職工與企業(yè)建立歸屬關(guān)系。
2 MEAN架構(gòu)下ENFORCE系統(tǒng)實現(xiàn)
根據(jù)ENFORCE系統(tǒng)用戶特點,考慮軟件代碼重用性,設(shè)計具有最小冗余的組織結(jié)構(gòu)。MVC模式是MEAN架構(gòu)中各層的主要實現(xiàn)模式,是基于請求——響應(yīng)模式的應(yīng)用方式。
2.1 視圖層模式
AngularJS框架實現(xiàn)了視圖層技術(shù),并利用HTML和JS實現(xiàn)數(shù)據(jù)的雙向綁定。為了解決中文亂碼問題,需要在html頭部加入語句,在對應(yīng)的js中則通過創(chuàng)建一個Module對象實例來實現(xiàn)數(shù)據(jù)與模型之間的數(shù)據(jù)綁定。
2.2 業(yè)務(wù)處理層模式
業(yè)務(wù)處理通過MEAN架構(gòu)中的node.js實現(xiàn),采用Express應(yīng)用框架,其中app.js文件是啟動文件,也就是Express執(zhí)行的入口文件,是一個總的路由接口。在app.js文件中,require用于加載express、path等模塊,以及routes路由文件夾下的所有js文件,通過app.use()實現(xiàn)路由控制。在具體的路由文件中,router.get(路由名, function(req,res,next){})生成一個路由實例來捕獲訪問主頁的GET請求,導(dǎo)出這個路由并在app.js中通過app.use()加載路由,當(dāng)訪問某個頁面時調(diào)用相應(yīng)的路由并將結(jié)果返回到瀏覽器。
服務(wù)定位器:在ENFORCE系統(tǒng)中的routes文件夾下,所有的js文件由該系統(tǒng)的路由實現(xiàn)。routes文件夾由用戶創(chuàng)建,便于管理路由文件。Express封裝了多種http請求方式[3],常用的是get和post,app.get()和app.post(),一般有兩個參數(shù):①請求的路徑;②處理請求的回調(diào)函數(shù)?;卣{(diào)函數(shù)中的參數(shù)req和res,代表請求信息和響應(yīng)信息,通過處理req.query或req.params獲得前端傳遞進來的數(shù)據(jù),對數(shù)據(jù)進行封裝后通過http.request向后臺服務(wù)發(fā)出請求。此請求符合超文本傳輸協(xié)議,在回調(diào)函數(shù)中可以通過捕捉狀態(tài)碼,判斷處理返回的內(nèi)容。請求方法一般有GET、POST、PUT、DELETE,分別對應(yīng)資源中的查詢、修改、增加、刪除4個操作。HTTP與后臺交互時需傳遞URL地址,URL地址用于描述一個網(wǎng)絡(luò)資源。通過回調(diào)函數(shù)返回JSON格式數(shù)據(jù),并將其返回到前臺控制端,最終用于前臺數(shù)據(jù)顯示。
服務(wù)處理:利用JAX-RS簡化REST服務(wù)開發(fā),REST服務(wù)基于HTTP協(xié)議[4]。通過JAX-RS標注來實現(xiàn)相應(yīng)的Web資源,一個POJO java類封裝為Web資源,通過http請求中的GET、POST、PUT、DELETE動作,對應(yīng)于REST服務(wù)中的查詢資源、修改資源、增加資源、刪除資源。通過服務(wù)接口實現(xiàn)服務(wù)的重用性。@Path標注資源或者方法的相對路徑,@Produces、@Consumes標注方法支持或返回MIME類型[5]。
2.3 數(shù)據(jù)庫設(shè)計
根據(jù)數(shù)據(jù)交互性,系統(tǒng)采用Neo4j圖數(shù)據(jù)庫和MySQL關(guān)系型數(shù)據(jù)庫存儲數(shù)據(jù),利用關(guān)系數(shù)據(jù)庫存儲獨立性較強的數(shù)據(jù)。由于關(guān)系型數(shù)據(jù)庫不支持類似“主機廠的供應(yīng)商的供應(yīng)商”這種復(fù)雜數(shù)據(jù)庫查詢,所以對交互性、復(fù)雜性并且動態(tài)變化的數(shù)據(jù)利用圖數(shù)據(jù)庫進行存儲。圖數(shù)據(jù)庫能夠高效存儲、管理、更新數(shù)據(jù)的內(nèi)在關(guān)系,并可進行復(fù)雜的多層操作[6]。圖數(shù)據(jù)庫的基本要素是節(jié)點、屬性和關(guān)系[7]。節(jié)點代表實體且包含多個屬性,關(guān)系連接對應(yīng)的節(jié)點,用于表達對象之間的關(guān)系。圖數(shù)據(jù)庫的連接操作只需要一個起始節(jié)點就可實現(xiàn)查詢功能。圖數(shù)據(jù)庫查詢語言是Cypher,它具有靈活性強、表達能力強的特點,本系統(tǒng)中,企業(yè)與企業(yè)間的供應(yīng)關(guān)系、企業(yè)員工的隸屬關(guān)系、企業(yè)之間的多供應(yīng)商關(guān)系、產(chǎn)品的部件依屬關(guān)系、企業(yè)資質(zhì)等均采用圖數(shù)據(jù)庫存儲。
如圖2所示,雙格上部為標簽,下部為屬性,企業(yè)以名稱作為索引,員工以用戶登錄名為索引,并保證是唯一的。節(jié)點之間的關(guān)系以星形形式顯示。
3 結(jié)語
MEAN架構(gòu)將視圖表現(xiàn)層、控制層和模型層完全分離,利用JS和CSS完美結(jié)合,建立標準化的客戶端界面組件。通過控制層和模型層實現(xiàn)HTTP協(xié)議數(shù)據(jù)傳輸,將界面和邏輯處理分離,使用戶有更好的體驗。通過封裝化的控制器簡化了程序員設(shè)計和處理邏輯工作量。
參考文獻:
[1] 楊濤.企業(yè)社交網(wǎng)絡(luò)的理論及實踐研究[J].中國高新技術(shù)企業(yè),2015(17):162163.
[2] 陳濤.基于AngularJS和Bootstrap聊天室的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2015(9):9192.
[3] [美]ETHAN BROWN.Node與Express開發(fā)[M].北京:人民郵電出版社,2015.
[4] 黃華東.Java環(huán)境下REST風(fēng)格Web服務(wù)的開發(fā)方法[J].科技信息,2008(15):6869.
[5] 謝玉開.基于JAXRS的面向資源架構(gòu)應(yīng)用研究[D].杭州:浙江理工大學(xué),2011.
[6] 王余藍.圖形數(shù)據(jù)庫NEO4J與關(guān)系數(shù)據(jù)庫的比較研究[J].現(xiàn)代電子技術(shù),2012(20):7779.
[7] 廖理.基于Neo4j圖數(shù)據(jù)庫的時空數(shù)據(jù)存儲[J].信息安全與技術(shù),2015(5):4345.
(責(zé)任編輯:杜能鋼)