周桂如
( 福建船政交通職業(yè)學院公共教學部,福建 福州 350007)
基于時代大背景,網絡訂房業(yè)務是一種新的服務業(yè)營銷方式,它無疑將利用互聯(lián)網本身的優(yōu)勢對傳統(tǒng)的營銷方式提出挑戰(zhàn)。400訂房中心的引入更是幫助企業(yè)實現(xiàn)了連鎖經營、資源共享的愿望,把原來分散各處、各自為政的訂房業(yè)務集中到統(tǒng)一的訂房中心,對外發(fā)布唯一的訂房熱線,實現(xiàn)人員、房源、客源的大集中,極大方便了企業(yè)的集中化管理和精細化管理,為企業(yè)在節(jié)省經營成本和提升企業(yè)形象方面做出了突出的貢獻。 目前市場上比較大型的連鎖娛樂企業(yè)有:agogo(35家門店,總部在福州)、好樂迪(66家門店,總部在上海)、歡樂迪(43家門店,總部在重慶)等。
agogo的訂房系統(tǒng)是由大唐電信為其訂制開發(fā)的,系統(tǒng)采用B/S架構,大集中模式,整套系統(tǒng)只有一個中心數(shù)據(jù)庫,總部訂房中心和各門店的業(yè)務模塊都是直連中心數(shù)據(jù)庫,由于門店多、門店的業(yè)務終端多,給中心數(shù)據(jù)庫造成非常大的壓力,在業(yè)務高峰期時出現(xiàn)明顯的卡頓、反應緩慢的現(xiàn)象。而且這種模式對網絡質量的要求也比較高,當門店和總店的網絡存在跨運營商的情況,門店業(yè)務模塊的通訊就會比較卡。
歡樂迪的訂房系統(tǒng)用的是上海曲軒公司的產品,該系統(tǒng)采用C/S架構,只有訂房中心業(yè)務模塊,沒有門店業(yè)務模塊,訂房中心每完成一單訂房業(yè)務都要給業(yè)務門店打個電話,通知門店有新的預訂信息。該系統(tǒng)已經使用比較長久,其業(yè)務模式嚴重不能滿足現(xiàn)在的運營需求,對業(yè)務人員的工作負荷太大,加上訂房系統(tǒng)與其它業(yè)務系統(tǒng)沒有辦法對接,正在考慮切換產品。
系統(tǒng)在數(shù)據(jù)操作的高效率下,保證數(shù)據(jù)類型的準確性和數(shù)據(jù)內容的擴展性。各業(yè)務模塊的通訊方式是采用異步通訊,而且各門店和總店的數(shù)據(jù)庫都是獨立的本地數(shù)據(jù)庫,所以各業(yè)務模塊運行效率比較流暢,對網絡依賴比較低。
在信息化時代的大背景下,連鎖經營模式是企業(yè)發(fā)展的趨勢。開發(fā)環(huán)境綜合考慮開發(fā)人員的使用習慣、數(shù)據(jù)庫軟件開發(fā)的便利性,最終選擇DELPHI2010作為開發(fā)工具。產品定位為應用在大中型連鎖企業(yè)(估算一年一兩百萬條訂單數(shù)據(jù),會員數(shù)據(jù)在百萬級),數(shù)據(jù)量屬于中等規(guī)模,所以選擇SQL SERVER 2008 R2作為數(shù)據(jù)庫。為提高各業(yè)務單元的可操作性、易用性、穩(wěn)定性,各業(yè)務單元采用C/S結構。由于產品本身對數(shù)據(jù)實時性要求不高,所以總分店數(shù)據(jù)通訊采用異步方式,以方便各業(yè)務單元能夠快速的完成各項操作。
為了明確產品的功能性需求,通過觀摩學習市場上其它訂房系統(tǒng),經過對訂房業(yè)務的分析、對連鎖經營模式的調查、對聯(lián)網方案的考察、對市場最終用戶的走訪,綜合分析挖掘出各業(yè)務單元的需求點、關注點,最終形成聯(lián)網訂房系統(tǒng)需求。
系統(tǒng)架構的好與不好將決定軟件產品的質量,如:模塊之間的耦合度、可擴展性,模塊內部的清晰度、可維護性,軟件系統(tǒng)的健壯性、可持續(xù)性,數(shù)據(jù)系統(tǒng)的安全性等。因此,系統(tǒng)架構設計在軟件開發(fā)過程中起到承上啟下、繼往開來的作用。
2.1.1 多層分布式結構
互聯(lián)網的發(fā)展給傳統(tǒng)的軟件開發(fā)行業(yè)帶來了空前的變革,基于Web和Internet應用軟件系統(tǒng)必將需要更加靈活、開放的軟件架構[2]。隨著商業(yè)應用軟件系統(tǒng)越來越多的被搬到互聯(lián)網上,一種全新的、更具生命力的軟件架構被廣泛應用,這就是“三層/多層架構”[1]。多層分布式結構很好的解決了C/S結構的缺點,它是一種靈活的體系結構。多層架構還具有良好的可移植性,可以跨越不同類型的平臺工作,允許用戶請求在多臺服務器之間進行負載均衡。
2.1.2 MIDAS技術
MIDAS是多層分布式應用程序服務包(Multi-tier-Distributed Application Service Suite)的英文縮寫[3],它是Inprise公司提供的基于Windows平臺的中間件產品,Borland公司從Delphi3.0開始引入MIDAS1.0。
MIDAS是Delphi用來開發(fā)多層分布式應用系統(tǒng)的中介透明引擎[4]。 提供容錯能力的應用系統(tǒng)如圖1所示。
圖1 提供容錯能力的應用系統(tǒng)
在客戶機和服務器的連接方式上,MIDAS提供了多種通訊協(xié)議,如:Socket、COM/DCOM、CORBA等。
2.1.3 多層分布式應用程序的結構
基于DCOM和MIDAS技術的多層分布式應用程序結構如圖2所示。
圖2 多層分布式應用系統(tǒng)結構圖
2.2.1 系統(tǒng)表結構設計
聯(lián)網訂房系統(tǒng)主要包括分店信息表、人員信息表、會員等級表、等級關聯(lián)表、會員信息表、房型表、區(qū)域表、房間信息表、預訂信息表、排房表、來電信息表、投訴建議表等。各實體對象之間的關系如圖3所示。
圖3 數(shù)據(jù)庫實體對象關系圖
聯(lián)網訂房系統(tǒng)為了支持皮膚自定義,以及方便以后升級維護時更換皮膚,引入了第三方皮膚控件包SUIPack,在系統(tǒng)的數(shù)據(jù)模塊(TDataModule)放一個皮膚資源連接組件(TsuiFileTheme),在系統(tǒng)運行時動態(tài)加載皮膚資源文件,其它頁面的皮膚控件通過屬性FileTheme關聯(lián)到皮膚資源組件來顯示皮膚文件。
3.1.1 總店會員等級維護
有權限的用戶登錄會員模塊之后,通過系統(tǒng)菜單“總店會員等級設置”進入等級維護頁面,會員等級設置提供“等級編號”、“等級名稱”兩個屬性,提供新增、修改、刪除三種操作。新增、修改等級時判斷等級編號、名稱不允許重復;刪除時判斷等級是否已經使用(在等級關系頁面關聯(lián)到分店的會員等級),已啟用的等級不允許刪除。
刪除功能的核心代碼如下:
IF EXISTS(SELECT 1 FROM BL_TBL_GradeRelateSet WHERE GradeID = @GradeID)
BEGIN
SET @ErrorCode = -1
SET @ErrorMessage = '該會員等級已經使用,不能刪除!'
RETURN @ErrorCode
END
DELETE FROM BL_TBL_MemberGrade WHERE GradeID = @GradeID
SET @ErrorCode = @@Error
IF @ErrorCode <> 0
SET @ErrorMessage = '刪除表[BL_TBL_MemberGrade]失敗。'
有權限的用戶登錄會員模塊之后,通過系統(tǒng)菜單“會員等級關聯(lián)”進入等級關聯(lián)頁面。頁面分為條件查詢區(qū)域、數(shù)據(jù)顯示區(qū)域、編輯區(qū)域三個區(qū)域,可供編輯的屬性有“總店會員等級”、“分店名稱”、“分店會員等級”,每個分店會員等級有且僅能對應一個總店會員等級,每個總店會員等級在某一分店有且僅能對應一個分店會員等級。頁面切換分店名稱時,實時刷新該分店的會員等級。
修改功能的核心代碼如下:
UPDATE BL_TBL_GradeRelateSet
SETGradeID = @GradeID,
OtherShopNo = @OtherShopNo,
OtherGradeID = @OtherGradeID
WHEREGradeRelateSetID = @GradeRelateSetID
SET @ErrorCode = @@ERROR
IF @ErrorCode <> 0
SET @ErrorMessage = '修改會員等級關聯(lián)失敗'
3.1.2 會員信息維護
有權限的用戶登錄會員模塊之后,通過系統(tǒng)菜單“會員信息設置”進入會員信息維護頁面。頁面分為條件查詢區(qū)域、數(shù)據(jù)顯示區(qū)域、操作按鈕區(qū)域。考慮到會員數(shù)據(jù)量會比較大,加載會員數(shù)據(jù)會比較慢,所以進入頁面默認情況下不顯示會員數(shù)據(jù),由操作人員選擇查詢條件后點擊查詢按鈕再顯示數(shù)據(jù)。查詢條件盡可能豐富,方便使用者能夠快速定位到想要的會員數(shù)據(jù)。操作區(qū)域提供信息修改、掛失/取消掛失、補卡查詢、導出Excel四個功能,信息修改和補卡查詢進入二級頁面操作,掛失、導出Excel直接執(zhí)行代碼,雙擊會員信息進入會員詳情/變更日志查詢頁面。導出Excel的功能需要單獨授權,因為會員數(shù)據(jù)對于企業(yè)來說機密系數(shù)相對較高,不允許輕易就能把會員數(shù)據(jù)導出來,一般的客服人員是不會有導出Excel的權限的,需要用到導出功能時可申請業(yè)務主管進行業(yè)務授權。
掛失功能的部分代碼如下:
UPDATE BL_TBL_AllCustomer
SET--把狀態(tài)置為3(掛失狀態(tài))
[Status] = 3,
--把記錄版本加1,讓會員同步模塊可以把該會員信息分發(fā)到各門店
UpdateVersion = ISNULL(UpdateVersion,0)+1,
--記錄最后更新門店和更新時間
LastUpdateShop = '99',
LastUpdateDateTime = GETDATE()
WHEREHeadMemberID = @HeadMemberID
SET @ErrorCode = @@ERROR
IF @ErrorCode <> 0
BEGIN
SET @ErrorMessage = '掛失會員失敗'
ROLLBACK TRAN Tran_MemberLost
RETURN @ErrorCode
END
3.2.1 來電管理
來電管理作為整個聯(lián)網訂房系統(tǒng)最核心的業(yè)務,把這個功能嵌在訂房模塊的主界面,有權限的用戶登錄系統(tǒng)后就直接顯示這個頁面。
來電管理頁面劃分成四個區(qū)域:左邊區(qū)域顯示當前來電信息,顯示來電號碼、客人姓名、會員生日等基本信息,以及預約次數(shù)、取消次數(shù)、失約率、消費金額、消費次數(shù)、單均消費等統(tǒng)計數(shù)據(jù),突出顯示會員生日、失約率、單均消費這三個重要信息,方便客服人員開展個性化服務;中間區(qū)域顯示今日來電記錄,用顏色區(qū)分未接來電和留言來電,提醒客服人員回撥未接來電、收聽留言信息;右邊上半部分顯示當前來電號碼的歷史來電信息;右邊下半部分顯示當前來電會員的歷史消費情況和預訂情況。
來電管理頁面如圖4所示。
圖4 來電管理
通過在來電管理頁面放置一個時鐘控件(TTimer)調用話機產商提供的動態(tài)庫接口來獲到話機狀態(tài),判斷來電事件,根據(jù)不同的話機狀態(tài)進行相應的處理。
3.2.2 房間預訂
有權限的用戶登錄訂房模塊之后才能使用這個功能,它可以通過來電管理界面進入,也可以從系統(tǒng)菜單的“房間預訂”進入??头藛T需要先跟來電客人確定將要預訂門店、預抵日期、時間,根據(jù)這三個信息確定是否還有房間可以接受預訂,如果可以則進入預訂頁面。預訂頁面的客人基本信息自動從來電頁面讀取,客服人員選擇完房間類型之后即可完成預訂,也可根據(jù)實際需要填寫其它信息提交預訂,預訂成功后自動生成預訂短信發(fā)送到客人手機上。
預訂信息合法性校驗的部分代碼如下:
if Trim(edt_GuestName.Text) = '' then
begin
Pub_ShowMessage('客人姓名不能為空,請輸入!', 1);
if edt_GuestName.CanFocus then
edt_GuestName.SetFocus;
Exit;
end;
if Trim(edt_TelNo.Text) = '' then
begin Pub_ShowMessage('聯(lián)系電話不能為空,請輸入!', 1);
if edt_TelNo.CanFocus then
edt_TelNo.SetFocus;
Exit;
end;
3.2.3 投訴建議
有權限的用戶登錄訂房模塊之后,通過系統(tǒng)菜單“投訴建議”進入投訴建議維護頁面。第一個頁面顯示歷史數(shù)據(jù)信息,分為條件查詢區(qū)域和數(shù)據(jù)顯示區(qū)域,在數(shù)據(jù)顯示區(qū)域選中一條記錄后,在表格下方顯示出該記錄的投訴或建議內容以及回復內容,通過右邊的操作按鈕可以進入下一層操作頁面(如:登記、修改、回復)。中間的投訴建議數(shù)據(jù)顯示列表用紅色背景高亮顯示需要回復且未回復的記錄,以提醒客服人員及時進行跟進。
3.3.1 客戶分析
有權限的用戶登錄數(shù)據(jù)分析模塊之后,從系統(tǒng)菜單“客戶分析”進入。客戶分析頁面包含三個功能:消費分析、活躍度分析、分布分析。
①消費分析:統(tǒng)計每個會員的充值情況、消費情況、卡余額、消費次數(shù)等。頁面分為數(shù)據(jù)顯示區(qū)域和操作區(qū)域,通過“查詢條件”按鈕進入二級頁面選擇查詢條件;提供打印、導出、查看明細等功能,并且可以按會員卡號、會員等級進行過濾。②活躍度分析:統(tǒng)計三種類型的會員(活躍會員、沉默會員、僵尸會員)。六個月以內消費次數(shù)最多的為活躍會員;六個月以內沒有消費,但以前的消費記錄的會員為沉默會員;建卡以來都沒有消費記錄的為僵尸會員。每一類會員用一種顏色區(qū)分開來,頁面可以選擇統(tǒng)計某一類別的會員以及顯示會員數(shù)量,通過點擊列頭可以按該列的值進行排序。
③會員分布分析:統(tǒng)計會員的分布情況,分為地區(qū)分布、年齡分布、性別分布三種統(tǒng)計方式,以餅圖的形式體現(xiàn)。
會員分布分析頁面如圖5所示。
圖5 分布分析
圖6時段分布
3.3.3 來電分析
有權限的用戶登錄數(shù)據(jù)分析模塊之后,從系統(tǒng)菜單“來電分析”進入。來電分析頁面包含:時段分布、區(qū)域分布、來電響應、滿意度分析。
①時段分布:按日期范圍統(tǒng)計一天24小時的來電分布情況,以走勢圖的形式展現(xiàn)。
時段分布頁面如圖6所示。
②區(qū)域分布:按日期范圍統(tǒng)計來電區(qū)域的分布情況,以餅圖的形式展現(xiàn)。
③來電響應:統(tǒng)計每一通來電從第一聲響鈴開始到接聽的時間間隔,以數(shù)據(jù)表格的形式展現(xiàn)。
④來電滿意度分析:根據(jù)每一通來電結束時的滿意度調查,分析滿意度分布情況,以餅圖的形式展現(xiàn),雙擊餅圖可進入查看明細。
預訂排房模塊包含預訂信息查詢、預訂信息修改/撤訂、等候、叫號、排房等子功能。排房短信也是設計為后臺功能,由排房功能觸發(fā)執(zhí)行。排房成功后系統(tǒng)自動按預訂電話號碼生成排房短信(短信的格式模板可以在參數(shù)設置模塊進行編輯)保存到短信隊列表中,由短信服務通過短信網關或者短信貓發(fā)送到客人手機上。
經過幾輪的測試、修改以及和其它業(yè)務模塊的聯(lián)調,本系統(tǒng)已經達到預期目標,充分完成設定的需求功能,業(yè)務功能也都能滿足市場的需求,達到發(fā)布版本的基本要求。當然,在投放市場之后,由于使用環(huán)境、操作習慣等原因,還會產生各種各樣的BUG,在后期的系統(tǒng)維護階段及時跟進完善。
主要研究了COM/DCOM和MIDAS技術在分布式聯(lián)網訂房系統(tǒng)的設計和實現(xiàn)階段地應用,詳細介紹了該系統(tǒng)的功能結構、架構設計和實現(xiàn)過程。由于這種模型好擴展、易維護、比其他系統(tǒng)的效率大大提高,并且成本較低,更加安全可靠。相信這個系統(tǒng)將對傳統(tǒng)訂房業(yè)務的發(fā)展和變革起到積極的推動促進作用,并對其它項目的設計、開發(fā)也將有一定的借鑒意義。當然還是存在一些系統(tǒng)功能需要更進一步的改進和完善,接下來工作的重點是優(yōu)化系統(tǒng)功能、加強系統(tǒng)安全性、提高系統(tǒng)執(zhí)行效率,當今社會是大數(shù)據(jù)時代,如何對數(shù)據(jù)進行更加有效的挖掘、分析,最大限度的發(fā)揮數(shù)據(jù)自身的價值,為企業(yè)運營、發(fā)展將提供合理性的建議。
[1] 陳耿,文登敏.一個基于MIDAS的分布式數(shù)據(jù)庫軟件的實現(xiàn).計算機應用,2002,22(9):71-73.
[2] 王恢,徐重陽,薔薇,等.基于C/S結構的網絡計算模型[J].計算機應用研究,2000,17(9):51-53.
[3] 徐新華.Delphi5高級編程--Database與MIDAS編程[M].人民郵電出版社,2000.04,32-34.
[4] 李維.Delphi 5.X ADO.MTS.COM+高級程序設計篇.機械工業(yè)出版社,2000,13(2):15-18.
[5] 王能斌.數(shù)據(jù)庫系統(tǒng).電子工業(yè)版本社,1995,14(3):45-47.
[6] 左彥忠,盛翊智.基于MIDAS分布式多層系統(tǒng)執(zhí)行效率的研究.計算機應用,2001,(5):85.