楊智勇,文澤江
(1.重慶工程職業(yè)技術(shù)學(xué)院 重慶 400037;2.重慶大學(xué)自動化學(xué)院 重慶 400044;3.中國通信服務(wù)集團(tuán)重慶分公司 重慶 400033)
當(dāng)前國內(nèi)的電信運營商——中國移動、中國電信、中國聯(lián)通形成了三足鼎立之勢。中國電信要想在競爭中取得優(yōu)勢地位,發(fā)展客戶是首要工作,渠道的經(jīng)營和管理變得越來越重要。在電信銷售渠道建設(shè)中,代理商已經(jīng)成為公司發(fā)展業(yè)務(wù)的主要渠道和提升企業(yè)核心競爭力的關(guān)鍵因素。當(dāng)前,電信公司主要采用代理商客戶關(guān)系管理系統(tǒng)和網(wǎng)上營業(yè)廳進(jìn)行代理商的經(jīng)營管理,但該系統(tǒng)與電信公司的其余系統(tǒng)之間難以集成,信息資源分割,各自為政,形成大量的信息孤島。為了解決以上問題,電信公司急需開發(fā)一款具有較高可用性、安全性和可維護(hù)性的電信代理商綜合管理系統(tǒng),以高效、快捷地為用戶提供服務(wù),同時減輕電信營業(yè)廳的業(yè)務(wù)壓力和降低電信公司自身的運營成本。
針對電信公司的需求,在對國內(nèi)外各種電信代理商管理系統(tǒng)進(jìn)行充分調(diào)研和分析的基礎(chǔ)上,筆者采用OSGI和Ext JS技術(shù)研究并實現(xiàn)了基于Web的電信代理商綜合管理系統(tǒng),在系統(tǒng)的實際運行中達(dá)到了提高系統(tǒng)的可用性、安全性和可維護(hù)性,實現(xiàn)與第三方系統(tǒng)的高內(nèi)聚、低耦合和系統(tǒng)間的分布式協(xié)同應(yīng)用的效果。
Ext JS是一種用于開發(fā)富客戶端Web應(yīng)用程序的JavaScript技術(shù),是基于Ajax組件的框架技術(shù),是一個優(yōu)秀的javascriptUI組件庫。Ext JS將常見的UI(界面)操作代碼封裝成組件,并將組件按一定結(jié)構(gòu)打包成組件庫,供程序調(diào)用,以提高開發(fā)效率,使用Ext JS很容易就能創(chuàng)建出優(yōu)雅的頁面布局,快速綁定數(shù)據(jù)到相應(yīng)組件并更新視圖,為解決一些具有一對多、多對多關(guān)系的多個數(shù)據(jù)表聯(lián)動查詢更新顯示、分頁顯示、樹狀結(jié)構(gòu)顯示等復(fù)雜的UI操作問題提供了快捷的途徑[1]。在電信代理商系統(tǒng)中采用Ext JS技術(shù)可以提高客戶端用戶的體驗和減輕服務(wù)端表示層的負(fù)荷,達(dá)到提高客戶機(jī)和服務(wù)器動態(tài)交互功能的目的。
OSGI(open service gateway initiative)是開放服務(wù)網(wǎng)關(guān)組織制定的一個基于Java語言的業(yè)務(wù)規(guī)范服務(wù)平臺。該服務(wù)平臺由兩部分組成,即OSGI框架和一個OSGI標(biāo)準(zhǔn)服務(wù)的集合。該技術(shù)為開發(fā)者提供了一個面向服務(wù)的、基于構(gòu)件的環(huán)境,并且提供了一套標(biāo)準(zhǔn)的方法來管理軟件的生命周期[2]。
OSGI規(guī)范的核心組件是OSGI框架。這個框架為應(yīng)用程序組件(bundle)提供了一個標(biāo)準(zhǔn)環(huán)境。bundle是OSGI應(yīng)用中具體實現(xiàn)應(yīng)用的基本單位,一個bundle就是一個jar文件,其中包含所需的類文件和資源文件,并包含一個描述文件。每個bundle都可以被獨立打包、部署。OSGI應(yīng)用以一組服務(wù)為單位,包含多個bundle。OSGI框架提供了一套機(jī)制來安裝、開啟、關(guān)閉、更新和卸載bundle[3]。如圖1所示[2],在OSGI中,服務(wù)提供者和服務(wù)需求者都實現(xiàn)為bundle。在OSGI模型中,任何一個Java類都可以通過一個bundle以服務(wù)的形式發(fā)布。
OSGI服務(wù)平臺架構(gòu)主要由framework、bundle和service組成。其中,framework架構(gòu)在 JVM(Java virtual machine)上運行,bundle(服務(wù)包)是運行在framework上的應(yīng)用程序,而service是bundle所提供(export)或所需(import)的服務(wù)。從遠(yuǎn)端下載的bundle會在OSGI framework上自動安裝、執(zhí)行,并向OSGI服務(wù)平臺注冊bundle所提供共享或所需要的服務(wù) (service)[4]。在電信代理商系統(tǒng)中采用OSGI的熱插拔技術(shù)可以實現(xiàn)模塊之間的高內(nèi)聚、低耦合,從根本上保證了電信代理商管理系統(tǒng)在運行期有足夠的靈活性和擴(kuò)展性。
本文設(shè)計的電信代理商管理系統(tǒng)的主要功能在于能夠?qū)Ψ咒N業(yè)務(wù)代理商、合作營業(yè)廳、代繳費代理商、代維代理商等各類代理商提供業(yè)務(wù)受理、收費、考核、評價、酬金結(jié)算、酬金支付、預(yù)警、業(yè)務(wù)發(fā)展計劃管理、營銷資源配置等功能的支持與管理,解決管理及系統(tǒng)支撐工作落后于代銷網(wǎng)絡(luò)的快速發(fā)展,實現(xiàn)電信業(yè)務(wù)代理商的統(tǒng)一數(shù)據(jù)(定義、存取、統(tǒng)計、查詢)管理、統(tǒng)一銷售模板處理流程、統(tǒng)一考核模板處理流程、統(tǒng)一投訴處理管理、統(tǒng)一信息交流平臺的問題,并同時實現(xiàn)豐富的統(tǒng)計報表功能。通過使用Ext JS技術(shù)提高用戶的訪問速度和減輕服務(wù)器的負(fù)載。整個系統(tǒng)的功能結(jié)構(gòu)如圖2所示。
系統(tǒng)各組成部分如下。
(1)代理商業(yè)務(wù)受理模塊
該模塊主要為代理商業(yè)務(wù)人員提供商品包的售賣、產(chǎn)品變更、商品包變更等業(yè)務(wù)的受理。首先,由代理商管理人員登錄,顯示出所有代理商的基本信息,可以根據(jù)條件來查詢代理商,選擇該代理商的業(yè)務(wù)管理后,進(jìn)入代理商的業(yè)務(wù)功能。在選擇該代理商的業(yè)務(wù)功能時,還要對代理商下的所有用戶進(jìn)行身份驗證、分配業(yè)務(wù)功能和對用戶提出的業(yè)務(wù)申請進(jìn)行審批。代理商業(yè)務(wù)人員登錄后,可以在授權(quán)范圍內(nèi)開展代理業(yè)務(wù),包括業(yè)務(wù)選擇、業(yè)務(wù)數(shù)據(jù)輸入、業(yè)務(wù)提交、號碼選擇及銷售、設(shè)備銷售及促銷品贈送、業(yè)務(wù)收費、發(fā)票打印等。
(2)代理商資料管理
代理商資料管理主要提供代理商檔案信息、合同信息以及競爭對手信息的管理。對代理商的檔案信息進(jìn)行維護(hù),包括增刪改,所有操作需記錄日志,當(dāng)新增代理商檔案信息時,以頁面流的方式引導(dǎo)用戶建立。競爭對手管理主要實現(xiàn)競爭對手基本信息的錄入、修改和查詢功能,包括對競爭對手渠道檔案信息及競爭對手營銷人員資料信息的管理功能。
(3)代理商發(fā)展管理
代理商發(fā)展管理主要包括代理商資質(zhì)申請、資質(zhì)審核、代理業(yè)務(wù)范疇劃分、代理銷售品劃分、代理商退出和審核等功能。
(4)代理商資源管理
代理商資源主要有終端、UIM白卡、UIM成品卡、充值卡、發(fā)票、促銷物品等。資源管理主要包括入庫、出庫、維護(hù)、報廢、查詢、預(yù)警等。
(5)代理商費用管理
代理商費用管理主要包括代理商保證金、押金的扣除、退還和收取,成本計劃的制定和審核、支付等功能。
(6)流程管理
流程管理是指電信代理商管理中完成一次管理過程需要的全部操作節(jié)點的集合。流程支持串行、并行、分支和串并行混合4種類型,流程中一個節(jié)點最多對應(yīng)一個環(huán)節(jié),流程節(jié)點可以根據(jù)條件跳過。流程節(jié)點不支持多任務(wù),也就是流程調(diào)度中,一個流程節(jié)點同時最多只能產(chǎn)生一個任務(wù),任務(wù)處理完成后調(diào)度進(jìn)入下一環(huán)節(jié)。
(7)傭金管理
傭金管理模塊包括傭金結(jié)算參數(shù)設(shè)置、傭金結(jié)算規(guī)則配置和傭金結(jié)算,通過維護(hù)傭金結(jié)算系統(tǒng)控制、功能點控制等參數(shù)(如特殊功能按鈕的虛實設(shè)置、業(yè)務(wù)閥值設(shè)置)和維護(hù)與結(jié)算業(yè)務(wù)有關(guān)的參數(shù)(如結(jié)算單元定義、返還比例設(shè)置、結(jié)算相關(guān)指標(biāo)設(shè)定、優(yōu)先級等元素類編碼)來生成代理商客戶的結(jié)算規(guī)則,再根據(jù)信息客戶綁定的結(jié)算產(chǎn)品、信息客戶發(fā)展用戶綁定的結(jié)算產(chǎn)品,結(jié)合代理商發(fā)展的業(yè)務(wù)信息及代理商發(fā)展用戶的消費信息,結(jié)算出信息代理商應(yīng)得的傭金。
電信代理商管理統(tǒng)采用三層體系結(jié)構(gòu)進(jìn)行設(shè)計,即表現(xiàn)層、業(yè)務(wù)層、數(shù)據(jù)層,如圖3所示。
(1)表現(xiàn)層
傳統(tǒng)Web應(yīng)用程序的表現(xiàn)層一般只負(fù)責(zé)頁面顯示,一個頁面對應(yīng)一個事件,每個事件都需要提交并返回全部頁面,這樣不但用戶交互界面不友好,而且網(wǎng)絡(luò)流量和服務(wù)器壓力都很大,影響系統(tǒng)性能。本文采用Ext JS框架,把Web程序做得像桌面應(yīng)用程序一樣,采用DWR框架與服務(wù)器之間按需取數(shù)據(jù)實現(xiàn)與用戶的實時交互。
(2)業(yè)務(wù)層
業(yè)務(wù)層集中了系統(tǒng)的業(yè)務(wù)邏輯處理功能,可以說是該應(yīng)用軟件系統(tǒng)中的核心部分。整個系統(tǒng)的健壯性、靈活性、可重用性、可升級性和可維護(hù)性,在很大程序上取決于業(yè)務(wù)層的設(shè)計。因此,業(yè)務(wù)層的設(shè)計嚴(yán)格遵循高內(nèi)聚、低耦合,本系統(tǒng)使用OSGI熱插拔技術(shù)實現(xiàn)系統(tǒng)的高內(nèi)聚、低耦合,用DWR接收ExtJS提交的請求,根據(jù)參數(shù)選擇相應(yīng)的處理方法,再調(diào)用數(shù)據(jù)持久層的方法訪問數(shù)據(jù)庫,最后把處理的結(jié)果返回給Ext JS的回調(diào)函數(shù)。
(3)數(shù)據(jù)層
數(shù)據(jù)層的功能是訪問數(shù)據(jù)庫,完成數(shù)據(jù)的存儲以及對數(shù)據(jù)庫的基本操作。系統(tǒng)數(shù)據(jù)層從電信業(yè)務(wù)數(shù)據(jù)量巨大、安全性和兼容性等方面考慮,使用Informix數(shù)據(jù)庫作為支撐平臺。在數(shù)據(jù)庫設(shè)計上,根據(jù)電信業(yè)務(wù)的特點,包括了兩類數(shù)據(jù),分別是代理商系統(tǒng)自有的數(shù)據(jù)和其他系統(tǒng)提供的數(shù)據(jù)。
基于電信提供的業(yè)務(wù)及用戶的特殊性,要求系統(tǒng)具有較高的安全性、可用性和可維護(hù)性。因此,在可維護(hù)性方面,系統(tǒng)采用了OSGI容器,該容器的最大優(yōu)點是能夠使模塊實現(xiàn)松耦合,能夠?qū)⑾到y(tǒng)的各個模塊生成相對獨立的包,在系統(tǒng)升級和維護(hù)時,不需要將整個系統(tǒng)都打包,然后再發(fā)布,只需要發(fā)布修改后的單獨的包就可以了,也就是說,由于需求的變動,可能需要修改某個模塊,而不會影響整個系統(tǒng)的使用。
在安全性方面,使用OSGI容器,即使其中某個模塊發(fā)生故障,也不會使整個系統(tǒng)癱瘓。由于該系統(tǒng)要同很多的第三方系統(tǒng)進(jìn)行交互,就需要用到很多接口,在設(shè)計時,根據(jù)OSGI的優(yōu)點,將每個第三方系統(tǒng)的接口封成一個單獨的塊(包),這樣當(dāng)某個塊發(fā)生故障時,只需要將該塊修改后重新發(fā)布,而不會影響其他塊的運行,這樣保證了系統(tǒng)的安全性。
在可用性方面,分別考慮了前臺用戶和后臺用戶的特殊性。對于前臺用戶,是所有中國電信的代理商,使用的面比較廣,就不能做成MIS的形式,要做成門戶網(wǎng)站的風(fēng)格,并且要支持多種瀏覽器,使用Jquery框架結(jié)合DWR框架的方式同業(yè)務(wù)層進(jìn)行動態(tài)交互,使用Jquery使JSP頁面不再有JavaSrcipt代碼,并且支持多種瀏覽器,改變了傳統(tǒng)方式針對不同的瀏覽器寫不同的JavaScript代碼。采用DWR框架解決了客戶端與服務(wù)器的通信速度問題,滿足了系統(tǒng)對異步請求的高要求。
后臺管理方面,其主要操作對象為中國電信的工作人員,因此不宜做成門戶網(wǎng)站的風(fēng)格,要做成MIS風(fēng)格,因此采用了Ext JS框架。在表現(xiàn)層,采用的是ExtJS結(jié)合DWR框架的形式。在系統(tǒng)的業(yè)務(wù)層,采用了Spring框架,Spring框架的作用是作為事務(wù)管理,并將數(shù)據(jù)層和表現(xiàn)層聯(lián)系起來,實現(xiàn)數(shù)據(jù)的交互。本系統(tǒng)的數(shù)據(jù)層,采用的是Hibernate框架,該框架只有強(qiáng)大的事務(wù)支持和事務(wù)管理能力,深受目前B/S系統(tǒng)架構(gòu)者的歡迎。在和其他系統(tǒng)的通信方面,本系統(tǒng)采用SOAP,通過WebService實現(xiàn)數(shù)據(jù)快速、安全的交互。
鑒于篇幅,本文只針對代理商費用管理模塊的實現(xiàn)進(jìn)行介紹??蛻粼谏暾埑蔀榇砩虝r需先預(yù)存一部分的保證金和押金,根據(jù)受理業(yè)務(wù)的金額扣去相應(yīng)的押金,并在押金不足時進(jìn)行報警。電信管理人可以使用余額查詢功能和系統(tǒng)報警功能,隨時了解代理商的押金和保證金的余額情況,管理人員通過進(jìn)入后臺管理系統(tǒng),點擊“代理商費用管理”目錄即可進(jìn)入代理商余額查詢,如圖4所示。
在圖4中可以實現(xiàn)對代理商的保證金和押金進(jìn)行及時查詢,當(dāng)管理員選擇了保證金或押金后,點擊查詢按鈕,此時Ext JS將從頁面獲取信息,實現(xiàn)費用管理模塊功能的部分Ext JS關(guān)鍵代碼,具體如下。
//費用管理模塊Ext JS部分代碼。
var dwr={
getAgentsOfCurrWorker:authDwr.getAgentsOfCurrWorker,
queryAgentEnsureFeeDwr:deductFeeDwr.
queryAgentEnsureFeeDwr
};
……
//在Ext JS獲取到頁面信息后,通過調(diào)用 DWR,其代碼如下。
public List
queryAgentEnsureFeeDwr(Long agentId,int type)
{
return agentFeeChangeService.doQueryAgentEnsureFee(agentId,type);
}
//在DWR方法中調(diào)用業(yè)務(wù)邏輯層的Service,此Service的代碼如下。
public List
{
Map
Map
List
String agentName="";
filter.put("agentId",agentId);
List
try
{
td=tisyAgentDossierDao.find(filter);
}
catch(Exception e)
{
log.debug("查詢代理商名字失敗----------->+"+e.getMessage());
}
……
通過Service調(diào)用數(shù)據(jù)層,數(shù)據(jù)層是由Spring控制,Hibernate來實現(xiàn)。數(shù)據(jù)層根據(jù)獲取的參數(shù),進(jìn)行匹配查詢,將查詢結(jié)果返回到頁面。
該系統(tǒng)投入運行已經(jīng)有兩年,從目前的運行情況看,在安全方面,因第三方接口的變化,導(dǎo)致多次對系統(tǒng)進(jìn)行改造。本系統(tǒng)采用OSGI技術(shù)將各個模塊獨立,在某個模塊需要變動時,只需要停止該模塊,重新發(fā)布就可以了,對其他的模塊沒有任何影響,這點得到了客戶的高度贊揚。由于采用了Ext JS和Jquery框架,使得本系統(tǒng)在兼容性上取得了巨大的成功,實現(xiàn)了對當(dāng)前主流瀏覽器的支持,同時也提高了客戶端和服務(wù)器端的動態(tài)交互性和減輕了服務(wù)器端表示層的負(fù)荷。
從該系統(tǒng)投入運行的效果來看,不但解決了傳統(tǒng)代理系統(tǒng)的可用性、安全性、可維護(hù)性等問題,還實現(xiàn)了分級管理,提高了電信代理商的營業(yè)額,通過表1可以看出系統(tǒng)從2008年投入使用后,代理商的營業(yè)額逐年提升,占到了該省電信業(yè)務(wù)收入的40%,同時該系統(tǒng)的投入為規(guī)范代理商管理和為電信公司開發(fā)市場提供了手段和工具。
表1 某省近3年的代理商營業(yè)額
1 劉增才,李曉霞,袁小龍.基于SSH+Ext JS架構(gòu)的化學(xué)數(shù)據(jù)知識框架管理.計算機(jī)與應(yīng)用化學(xué),2008,25(9),1149
2 馮志宇,黃林鵬.基于OSGI的兩層服務(wù)模型.計算機(jī)應(yīng)用研究,2009,26(7),2591
3 陳麗欣.基于OSGi平臺家庭網(wǎng)關(guān)的遠(yuǎn)程監(jiān)控服務(wù)系統(tǒng).計算機(jī)工程與設(shè)計,2009,30(13):3248~3249
4 姜華,苗克堅.基于OSGi服務(wù)網(wǎng)關(guān)的溫度報警系統(tǒng)的設(shè)計.計算機(jī)工程與設(shè)計,2009,30(18),4177