邵全勇,雒海東
(1.青海省工業(yè)職業(yè)技術(shù)學(xué)校,青海 西寧 810021 ;2.青海師范大學(xué)計(jì)算機(jī)學(xué)院,青海 西寧 810001)
旅游電子商務(wù)平臺(tái)以互聯(lián)網(wǎng)為基礎(chǔ)[1-3],通過融合數(shù)據(jù)庫、多媒體技術(shù)技術(shù),實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)交換、功能擴(kuò)展和商務(wù)運(yùn)營等,為各類旅游電子商務(wù)系統(tǒng)提供完善運(yùn)行環(huán)境和功能服務(wù)[4-6]?;贘avaEE架構(gòu)的多層軟件開發(fā),以其層次性、兼容性和可擴(kuò)展性成為電子商務(wù)系統(tǒng)的主要解決方案[7-8]。但傳統(tǒng)架構(gòu)設(shè)計(jì)將數(shù)據(jù)、業(yè)務(wù)和顯示高度耦合,使得軟件難以復(fù)用[9-11]。
本文基于JavaEE架構(gòu)下,融合Struts2、Spring和Ibatis架構(gòu)技術(shù)實(shí)現(xiàn)數(shù)據(jù)層和業(yè)務(wù)層的邏輯分離,提升數(shù)據(jù)操作利用率,并有效降低網(wǎng)絡(luò)負(fù)載壓力,實(shí)現(xiàn)數(shù)據(jù)信息的可移植性。
旅游電子商務(wù)平臺(tái)是為游客提供由旅游導(dǎo)航到支付的全服務(wù)平臺(tái),具有景點(diǎn)管理、旅社預(yù)訂、旅游線路、購物管理、旅游資詢、會(huì)員社區(qū)、會(huì)員管理等功能。
景點(diǎn)管理包括景點(diǎn)位置、特征、門票等信息,通過融合視頻圖片實(shí)現(xiàn)線上虛擬瀏覽。旅社預(yù)訂首先要建立酒店與平臺(tái)的線上聯(lián)系;平臺(tái)扮演中間調(diào)節(jié)和監(jiān)管作用,實(shí)現(xiàn)旅客與旅社的溝通。旅游線路為游客提供不同的出行方式和多樣化的配套服務(wù),包括景點(diǎn)線路信息、旅游線路規(guī)劃、線路搜索等。旅游咨詢主要是為旅客提供附加服務(wù),將線上交互信息和線下雜志相結(jié)合,及時(shí)發(fā)布和更新新聞公告、風(fēng)俗文化等。
根據(jù)平臺(tái)功能需求,采用JavaEE三層分布架構(gòu),分為表示層、中間服務(wù)層和數(shù)據(jù)層。應(yīng)用程序模塊如圖1所示。
圖1 應(yīng)用程序模塊示意圖Fig.1 Application program module
表示層用來進(jìn)行用戶數(shù)據(jù)交互,并顯示數(shù)據(jù)信息。JavaEE平臺(tái)支持不同類型用戶,在客戶機(jī)操作界面進(jìn)行系統(tǒng)和客戶交互,并提供多終端接入方式,以瀏覽器進(jìn)行系統(tǒng)交互,集成辦公自動(dòng)化。
中間服務(wù)層包括Web層和JavaEE服務(wù)器端組件模型(enterprise Java Bean,EJB)容器。在Web服務(wù)器上,采用Servlet和Jsp完成流程控制和數(shù)據(jù)顯示。EJB容器解決事物處理、狀態(tài)管理、多線程安全管理的底層問題。通過Web應(yīng)用實(shí)現(xiàn)遠(yuǎn)程處理核心業(yè)務(wù)邏輯??蛻粝蚍?wù)器發(fā)出請求后,系統(tǒng)調(diào)用相應(yīng)邏輯塊,形成邏輯連接。服務(wù)器對用戶請求作出回應(yīng),將結(jié)果反饋客戶端,實(shí)現(xiàn)業(yè)務(wù)應(yīng)用、系統(tǒng)管理等功能。
數(shù)據(jù)層采用Oracle9i形式的大型數(shù)據(jù)庫系統(tǒng)組成,用于存儲(chǔ)數(shù)據(jù)并實(shí)現(xiàn)相關(guān)應(yīng)用邏輯。數(shù)據(jù)層為中間層提供數(shù)據(jù)存儲(chǔ)集中功能,為服務(wù)系統(tǒng)提供服務(wù)和數(shù)據(jù)使用、查詢結(jié)果功能,同時(shí)處理數(shù)據(jù)交換和信息傳遞。
采用接口調(diào)用系統(tǒng)各層數(shù)據(jù)并進(jìn)行數(shù)據(jù)交換。首先,需要確定各層的任務(wù)。在這個(gè)過程中,可以將系統(tǒng)各層作為一個(gè)獨(dú)立空間。當(dāng)各層內(nèi)部結(jié)構(gòu)產(chǎn)生變化,通過修改相關(guān)接口的實(shí)現(xiàn)類保證系統(tǒng)各層的最小依賴性。
本文開發(fā)的“旅游電子商務(wù)系統(tǒng)”采用瀏覽器/服務(wù)器(browser/server,B/S)結(jié)構(gòu)設(shè)計(jì),使用MyEclipse8.0開發(fā)工具,WebLogic應(yīng)用服務(wù)器、Oracle數(shù)據(jù)庫。使用模型-視圖-控制器(model-view-controller,MVC)三層架構(gòu)實(shí)現(xiàn)結(jié)構(gòu)劃分,由Struts2框架中的標(biāo)簽負(fù)責(zé)表現(xiàn)層用戶界面的交互,采用Struts的Service和Action類負(fù)責(zé)業(yè)務(wù)邏輯層的具體業(yè)務(wù)邏輯,數(shù)據(jù)庫的交互采用文檔(document,DOC)類實(shí)現(xiàn)。系統(tǒng)架構(gòu)設(shè)計(jì)如圖2所示。
圖2 系統(tǒng)架構(gòu)設(shè)計(jì)示意圖Fig.2 System architecture design
Struts2顯示層向客戶提供良好的人際交互界面,實(shí)現(xiàn)系統(tǒng)與用戶的互動(dòng)??蛻舻卿浵到y(tǒng)填寫注冊申請單,提交后臺(tái)審核。由于Strtus采用的是Struts.xml核心,利用Struts filter承擔(dān)控制角色進(jìn)行URL Pattern的匹配度,利用攔截器將權(quán)值日志轉(zhuǎn)交給Action類實(shí)現(xiàn)業(yè)務(wù)邏輯、鏈接專項(xiàng)。Struts控制器組負(fù)責(zé)用戶請求接收、模型更新和視圖組件返回,并根據(jù)Struts.xml文件的配置決定業(yè)務(wù)留專項(xiàng),將控制流程集中在XML文檔,迅速把握系統(tǒng)脈絡(luò)。當(dāng)業(yè)務(wù)邏輯發(fā)生變化時(shí),網(wǎng)頁設(shè)計(jì)人員只需在Struts.xml中調(diào)整和修改,無需遍歷Java代碼進(jìn)行業(yè)務(wù)邏輯梳理。這提升了系統(tǒng)的方便性和有效性。
通過面向切面編程(aspect oriented programming,AOP)應(yīng)用,利用Spring來提高系統(tǒng)擴(kuò)展性,降低業(yè)務(wù)組件耦合度。Spring主要進(jìn)行事物管理、業(yè)務(wù)校驗(yàn)和業(yè)務(wù)邏輯管理。在業(yè)務(wù)層中,主要實(shí)現(xiàn)兩項(xiàng)管理目標(biāo)。為避免業(yè)務(wù)邏輯層中大量代碼量,將事物管理定義在transactionManager配置上。事物管理由配置文件執(zhí)行,使開發(fā)者只需管制業(yè)務(wù)的邏輯關(guān)系,有效節(jié)約了開發(fā)時(shí)間和效率。而系統(tǒng)的facade類和dao類在service-dao.xml上進(jìn)行配置,避免了組件間硬編碼的關(guān)聯(lián)。僅使用setter方法進(jìn)行依賴注入,即可實(shí)現(xiàn)業(yè)務(wù)邏輯組件見的引用。
本文利用DaoConfig類和數(shù)據(jù)庫訪問對象(data access object,DAO)模式和ibatis框架技術(shù),設(shè)計(jì)數(shù)據(jù)持久層框架,如圖3所示。
圖3 數(shù)據(jù)持久層框架設(shè)計(jì)示意圖Fig.3 Design of data persistent layer frame
整個(gè)持久層被劃分為DAO層和SQL Map框架層。DAO層中,DaoConfig類可一次完成對所有dao.xml資源文件的加載,而dao.xml管理大量dao類。因此,Service通過訪問DaoConfig類和DAO接口即實(shí)現(xiàn)了對所有資源的獲取,大大提高了資源利用率和數(shù)據(jù)訪問速度。SQL Map框架層中,主要在sql-map-config.xml下實(shí)現(xiàn)對SQL Map的配置、優(yōu)化設(shè)定,映射文件定義、數(shù)據(jù)庫連接和事物自動(dòng)化管理[12]。
根據(jù)市場需求,建立的旅游電子商務(wù)系統(tǒng)功能結(jié)構(gòu)如圖4所示。整個(gè)系統(tǒng)包括銷售平臺(tái)、客戶服務(wù)平臺(tái)、分析與決策平臺(tái)。
圖4 系統(tǒng)功能結(jié)構(gòu)圖Fig.4 System functional structure diagram
旅游項(xiàng)目的對象群體十分廣泛,需要多元化的銷售溝通渠道進(jìn)行產(chǎn)品的展示,包括傳電話、Web、郵件等電子商務(wù)渠道,以及會(huì)展、現(xiàn)場演示等實(shí)體渠道。因此,建立客戶服務(wù)平臺(tái),整合多銷售渠道,可實(shí)現(xiàn)信息的共享、提高服務(wù)效率。通過接觸管理,收集情報(bào)信息存儲(chǔ)在數(shù)據(jù)庫中,服務(wù)人員連接企業(yè)數(shù)據(jù)分析決策平臺(tái),針對客戶問題建立標(biāo)準(zhǔn)問題集,以提升客戶服務(wù)質(zhì)量。同時(shí),利用服務(wù)平臺(tái)向客戶展示公司產(chǎn)品、服務(wù)內(nèi)容和報(bào)價(jià)信息,實(shí)現(xiàn)企業(yè)與客戶的一對一服務(wù)。
通過對各類數(shù)據(jù)信息進(jìn)行整合,并將業(yè)務(wù)數(shù)據(jù)清潔、轉(zhuǎn)移和集中處理,獲得面向決策的數(shù)據(jù)。利用數(shù)據(jù)挖掘技術(shù),根據(jù)客戶群體特征、行為規(guī)律進(jìn)行分組,并將客戶特征數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)內(nèi)容,為管理層制定戰(zhàn)略決策、改進(jìn)業(yè)務(wù)提供支持。同時(shí),各部門利用分析決策平臺(tái)實(shí)現(xiàn)數(shù)據(jù)共享,可提升戰(zhàn)略部署能力和工作效率。
銷售平臺(tái)功能應(yīng)用主要包括銷售信息的組織和瀏覽、業(yè)務(wù)處理階段追蹤、銷售業(yè)務(wù)階段報(bào)告、歷史銷售記錄和銷售狀況評價(jià)等信息,為業(yè)務(wù)銷售提供策略支持。根據(jù)銷售人員分布區(qū)域、行業(yè)、客戶等信息進(jìn)行授權(quán)和維護(hù)工作,用戶可以利用銷售平臺(tái)定義優(yōu)先級、相關(guān)客戶信息、聯(lián)系人等制定活動(dòng)、業(yè)務(wù)相關(guān)方面的報(bào)告。同時(shí),平臺(tái)具有BBS功能。銷售人員可以將自己的銷售經(jīng)歷發(fā)布在系統(tǒng)上,供相關(guān)人員學(xué)習(xí)、查詢等。
隨著大眾旅游新時(shí)代來臨,旅游信息化建設(shè)要求建立面向游客的旅游電子商務(wù)平臺(tái)。本文基于傳統(tǒng)JavaEE架構(gòu)體系,集成Struts2、Spring和Ibatis架構(gòu)技術(shù),建立一個(gè)多層B/S旅游電子商務(wù)系統(tǒng),提升旅游電子商務(wù)平臺(tái)的運(yùn)行能力。①建立JavaEE的三層分布架構(gòu),通過數(shù)據(jù)層實(shí)現(xiàn)數(shù)據(jù)的收集和數(shù)據(jù)庫建設(shè);Web層和EJB層作為中間服務(wù)層,通過EJB容器完成數(shù)據(jù)整合和分析,進(jìn)行資源合理配置。②基于Struts2顯示層,實(shí)現(xiàn)系統(tǒng)與用戶的互動(dòng);利用Spring來提高系統(tǒng)擴(kuò)展性,降低業(yè)務(wù)組件耦合度;采用ibatis框架技術(shù)構(gòu)建數(shù)據(jù)持久層應(yīng)用架構(gòu),減少網(wǎng)絡(luò)負(fù)載壓力,提升系統(tǒng)可靠性。③建立旅游電子商務(wù)系統(tǒng)功能結(jié)構(gòu),包括銷售平臺(tái)、客戶服務(wù)平臺(tái)、分析與決策平臺(tái),實(shí)現(xiàn)線上、線下等分析和決策功能。