张 卉,张素伟
(1.华北计算技术研究所,北京 100083;2.太极计算机股份有限公司,北京 100083)
接处警顾名思义是由接收警情和处理警情2部分组成,接处警的主要流程如图1所示。接警又可大致分为报警人报警和接警员记录警情2个步骤。处警相对而言更为复杂,它包括辅助决策、下发警情、现场处置、办结、回访、统计案情等。多通道接处警是将多种报警方式统一接入的接处警系统,包括电话报警、短信报警、人工报警等,其中电话报警又分为110、119和120报警。接处警工作是公安派出所开展各项警务活动的基础环节,也是派出所执法执勤工作的首要环节。其水平直接影响案件、纠纷处理的效率[1]。
近年来,随着城市信息化的快速发展,城市治安所面临的问题愈加复杂,需要应对种种问题,大到天灾人祸的突发情况,小到人民群众纠纷。为保障公安系统能够高效合理地解决复杂问题,接处警所承担的责任日益凸显,其在近年也得到了很大发展,已逐渐从依靠人工调度的传统方式演变成通过接处警平台统一调度的网络化方式[2]。然而随着接处警平台所涉及的范围越来越广,平台也呈现出一定的缺陷,仍有许多方面需要改进与优化,以提高接处警的效率和办案水平,这是社会发展的客观要求,其重要性与紧迫性日益凸显[3]。
图1 接处警流程图
Coherence是Oracle公司推出的一款内存数据网格[4-7]解决方案,它提供了一种能让应用程序快速访问需要频繁使用数据的方式。“大数据”时代已经来临,“物联网”也在迅猛发展,越来越多的数据需要得到实时处理,在这种情况下就需要Coherence提供的稳定的共享数据服务。Coherence是Oracle为建立一种高可靠和高扩展集群计算的关键部件,它的主要用途是共享频繁使用的对象。Coherence的对象定义起来十分便捷,Coherence的数据有以下属性:可以是任何可序列化的对象;不需要扩展专用类;对原生的Java、.Net与C++互操作性很强;无需使用关系模型、对象-关系映射、SQL等;是真正的 POJO、PONO和POCO。
Coherence具有很多优越性,包括高效性、可靠性、灾后恢复性等。
1)Coherence的高效性:依靠缓存和实时处理技术解决了延时问题,并提高了驱动器的性能。通过降低数据争用来缓解内存性能的瓶颈问题,同时也提高了应用程序的响应速度。它还利用并行查询和并行计算提高了实时计算速度。
2)Coherence的可靠性:通过建立一个容错网络来保证数据的一致性和可靠性,该容错网络支持数据容错和连续操作。容错网络的可靠性极大地降低了处理由网络失败等原因造成的问题的后期开销,同时也使得开发和部署工作更加流程化。
3)Coherence的灾后恢复性:因为Coherence能很好地维护数据的事务完整性和连续性,所以它是一个很好的灾后恢复工具。Coherence集群能够通过自动备份跨区域的公司数据的方式达到信息维护的目的。
CTI(Computer Telecommunication Integration)即计算机电信集成中间件,是传统语音通信与数据通信网络的结合,是连接通信设备和计算机的枢纽[8]。多通道接处警系统中接入量最大的方式是电话报警,CTI服务器则成为报警接入的重中之重。CTI大致的工作流程如下:当接入一个新的呼叫后,接入设备首先向CTI服务器发起呼叫请求。此时,如果CTI认为这是一个合法的呼叫,则会在CTI服务器内创建一个呼叫标识(CallID),形成呼叫队列。当ACD(自动呼叫分配,Automatic Call Distribution)服务器在对此呼叫队列排队处理时会识别被叫号码,并根据被叫号码所设计的ACD排队算法进行处理。ACD根据脚本算法,选择一个最合理的坐席,并将结果通知CTI,由CTI将该呼叫分配到计算出来的最合理坐席。这样CTI和ACD服务器就共同完成每个呼叫的控制、排队与处理[9-12]。
Web Service[13-15]是基于 Web 的服务,它通过暴露一个网络地址使其他应用获取访问该服务的方法。Web Service平台提供了一套标准用于沟通不同平台、编程语言和组件模型中的不同类型系统。可扩展的标记语言是Web Service平台中数据的基本格式,W3C(万维网协会)创建了XML Schema,它定义了一套标准的数据类型,用它定义的数据文件后缀为.xsd。Web Service三要素是SOAP(简单对象访问协议,Simple Object Access Protocol)[16-17]、WSDL(网络服务描述语言,Web Service Description Language)和UDDI(Universal Description,Discovery and Integration)。SOAP是用于传递信息的格式的,其中:SOAP封装(Envelop)定义了一个框架,定义了消息内容、发送方、接收方以及接收方如何处置;SOAP编码规则定义了数据的序列化机制;SOAP RPC定义了远程调用和应答的协议。WSDL描述了Web Service与它的函数、参数、返回值,其文件后缀为.wsdl。UDDI是一种规范,它提供了基于Web服务的注册和发现机制,用来管理、分发和查询Web Service。
该系统兼具B/S与C/S架构,其中,只有系统管理员使用的是WebApp。系统从逻辑上分为5层架构,包括:界面层、业务逻辑层、通讯层、应用服务层和数据实体层5个层面,如图2所示。
图2 多通道接处警系统逻辑架构图
1)界面层:提供用户服务,是逻辑架构的顶层,作为和用户直接交互的一层。
2)业务逻辑层:涵盖用户使用的各个功能模块,包含各个功能的内部逻辑,是整个逻辑架构最为核心的一层。
3)通讯层:负责客户端与服务之间的通信,该系统服务使用Apache CXF框架发布Web Service接口用于C/S通讯,此外频繁访问的核心数据会放在Oracle Coherence中,客户端可直接通过缓存中间件调用。
4)应用服务层:系统逻辑架构中的基础服务层,包括接处警的核心应用服务、连接状态维护、数据实时通知等服务。
5)数据实体层:存储着系统中的全部数据,作为逻辑架构的底层,为保证系统的高效运转,将频繁调取的核心数据放入Coherence中,客户端则直接访问和读写Coherence,再由Coherence同步数据库。
整个多通道接处警系统的工作方式如下:
1)系统管理员登录系统对接警员坐席进行配置,设置每个坐席负责的报警方式,包括电话、短信、人工(指报警人到公安局报警)方式,目前每个坐席只能接一种;
2)市局接警员登录系统,将自己的状态置为“闲”,等待报警呼入;
3)接警员接收到报警信息时,如果是电话报警,首先需要判断是否为110报警,对于其他报警,接警员需要进行转警,否则,接警员填写警单,并判断是否需要下发,将需要下发的警情发送给处警员;
4)处警员收到报警信息时,首先需要判断警情是否重大,非重大警情将直接下发至一个或多个派出所,遇到重大警情,处警员需要将警情进行上报并进行辅助决策(查看类似警情的处置流程),再将警情下发至一个或多个派出所;
5)派出所接收警情后,派出警力进行现场处置,完成处置后填写出警信息;
6)处警员查看某案情相关的出警信息,判断是否可以办结,如果不能办结,可继续下发警情,否则办结警情;
7)处警员对已办结的案情需要进行抽查式回访,将报案人、受害人等对处理情况及满意度等记入系统;
8)当需要绘制统计报表时,处警员根据要求查询统计信息并将报表打印出来上报领导。
系统的功能结构如图3所示,用户分为系统管理员、接警员、处警员、出警员4个角色。系统管理员登录系统后可以进行席位配置、CTI配置、黑红名单配置等操作;接警员可进行接警和下发操作;处警员可进行辅助决策、下发、办结、回访和统计操作;出警员可进行出警操作。
图3 多通道接处警系统功能结构图
系统管理员负责系统的配置工作。
1)席位配置:配置每个席位的接警类别(电话、短信、人工),将每个席位的IP地址、MAC地址与接警类别关联。这样配置后,当有多个报警电话同时接入时,ACD服务器则可将等待的电话自动分配到空闲的席位上;非语音报警由席位分配策略服务统一接收并发送给非语音报警坐席。
2)CTI配置:配置每一个电话接警席位的电话号码,将席位信息与接警电话关联。
3)黑红名单配置:黑红名单分别指拒绝接听和优先接听的电话名单。将长期滋扰的报警电话设置为黑名单,并且设定黑名单时效,这样在该时段内该号码将由CTI过滤掉,无法被接听。将有指挥权的上级领导以及案(事)件的相关人员电话设置为红名单,这样该电话在电话等待队列时,它被接听的优先级将高于其他电话。
接警员负责接警并将警情下发给处警员。
1)接警:接警又分为电话接警、短信接警和人工接警。电话接警时,首先需要判断报警类型是否为110报警,如果不是则需要将报警电话转给相关系统。接警时需要记录报警人信息、警情信息等,当多次接听同一个滋扰电话或者无声电话后,在接警过程中也可将该电话号码置入黑名单中并设定时长,对于重要的电话号码则可置为红名单。短信接警时,需要根据短信内容询问警情相关信息,完成报警人信息、警情信息的填写。人工接警则根据报警人口述内容询问警情相关信息并记录。
2)下发:对于非无效、滋扰、咨询类的警情,记录完信息并选定处警员后,进行下发。
处警员负责将警情下发给派出所、办结处理、回访和统计。
1)辅助决策:根据相似时间段、相似地点、相似涉案人员、相同案件类别等条件查询已有的案(事)件处置流程。处理重大警情时,需要先进行辅助决策并上报领导后,再将警情下发至派出所。
2)下发:根据警情信息判断并选择出警单位进行警情的下发。对于重大警情或特殊警情,需要进行辅助决策并填写处理意见。对于已上报的重大警情,需要将领导意见关联到该警情处理意见中并下发。
3)办结:查看已出警的警情的处置过程与结果,对于可以办结的警情进行办结操作。
4)回访:对已办结的警情进行回访,将报案人、受害人等对接警员接警的满意度、现场处置的满意度、处置流程效率的满意度和处置建议等录入系统,并将相关信息关联到相关办事人员的考评中,该考评将直接影响办事人员的绩效。
5)统计:分为当日警情(含未办结警情)统计与办结警情统计。当日警情统计包括当日呼入量统计、当日不同类别警情按小时划分统计和当日按区域统计。办结警情统计包括按区域分警情类别统计、按区域统计、按时间段分区域统计和按时间段分警情统计。当日统计主要用于处警员查看当日接处警情况,办结警情统计用于绘制统计报表,进行深入的警情数据分析和汇报工作。
出警员负责出警并记录出警情况等信息。
出警:收到警情信息后,首先判断该警情与本辖区是否相关,如不相关则可将警情回退,回退后,处警员可以重新下发(已下发多个派出所的也可以不重新下发)。出警可调派距离案发地点较近的单兵、巡逻车,也可从派出所调派警员进行现场处置。处置完成后,需要填写出警信息、涉案人员信息、案情追加信息等。一个警情在一个派出所可以多次出警和多次信息填写。
Coherence作为缓存服务,对于语言的基础类型有很好的支持,但是对于一些复杂的数据结构,则需要将其定义为POF格式(Portable Object Format),具体方式是在定义数据结构类型时实现PortableObject接口,并将该类注册到POF的配置文件中。在接处警系统中,最重要的数据结构是警情信息。下文将说明从数据库到缓存过程中需要对警情信息进行的一系列转换。
表1中第一列是数据库中警情信息表的字段,第二列则是Hibernate映射警情信息表的对象所包含的字段,可以看出两者的字段是一一对应的。
表1 数据库字段与Hibernate对象
通过向pof-config.xml添加24小时警情缓存的配置信息完成缓存的POF注册,代码如下:
<user-type>
<type-id>1001</type-id>
< class-name > com.taiji.coherence.demo.AlarmCoh < /class-name>
</user-type>
表2展示的是24小时警情的数据结构。对比表1第二列和表2的字段,不难发现除报警信息和处警信息(这2个对象对应的类也需在POF文件中进行注册)外,两者的字段是完全一致的,这样做是为了便于实现缓存和数据库中数据的同步,关于系统中的数据同步将在下一节进行介绍。
表2 24小时警情缓存属性
缓存中间件在系统中起到了如下作用:
1)通过将频繁访问的数据放入缓存,降低了对数据库的访问,加快读取速度;
2)对于缓存中变更的数据,缓存可以检测到,并将变化的数据推送到关注该数据的客户端,避免了客户端为达到数据实时同步目的而实时访问数据库造成的开销。
下面将具体介绍缓存起到的2大作用。客户端访问Coherence主要发生在以下情况:客户端已知警情ID且需要获取该警情对应的警情信息或警情相关信息时,以及客户端查看某类常用的业务数据时。第一种情况主要包括:处警员查看警情、报警、处警和出警信息(重新下发、办结和回访时均需要查看已有的处警和出警信息)时,以及出警员查看警情、报警和处警信息时。常用的业务数据主要包括:警务人员信息、席位配置信息、CTI配置信息、黑红名单信息和系统数据字典信息。客户端获取Coherence推送主要发生在以下情况:有新警情将流转至该单位/人员时,警情办理流程发生了状态变化时。由此可见,客户端有很多场景需要访问缓存和缓存推送,这样的实现在很大程度上提高了多通道接处警系统的工作效率。
该系统的缓存架构如图4所示,客户端通过访问缓存和获取缓存推送提高效率,而为了保持缓存和数据库数据的一致性,缓存只有服务端程序才可以进行写操作。当服务端通过缓存写入警情数据时,会采用Hibernate的缓存机制,通过JPA方式(JPA全称Java Persistence API,Java的持久化规范,它用元数据描述对象和表之间的映射关系,再根据这种映射将实体对象持久化到缓存表中)操作缓存数据,同时将缓存中的数据同步到数据库中,实现数据库数据与缓存数据之间的同步。监控应用程序则负责清理过期的缓存数,即超过24小时的警情与警情相关数据。
图4 接处警缓存架构图
本文介绍了基于内存网格的多通道接处警系统的设计与实现,内存数据网格可以提高数据读取速度,且避免了客户端为保证数据实时同步而频繁访问数据库行为的发生,具有操作简便、反应迅速、可靠性高等优点。使用Coherence可以极大地提高多通道接处警系统的效率,为公安部门办事和人民群众求助带来了更多的便利。
[1]李雪冰.公安派出所接出警问题及对策分析[J].江西公安专科学校学报,2008(5):18-21.
[2]孙秋冬,黄江巍,管屏,等.“110”接处警系统的设计[J].上海第二工业大学学报,2004(2):29-35.
[3]林福文.接处警系统建设研探——兼论“三台合一”建设[J].中国交通信息产业,2004(6):25-28.
[4]褚瑞,肖侬,卢锡城.一种基于内存服务的内存共享网格系统[J].计算机学报,2006,29(7):1225-1233.
[5]Foster I.The anatomy of the grid:Enabling scalable virtual organizations[C]//Proceedings of the First IEEE/ACM International Symposium on Cluster Computing and the Grid.2001:6-7.
[6]Foster I,Kesselman C,Nick J M,et al.Grid services for distributed system integration[J].Computer,2002,35(6):37-46.
[7]谢健聪.内存网格关键技术研究与实现[D].长沙:国防科学技术大学,2008.
[8]林震刚,杨学良.用CTI中间件实现呼叫中心的多媒体接入[J].计算机工程与应用,2007,43(1):111-114.
[9]王琛,胡晓辉,王峰.基于CTI技术的环保呼叫中心的硬件设计方案[J].重庆工学院学报,2008,22(9):158-161.
[10]孙建荣,常国岑,孟晓宁.基于软交换CTI技术的优势[J].微计算机信息,2007,23(3):143-144,118.
[11]王钧.基于CTI技术的调度系统设计与实现[J].通信技术,2008,41(2):138-140.
[12]陈景佩.CTI在呼叫中心中的应用[J].无线互联科技,2012(7):175.
[13]柴晓路.Web Service Case Study[EB/OL].http://www.ibm.com/developerworks/cn/webservices/ws-casestudy/part3/index.html,2002-04-01.
[14]钱权,严家德.Web Service的安全机制[J].计算机工程,2007,33(22):190-192.
[15]Eric Armstrong.Java Web Service教程[M].北京:高等教育出版社,2003.
[16]Davis D,Parashar M.Latency performance of SOAP implementations[C]//2002 the 2nd IEEE/ACM International Symposium on Cluster Computing and the Grid.2002:407-413.
[17]石伟鹏,杨小虎.基于SOAP协议的Web Service安全基础规范[J].计算机应用研究,2003(2):100-103.