基于J2EE呼叫中心排班管理的设计与实现

时间:2022-06-10 04:40:38

基于J2EE呼叫中心排班管理的设计与实现

摘要:该文基于J2EE平台,阐述了呼叫中心排班管理系统的设计与实现,重点描述了其各个功能模块、排班算法及所采用的关键技术,并以某呼叫中心为科研背景验证了其算法的准确性、合理性。较相关之类,该系统具有更安全、更稳定、更易扩展、更易维护之优点。

关键词:呼叫中心;J2EE;排班管理;Erlang C

中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)01-235-03

排班管理是一个优化决策系统,它以提高客户满意度和客服代表绩效为目的,即根据客服中心制定的服务指标、排班规则、人力资源等条件,利用决策优化理论合理安排客服代表的排班、休假,以使客服中心的资源得到优化配置,从而提高服务质量、降低运营成本。目前流行的排班管理方式主要是基于手工排班方式,这种排班方式受约束多,困难多,如:1) 计算繁琐、耗时;2) 获取数据困难;3) 难以实时观察到话务量的变化趋势;4) 难以安排处理多技能的座席;5) 难以满足员工的愿望;6) 难以分析员工的选择等。以上几个方面的问题都会导致预计员工座席数量与实际需求数量的偏差,如果预计的员工数量少于需求,就会降低呼叫中心的服务水平,反之,就会造成资源浪费,成本增加,降低运营效率。可见,这种排班管理已不能满足用户日益增长的需求了,然而,采用自动排班的算法如基于优先级自动排班算法PCSA的设计与实现方案、基于多目标优化的遗传算法、基于 Erlang C函数的数学模型、回溯算法等就可以弥补这些不足。本文通过制定Erlang C参数和利用历史话务数据来进行坐席数预测、话务预测,进而生成坐席和话务的预测曲线,最终实现安排不同时间段和技能组的工作班以及在突发事件中调整工作班等功能。

1 Erlang C算法介绍

1.1 Erlang C算法的基本思想

Erlang C的计算方法通过计算静态的等式来预测排队时长、员工工作量和最佳的员工排班水平,并利用这个公式来计算满足服务水平目标所需要的人员数量以及中继线数量。当给出设定的员工人数以及确定的来电数量时,该公式可以计算出来电延误接听的数量。基于Erlang C可以计算出多个不同服务水平状态下所需要的不同的员工人数,排班管理人员只需要挑选一个最接近于或者等同于所设定的服务水平指标的一组数值,就可以确定在一定量的来话次数情况下,要满足设定的服务水平指标所需要的人员数量,并可以了解任何一个时段在排定不同的人员服务水平时的队列情况及员工负荷情况。

1.2 关于Erlang C函数及其应用说明

Erlang C 公式基于泊松分布模型、计算话务量、服务水准与所需人力资源之间的关系。

Erlang C 公式假定:在一个呼入型呼叫中心内,当顾客来话时,如果话务员不能立即接听电话,该电话将进入等待队列。

Erlang C 公式还假定:所有的话务员在当班期间可以一直接听电话,不会休息,也不会处理与电话无关的业务。这一假定与实际情况不同。

Erlang C 公式再假定:当顾客电话进入等待队列,顾客将一直等待,从不挂断,直到该电话被接听。这一假定也与实际情况不同。

总之,基于 Erlang C 函数的数学模型,在计算呼入型呼叫中心的人力资源需求时,并不能反映实际工作的全貌,因此在实际工作中,需要根据现实情况,对数学计算结果做进一步的人力资源调整。

本系统在计算时采用的Erlang C公式如下:

1) 函数计算需要的三个输入参数:

呼入电话数量(个/小时),即对于特定的时段,呼入电话的平均数量。

平均处理时长(秒),即从话务员振铃,到完成呼叫并准备接听下一通电话,话务员处理一通电话的平均时长。

服务目标(秒),即可以容忍顾客(平均)等待的时间。这是一个服务目标,通常根据呼叫中心的经营要求设定。

2) 基于服务目标,函数计算给出一个重要的输出参数:

