摘要:該文基于J2EE平臺,闡述了呼叫中心排班管理系統(tǒng)的設(shè)計與實現(xiàn),重點描述了其各個功能模塊、排班算法及所采用的關(guān)鍵技術(shù),并以某呼叫中心為科研背景驗證了其算法的準確性、合理性。較相關(guān)之類,該系統(tǒng)具有更安全、更穩(wěn)定、更易擴展、更易維護之優(yōu)點。
關(guān)鍵詞:呼叫中心;J2EE;排班管理;Erlang C
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2010)01-235-03
排班管理是一個優(yōu)化決策系統(tǒng),它以提高客戶滿意度和客服代表績效為目的,即根據(jù)客服中心制定的服務(wù)指標、排班規(guī)則、人力資源等條件,利用決策優(yōu)化理論合理安排客服代表的排班、休假,以使客服中心的資源得到優(yōu)化配置,從而提高服務(wù)質(zhì)量、降低運營成本。目前流行的排班管理方式主要是基于手工排班方式,這種排班方式受約束多,困難多,如:1) 計算繁瑣、耗時;2) 獲取數(shù)據(jù)困難;3) 難以實時觀察到話務(wù)量的變化趨勢;4) 難以安排處理多技能的座席;5) 難以滿足員工的愿望;6) 難以分析員工的選擇等。以上幾個方面的問題都會導(dǎo)致預(yù)計員工座席數(shù)量與實際需求數(shù)量的偏差,如果預(yù)計的員工數(shù)量少于需求,就會降低呼叫中心的服務(wù)水平,反之,就會造成資源浪費,成本增加,降低運營效率。可見,這種排班管理已不能滿足用戶日益增長的需求了,然而,采用自動排班的算法如基于優(yōu)先級自動排班算法PCSA的設(shè)計與實現(xiàn)方案、基于多目標優(yōu)化的遺傳算法、基于 Erlang C函數(shù)的數(shù)學(xué)模型、回溯算法等就可以彌補這些不足。本文通過制定Erlang C參數(shù)和利用歷史話務(wù)數(shù)據(jù)來進行坐席數(shù)預(yù)測、話務(wù)預(yù)測,進而生成坐席和話務(wù)的預(yù)測曲線,最終實現(xiàn)安排不同時間段和技能組的工作班以及在突發(fā)事件中調(diào)整工作班等功能。
1 Erlang C算法介紹
1.1 Erlang C算法的基本思想
Erlang C的計算方法通過計算靜態(tài)的等式來預(yù)測排隊時長、員工工作量和最佳的員工排班水平,并利用這個公式來計算滿足服務(wù)水平目標所需要的人員數(shù)量以及中繼線數(shù)量。當給出設(shè)定的員工人數(shù)以及確定的來電數(shù)量時,該公式可以計算出來電延誤接聽的數(shù)量。基于Erlang C可以計算出多個不同服務(wù)水平狀態(tài)下所需要的不同的員工人數(shù),排班管理人員只需要挑選一個最接近于或者等同于所設(shè)定的服務(wù)水平指標的一組數(shù)值,就可以確定在一定量的來話次數(shù)情況下,要滿足設(shè)定的服務(wù)水平指標所需要的人員數(shù)量,并可以了解任何一個時段在排定不同的人員服務(wù)水平時的隊列情況及員工負荷情況。
1.2 關(guān)于Erlang C函數(shù)及其應(yīng)用說明
Erlang C 公式基于泊松分布模型、計算話務(wù)量、服務(wù)水準與所需人力資源之間的關(guān)系。
Erlang C 公式假定:在一個呼入型呼叫中心內(nèi),當顧客來話時,如果話務(wù)員不能立即接聽電話,該電話將進入等待隊列。
Erlang C 公式還假定:所有的話務(wù)員在當班期間可以一直接聽電話,不會休息,也不會處理與電話無關(guān)的業(yè)務(wù)。這一假定與實際情況不同。
Erlang C 公式再假定:當顧客電話進入等待隊列,顧客將一直等待,從不掛斷,直到該電話被接聽。這一假定也與實際情況不同。
總之,基于 Erlang C 函數(shù)的數(shù)學(xué)模型,在計算呼入型呼叫中心的人力資源需求時,并不能反映實際工作的全貌,因此在實際工作中,需要根據(jù)現(xiàn)實情況,對數(shù)學(xué)計算結(jié)果做進一步的人力資源調(diào)整。
本系統(tǒng)在計算時采用的Erlang C公式如下:
1) 函數(shù)計算需要的三個輸入?yún)?shù):
呼入電話數(shù)量(個/小時),即對于特定的時段,呼入電話的平均數(shù)量。
平均處理時長(秒),即從話務(wù)員振鈴,到完成呼叫并準備接聽下一通電話,話務(wù)員處理一通電話的平均時長。
服務(wù)目標(秒),即可以容忍顧客(平均)等待的時間。這是一個服務(wù)目標,通常根據(jù)呼叫中心的經(jīng)營要求設(shè)定。
2) 基于服務(wù)目標,函數(shù)計算給出一個重要的輸出參數(shù):
最少人員需求,即所需要的當班話務(wù)員的最少人數(shù)。
3) 基于特定的話務(wù)員數(shù)量,函數(shù)計算給出一組輸出參數(shù):
話務(wù)員,即當班且能夠全力接聽電話的話務(wù)員人數(shù)。
延遲率,即有多少顧客進入等待隊列。
平均應(yīng)答速度,即無論顧客是否需要等待,其在等待隊列中的平均時間。
占有率,即話務(wù)員用于接聽電話的時間占其全部工作時長的比例。特別注意:我們假定話務(wù)員不休息,也不會處理其它非話務(wù)事務(wù)。
服務(wù)水準:顧客電話在服務(wù)目標時限內(nèi)被接聽的比例。特別注意:我們假定所有電話均不會被放棄。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)功能模塊劃分
排班是指在對服務(wù)歷史數(shù)據(jù)統(tǒng)計分析的基礎(chǔ)上,通過預(yù)測模型對未來業(yè)務(wù)量進行預(yù)測,并按照一定的規(guī)則合理安排服務(wù)人員值勤班表,以滿足實現(xiàn)服務(wù)目標的過程。
排班管理包括對排班提供業(yè)務(wù)量預(yù)測、人力需求預(yù)測、排班生成、班務(wù)調(diào)整、結(jié)果監(jiān)控等方面的管理。
1) 業(yè)務(wù)量預(yù)測包括預(yù)測數(shù)據(jù)源、預(yù)測模型、模型參數(shù)、統(tǒng)計粒度、擬合度、預(yù)測周期、預(yù)測結(jié)果的展示、業(yè)務(wù)類型統(tǒng)計以及客戶類型與技能預(yù)測結(jié)果的關(guān)系。
2) 人力需求預(yù)測是指根據(jù)業(yè)務(wù)量預(yù)測的結(jié)果及期望的服務(wù)水平(滿意度)、員工的工時利用率參數(shù)對各時段需要的人力進行預(yù)測,為自動排班作參考。
3) 班表生成是指基于人力預(yù)測的結(jié)果,根據(jù)系統(tǒng)中實際人力資源及排班條件,為預(yù)定時段內(nèi)自動合理安排人力資源的過程。
4) 班務(wù)調(diào)整是指在自動排班結(jié)果的基礎(chǔ)上,根據(jù)人力資源的實際情況,如請假、換班、加班等班務(wù)調(diào)整申請,對排班結(jié)果進行人工調(diào)整和優(yōu)化的過程。
5) 班務(wù)監(jiān)控是指對某一時段現(xiàn)場業(yè)務(wù)量產(chǎn)生的實際人員需求和當前班表設(shè)定的人員數(shù)量進行實時監(jiān)控和比較的管理過程,班務(wù)監(jiān)控的結(jié)果可以作為班表實時調(diào)整的依據(jù)。
2.2 基于J2EE實現(xiàn)方式
下面通過分析設(shè)計排班管理功能的實現(xiàn)過程來說明該系統(tǒng)基于J2EE的實現(xiàn)方式。該系統(tǒng)是在J2EE平臺上設(shè)計開發(fā)的,其體系結(jié)構(gòu)如圖1所示。
為了充分滿足排班管理在安全性、穩(wěn)定性、實用性、可移植性、易擴展性、易維護性等方面的要求,排班管理采用基于Java平臺的J2EE技術(shù)體系,采用JSP、Servlet、EJB、XML等編程技術(shù)和面向?qū)ο蟪绦蛟O(shè)計方法,將復(fù)雜的業(yè)務(wù)邏輯、流程控制邏輯和數(shù)據(jù)存取邏輯通過在不同的技術(shù)層面上實現(xiàn),并通過應(yīng)用服務(wù)器實現(xiàn)業(yè)務(wù)邏輯的快速部署和靈活調(diào)整,以充分保證數(shù)據(jù)庫系統(tǒng)能被安全可靠訪問。
2.2.1 數(shù)據(jù)訪問層的設(shè)計與實現(xiàn)
數(shù)據(jù)訪問層在整個系統(tǒng)中的邏輯位置如圖2所示。
數(shù)據(jù)訪問層位于業(yè)務(wù)邏輯層與數(shù)據(jù)層之間,封裝了所有的數(shù)據(jù)訪問操作,也是業(yè)務(wù)邏輯層與數(shù)據(jù)層交互的唯一接口。數(shù)據(jù)訪問層的實現(xiàn)策略對排班管理的性能與伸縮性有非常大的影響,如果業(yè)務(wù)邏輯層不以高效的方式與數(shù)據(jù)層(Oracle)交互,則系統(tǒng)將是低性能的且不可伸縮的,由此,數(shù)據(jù)訪問層采用了以下的實現(xiàn)策略:
1) Oracle對標準SQL做了很多有價值的擴展,使用這些擴展對增強系統(tǒng)的穩(wěn)定性與提高系統(tǒng)的性能都具有很大的作用,因此,數(shù)據(jù)訪問層不引入支持數(shù)據(jù)庫平臺獨立的第三方持久性框架(比如:Hibernate),以避免第三方框架帶來的對SQL的限制、性能代價和配置復(fù)雜性。
2) 數(shù)據(jù)訪問層對JDBC進行輕量級的封裝,隱藏JDBC使用的復(fù)雜性,為業(yè)務(wù)邏輯層提供簡單一致的接口。
3) 數(shù)據(jù)訪問層使用J2EE應(yīng)用服務(wù)器的連接池與數(shù)據(jù)庫進行連接,系統(tǒng)使用連接池管理類統(tǒng)一管理數(shù)據(jù)庫連接。連接池管理類在系統(tǒng)第一次獲取數(shù)據(jù)庫連接時,使用JNDI查找數(shù)據(jù)源,然后緩存查找到的數(shù)據(jù)源,便于以后獲取連接時不需再進行數(shù)據(jù)源的查找,從而顯著地提高了獲取連接的性能。
4) 數(shù)據(jù)訪問層提供給業(yè)務(wù)邏輯層的接口不需要業(yè)務(wù)邏輯層獲取與關(guān)閉連接。數(shù)據(jù)庫連接的獲取與關(guān)閉封裝在數(shù)據(jù)訪問層,由數(shù)據(jù)訪問層確保可靠的關(guān)閉連接,避免數(shù)據(jù)庫連接泄漏。
5) 數(shù)據(jù)訪問層不進行事務(wù)(Transaction)管理,事務(wù)是業(yè)務(wù)邏輯的一部分,由業(yè)務(wù)邏輯層的EJB容器管理事務(wù)。這降低了數(shù)據(jù)訪問層的代碼復(fù)雜性,增加了事務(wù)管理的靈活性。
6) 數(shù)據(jù)訪問層支持通過綁定變量的方式與Oracle交互。使用綁定變量的方式具有以下優(yōu)點:
① 可以減少SQL語句的硬分析,節(jié)省CPU時間;
② 可以優(yōu)化SQL共享區(qū)的使用;
③ 可以減少拴鎖(Latch)的數(shù)量。
④ 事務(wù)處理型應(yīng)用通過綁定變量的方式與Oracle交互是構(gòu)建一個可伸縮與高性能系統(tǒng)的關(guān)鍵,如果系統(tǒng)不使用綁定變量的方式則肯定是不可伸縮的。
2.2.2 業(yè)務(wù)邏輯層的設(shè)計與實現(xiàn)
業(yè)務(wù)邏輯層定義統(tǒng)一的業(yè)務(wù)API(業(yè)務(wù)接口)且實現(xiàn)業(yè)務(wù)接口。業(yè)務(wù)邏輯層的功能示意圖如下:
從圖3可以看出,業(yè)務(wù)邏輯層的實現(xiàn)必需滿足以下要求:
1) 能滿足各種客戶端(J2EE客戶端與非J2EE客戶端)調(diào)用的要求,業(yè)務(wù)邏輯層是呼叫中心排班管理的統(tǒng)一業(yè)務(wù)API,任何業(yè)務(wù)操作都通過調(diào)用統(tǒng)一的業(yè)務(wù)API完成,從而確保業(yè)務(wù)口徑的一致性以及業(yè)務(wù)邏輯變更時的可維護性和可擴展性。
2) 業(yè)務(wù)邏輯層能支持客戶端的本地(Local)調(diào)用與遠程(Remote)調(diào)用。
3) 業(yè)務(wù)邏輯層能支持客戶端的同步(Synchronization)調(diào)用與異步(Asynchronization)調(diào)用。
4) 業(yè)務(wù)邏輯層能支持可配置的聲明性事務(wù)管理,事務(wù)邏輯是業(yè)務(wù)邏輯的一部分。
5) 業(yè)務(wù)邏輯層能支持集群的部署,以提高性能、可靠性與可伸縮性。
6) 根據(jù)業(yè)務(wù)邏輯層的實現(xiàn)要求,排班管理的業(yè)務(wù)邏輯層采用了以下技術(shù):
① 無狀態(tài)會話EJB (Stateless session bean);
② WebService,把EJB實現(xiàn)封裝成WebService服務(wù),這樣,同一個業(yè)務(wù)邏輯的EJB實現(xiàn)既可支持EJB的調(diào)用,也可支持基于WebService的調(diào)用。
2.2.3 表示層的設(shè)計與實現(xiàn)
表示層的主要功能包括:生成用戶界面、顯示用戶界面、響應(yīng)用戶的操作、采集用戶的輸入、調(diào)用業(yè)務(wù)邏輯層提供的接口(業(yè)務(wù)代表)完成業(yè)務(wù)操作等。表示層的邏輯位置示意圖如圖4。
2.3 數(shù)據(jù)對象設(shè)計
排班管理應(yīng)用涉及的數(shù)據(jù)對象包括班表、排班規(guī)則、服務(wù)人員、班務(wù)調(diào)整申請、預(yù)測模型和歷史數(shù)據(jù)等,如圖5所示。
排班管理應(yīng)用涉及的數(shù)據(jù)對象的實體關(guān)系如下:
1) 班表制定依賴于歷史數(shù)據(jù)和預(yù)測模型。
2) 一個班表必須包括一個或多個服務(wù)人員,服務(wù)人員也應(yīng)該從屬于一個或多個班表。
3) 排班規(guī)則適用于一個或多個班表,班表不一定限定排班規(guī)則,因此一個班表對應(yīng)零個或多個排班規(guī)則。
4) 服務(wù)人員可以提交班務(wù)調(diào)整申請,一個服務(wù)人員對應(yīng)零到多個班務(wù)調(diào)整申請。
5) 班務(wù)調(diào)整申請必須由服務(wù)人員提交,因此,班務(wù)調(diào)整申請可以對應(yīng)一個或多個服務(wù)人員。
6) 班務(wù)調(diào)整申請的批準結(jié)果會影響到班表的調(diào)整,因此,班表依賴于班務(wù)調(diào)整申請。
3 結(jié)束語
該系統(tǒng)采用了三層結(jié)構(gòu)的設(shè)計方案,給出了此次開發(fā)的呼叫中心排班管理的體系結(jié)構(gòu),并在此基礎(chǔ)上給出了排班算法的模型以及基于J2EE的實現(xiàn)方式。由于此設(shè)計方案是在J2EE 平臺上開發(fā)的,所以該系統(tǒng)可以很好地與其他系統(tǒng)集成。
參考文獻:
[1] 王黎明.國內(nèi)呼叫中心的發(fā)展情況分析(下)[J].數(shù)字通信世界,2007(4):27-30.
[2] 李愛振.CTI技術(shù)與呼叫中心[M].北京:電子工業(yè)出版社,2002:80-90.
[3] 李青,張軍,張學(xué)軍.解決排班問題的多目標優(yōu)化模型及算法研究[J].北京航空航天大學(xué)學(xué)報,2003,18(9):21-35.
[4] 李躍.呼叫中心的關(guān)鍵應(yīng)用技術(shù)[M].北京:北京郵電大學(xué)出版社,2005:30-122.
[5] 周明,孫樹棟.遺傳算法原理及應(yīng)用[M].北京:國防工業(yè)出版社,1999:45-102.