最少人员需求,即所需要的当班话务员的最少人数。

3) 基于特定的话务员数量,函数计算给出一组输出参数:

话务员,即当班且能够全力接听电话的话务员人数。

延迟率,即有多少顾客进入等待队列。

平均应答速度,即无论顾客是否需要等待,其在等待队列中的平均时间。

占有率,即话务员用于接听电话的时间占其全部工作时长的比例。特别注意:我们假定话务员不休息,也不会处理其它非话务事务。

服务水准:顾客电话在服务目标时限内被接听的比例。特别注意:我们假定所有电话均不会被放弃。

2 系统设计

2.1 系统功能模块划分

排班是指在对服务历史数据统计分析的基础上,通过预测模型对未来业务量进行预测,并按照一定的规则合理安排服务人员值勤班表,以满足实现服务目标的过程。

排班管理包括对排班提供业务量预测、人力需求预测、排班生成、班务调整、结果监控等方面的管理。

1) 业务量预测包括预测数据源、预测模型、模型参数、统计粒度、拟合度、预测周期、预测结果的展示、业务类型统计以及客户类型与技能预测结果的关系。

2) 人力需求预测是指根据业务量预测的结果及期望的服务水平(满意度)、员工的工时利用率参数对各时段需要的人力进行预测,为自动排班作参考。

3) 班表生成是指基于人力预测的结果,根据系统中实际人力资源及排班条件,为预定时段内自动合理安排人力资源的过程。

4) 班务调整是指在自动排班结果的基础上,根据人力资源的实际情况,如请假、换班、加班等班务调整申请,对排班结果进行人工调整和优化的过程。

5) 班务监控是指对某一时段现场业务量产生的实际人员需求和当前班表设定的人员数量进行实时监控和比较的管理过程,班务监控的结果可以作为班表实时调整的依据。

2.2 基于J2EE实现方式

下面通过分析设计排班管理功能的实现过程来说明该系统基于J2EE的实现方式。该系统是在J2EE平台上设计开发的,其体系结构如图1所示。

为了充分满足排班管理在安全性、稳定性、实用性、可移植性、易扩展性、易维护性等方面的要求,排班管理采用基于Java平台的J2EE技术体系,采用JSP、Servlet、EJB、XML等编程技术和面向对象程序设计方法,将复杂的业务逻辑、流程控制逻辑和数据存取逻辑通过在不同的技术层面上实现,并通过应用服务器实现业务逻辑的快速部署和灵活调整,以充分保证数据库系统能被安全可靠访问。

2.2.1 数据访问层的设计与实现

数据访问层在整个系统中的逻辑位置如图2所示。

数据访问层位于业务逻辑层与数据层之间,封装了所有的数据访问操作,也是业务逻辑层与数据层交互的唯一接口。数据访问层的实现策略对排班管理的性能与伸缩性有非常大的影响,如果业务逻辑层不以高效的方式与数据层(Oracle)交互,则系统将是低性能的且不可伸缩的,由此,数据访问层采用了以下的实现策略:

1) Oracle对标准SQL做了很多有价值的扩展,使用这些扩展对增强系统的稳定性与提高系统的性能都具有很大的作用,因此,数据访问层不引入支持数据库平立的第三方持久性框架(比如:Hibernate),以避免第三方框架带来的对SQL的限制、性能代价和配置复杂性。

2) 数据访问层对JDBC进行轻量级的封装,隐藏JDBC使用的复杂性,为业务逻辑层提供简单一致的接口。

3) 数据访问层使用J2EE应用服务器的连接池与数据库进行连接,系统使用连接池管理类统一管理数据库连接。连接池管理类在系统第一次获取数据库连接时,使用JNDI查找数据源,然后缓存查找到的数据源,便于以后获取连接时不需再进行数据源的查找,从而显著地提高了获取连接的性能。

4) 数据访问层提供给业务逻辑层的接口不需要业务逻辑层获取与关闭连接。数据库连接的获取与关闭封装在数据访问层,由数据访问层确保可靠的关闭连接,避免数据库连接泄漏。

5) 数据访问层不进行事务(Transaction)管理,事务是业务逻辑的一部分,由业务逻辑层的EJB容器管理事务。这降低了数据访问层的代码复杂性,增加了事务管理的灵活性。

6) 数据访问层支持通过绑定变量的方式与Oracle交互。使用绑定变量的方式具有以下优点:

① 可以减少SQL语句的硬分析,节省CPU时间;

② 可以优化SQL共享区的使用;

③ 可以减少拴锁(Latch)的数量。

④ 事务处理型应用通过绑定变量的方式与Oracle交互是构建一个可伸缩与高性能系统的关键,如果系统不使用绑定变量的方式则肯定是不可伸缩的。

2.2.2 业务逻辑层的设计与实现

业务逻辑层定义统一的业务API(业务接口)且实现业务接口。业务逻辑层的功能示意图如下:

从图3可以看出,业务逻辑层的实现必需满足以下要求:

1) 能满足各种客户端(J2EE客户端与非J2EE客户端)调用的要求,业务逻辑层是呼叫中心排班管理的统一业务API,任何业务操作都通过调用统一的业务API完成,从而确保业务口径的一致性以及业务逻辑变更时的可维护性和可扩展性。

2) 业务逻辑层能支持客户端的本地(Local)调用与远程(Remote)调用。

3) 业务逻辑层能支持客户端的同步(Synchronization)调用与异步(Asynchronization)调用。

4) 业务逻辑层能支持可配置的声明性事务管理,事务逻辑是业务逻辑的一部分。

5) 业务逻辑层能支持集群的部署,以提高性能、可靠性与可伸缩性。

6) 根据业务逻辑层的实现要求,排班管理的业务逻辑层采用了以下技术:

① 无状态会话EJB (Stateless session bean);

② WebService,把EJB实现封装成WebService服务,这样,同一个业务逻辑的EJB实现既可支持EJB的调用,也可支持基于WebService的调用。

2.2.3 表示层的设计与实现

表示层的主要功能包括:生成用户界面、显示用户界面、响应用户的操作、采集用户的输入、调用业务逻辑层提供的接口(业务代表)完成业务操作等。表示层的逻辑位置示意图如图4。

2.3 数据对象设计

排班管理应用涉及的数据对象包括班表、排班规则、服务人员、班务调整申请、预测模型和历史数据等,如图5所示。

排班管理应用涉及的数据对象的实体关系如下:

1) 班表制定依赖于历史数据和预测模型。

2) 一个班表必须包括一个或多个服务人员,服务人员也应该从属于一个或多个班表。

3) 排班规则适用于一个或多个班表,班表不一定限定排班规则,因此一个班表对应零个或多个排班规则。

4) 服务人员可以提交班务调整申请,一个服务人员对应零到多个班务调整申请。

5) 班务调整申请必须由服务人员提交,因此,班务调整申请可以对应一个或多个服务人员。

6) 班务调整申请的批准结果会影响到班表的调整,因此,班表依赖于班务调整申请。

3 结束语

该系统采用了三层结构的设计方案,给出了此次开发的呼叫中心排班管理的体系结构,并在此基础上给出了排班算法的模型以及基于J2EE的实现方式。由于此设计方案是在J2EE 平台上开发的,所以该系统可以很好地与其他系统集成。

参考文献:

[1] 王黎明.国内呼叫中心的发展情况分析(下)[J].数字通信世界,2007(4):27-30.

[2] 李爱振.CTI技术与呼叫中心[M].北京:电子工业出版社,2002:80-90.

[3] 李青,张军,张学军.解决排班问题的多目标优化模型及算法研究[J].北京航空航天大学学报,2003,18(9):21-35.

[4] 李跃.呼叫中心的关键应用技术[M].北京:北京邮电大学出版社,2005:30-122.

[5] 周明,孙树栋.遗传算法原理及应用[M].北京:国防工业出版社,1999:45-102.

上一篇:浅析数据挖掘技术 下一篇:浅谈嵌入式处理器的特点与进展