1、 ZHEJIANG University of Water Resources and Electric Power毕业设计(论文)题 目: 录音录像管理平台的设计与实现 系(部): 信息工程与艺术设计学院 专业班级: 软件技术 12-1 姓 名: 刘鑫 学 号: 201238016 指导教师: 朱胜伟 (校外) 指导教师: 王红霞 (校内) 迄止时间:2014 年 11 月 14 日 2015 年 05 月 30 日2015 年 04 月 24 日浙江水利水电学院毕业设计1录音录像管理平台设计说明书作者:刘鑫 指导教师:王红霞目 录引言 .21. 系统概述 .21.1 系统功能 .21.2
2、系统开发环境 .32. 系统分析(详见附录 3).33. 数据库设计 .53.1 数据库选择 .53.2 数据库详细设计 .53.3 数据库的安全性 .54. 系统设计 .64.1 系统总体设计 .64.1.1 系统结构图 .114.1.2 系统模块 .124.2 前台系统实现 .124.3 界面展示 .134.3.1 用户登陆 .134.3.2 主界面 .134.3.3 录音记录 .144.3.4 视频记录 .144.3.5 铃音配置 .154.3.6 通话白名单 .154.3.7 中转站设置 .164.3.8 IP 段设置 .164.3.9 IP 限流设置 .164.3.10 话机升级 .
3、174.3.11 流量监控 .174.4 后台系统实现 .175. 运行维护手册 .186. 设计总结评价 .18参考文献 .20附录 .21附录 1 系统需求 .21附录 2 影像接口报文 .21附录 3 设计文档 .21附录 4 运维手册 .21浙江水利水电学院毕业设计2引言继上海银监发布【2013】140 号文件后,2014 年 7 月中国银监会北京监管局文件,京银监发【2014】132 号关于印发商业银行产品销售录音录像工作指引的通知,通知要求北京区域各分支机构进一步加强理财产品销售流程和管理规范的文件要求,各分支机构在销售理财产品尤其是高风险(如代销类)产品时必须进行风险揭示及录音录
4、像1. 系统概述1.1 系统功能本系统主要完成以下功能(详见附件 1) 录音管理(1)录音统计(2)录音记录 视频管理(1)视频记录 话机设置(1)来电铃音(2)答录提示音(3)话机设备(4)录音提示音(5)话机绑定信息(6)通话配置(7)通话白名单 传输配置(1)中转站设置(2)IP 段设置(3)IP 限流设置 系统配置浙江水利水电学院毕业设计3(1)话机升级(2)系统升级(3)修改密码 系统监控(1)流量监控 影像上传(1)上传影像(2)定时器 影像调用(1)esb 传输(2)extra 接口(3)ECM 影像平台 托盘(1)一键安装(2)通信协议(3)话机交互(4)USB 传输(5)ht
5、tp 长连接1.2 系统开发环境本软件管理系统采用的开发环境与开发语言为Eclipse/IDEA、vmcssjQuery,后台语言采用 java,托盘采用的 DEPHI,使用的数据库为 ORACLE/DB2,服务器为 linux/Windows server20081。2. 系统分析(详见附录 3)我们针对需求画了一幅设计分析图,该图清晰展现出我们整个平台的大致结构浙江水利水电学院毕业设计4图 2-1 概要设计图图 2-2 去电流程图浙江水利水电学院毕业设计5图 2-3 来电流程图3. 数据库设计3.1 数据库选择本系统所采用的数据库是 ORACLE/DB28,103.2 数据库详细设计数据库
6、设计文档请参照附件 2 的数据库设计文档。3.3 数据库的安全性数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。在数据库系统中,大量的数据集中存放,同时又为许多用户直接共享,是宝贵的信息资源,因此系统的安全保护措施就显得更为重要。键全的数据库安全机制可以防止数据库被恶意的破坏和非法的存取。本系统平台安全性设计在数据库设计上就以体现,我们将每个页面当成一个浙江水利水电学院毕业设计6请求,每个菜单按钮配置在数据库,当你登录时,我们会检查当前用户的级别,你的级别取决于你能看到多少东西,可以发起什么请求,可以看到什么页面,那么,即使你非法登录进我们的系统,可是该用户并非有权
7、限查看我们的系统,那么你看到的也许是一片空白,这算不算是一个惊喜呢,总之,我们对安全性做了一系列的处理,在此不一一赘述 8,10 。4. 系统设计对话机和系统配置后,我们最关键的就是要将得到的录音录像记录上传到服务器,并且我们还将真正的影像上传至影像平台,我们会实时的对上传的影像进行监控。4.1 系统总体设计 本系统采用的前端框架为 velocity/JQuery/CSS/JSONP 我们封装的JS/bootStrap,Velocity 是一个基于 Java 的模板引擎,它可以独立产生源代码、HTML 和报告,也可以与其他系统(或应用)相结合提供模板服务 1,4,5,7 。之前有考虑过有 fr
8、eemaker,由于 freemaker 在性能上没有 velocity 的好,所以最终还是采用了 velocity 作为我们系统的前端框架 1,6 。在开发前端的时候,我们封装了一套前端框架,该套框架里 JS 处在核心地位,我们借助 bootStrap 框架,对 JS 进行了二度封装,就像 JQuery,Ajax 那样,他的最终都是 JS 代码,但是他的功能却远远超出了 JS,我们在进行一系列操作的时候,经常会遇到 JS 跨域问题,JS 缓存问题,AJAX 请求问题,回调问题,我们开发出一套策略,如,JSONP。该策略在你引用 JS 时可以帮你注册一个命名空间,以至于不会再出现 JS 跨域无
9、法调用,以及调用多次等烦恼,当然还有一系列功能,在此便不再一一赘述 1,4,5,6,7 。我们的后台框架用了 Spring,Struts2,但是我们与数据库交互的并不是ibatis,我们研究了 ibatis 的原理后,自己写了一套类 ibatis,在此称为ibatis like,简称为 libatis,不管是持久层,还是数据层来说,这个框架我们最终目的希望是方便于程序员的,而 hibernate 注重的是效率,对程序员其实并没有太大帮助,我们发现 ibatis 其实对这一方面有了很大的补救,但是我们希望有自己的思想融入,比如 link 操作,我们很希望查询语句,或者其他 DDL 语浙江水利水电
10、学院毕业设计7句而已被在此调用,就和面向对象一样,这样对程序员来说无非是个福音,所以我们对 ibatis 进行了改进,开发出了一套 libatis。以前遇到的数据层框架总是支持某种,或某一种数据库语言,这就使得不同程序员之间写 SQL 语句时都要统一某一种数据库语言,比如 ORACLE 的,MySQL 的,甚至 DB2 的语法不尽相同,但是这让程序员很是头疼,在此我们在系统开发出了这样一套策略,不管任何程序员,只要你的 SQL 语句能在任何一个主流的数据库语言上顺利执行通过,那么任何主流的数据库都支持你的语句,甚至还可以 link 过来,这就为开发节省了许多不必要的麻烦,在之后的更换数据库操作
11、时,只需要把数据库指向和数据库地址更改即可 2,9,10 。我们系统经常会和其他系统对接,例如:CRM 系统,个贷系统等等。那么我们系统之间是通过什么方式进行数据交换的呢,很多人会想到数据表,对,之前我们是通过中间库的形式进行数据交互的,但是我们发现,当连续对接 3 个系统以上,库的空间就会很大,造成许多资源浪费现象,于是,我们采用了当下流行的一种形式,ESB 传输。在面向 SOA 的架构与应用中,服务是基本的开发与管理对象。采用面向服务的架构方法,就是为了利用服务这一企业 IT 资产,灵活而快速地满足不断变化的业务需求。为了保证服务的有效使用,增加服务的重用度和利用率,就必须建立统一的服务规
12、范。服务规范包括服务的定义与确立,服务的封装,服务的开发,服务的应用,服务的管理等各个环节进行规范性约定2。我们针对 ESB 传输写了一套接口,对方只需调用我们的 webservice 即可,我们会返回消息头以及消息,报文详见附录 2。我们系统上传影像时并不是直接上传到服务器,而是上传到影像平台,我们在 ECM 模块里对录音记录,录像记录等影像记录封装成一个实体,我们上传时只需将这个实体内的影像进行上传即可。我们将话机内的录音以及录制的录像上传到服务器的时候,我们采用了 ZMQ技术 3。Dive into A MQ (aka ZeroMQ), the smart socket library
13、that gives you fast, easy, message-based concurrency for your applications. With this quick-paced guide, youll learn hands-on how to use this scalable, 浙江水利水电学院毕业设计8lightweight, and highly flexible networking tool for exchanging messages among clusters, the cloud, and other multi-system environments
14、. A MQ maintainer Pieter Hintjens takes you on a tour of real-world applications, using extended examples in C to help you work with A MQs API, sockets, and patterns. Learn how to use specific A MQ programming techniques, build multithreaded applications, and create your own messaging architectures.
15、 Youll discover how A MQ works with several programming languages and most operating systems - with little or no cost. Learn A MQs main patterns: request-reply, publish-subscribe, and pipeline Work with A MQ sockets and patterns by building several small applications Explore advanced uses of A MQs r
16、equest-reply pattern through working examples Build reliable request-reply patterns that keep working when code or hardware fails Extend A MQs core pub-sub patterns for performance, reliability, state distribution, and monitoring Learn techniques for building a distributed architecture with A MQ Dis
17、cover whats required to build a general-purpose framework for distributed applications3。当然我们还使用了 ZMQ 中间件技术,我们的托盘在读取话机内的未上传录音时,会调用服务端的 ZMQ 接口进行上传,我们将文件封装为消息队列开始上传,在托盘的日志里将会看到上传行为的日志,上传后,在我们的服务端日志里也能看到上传信息。我们在本地开发使用的是 tomcat,而在服务器上部署的是 jndi 配置,也就是用的是 websphere,以下简称 was,我们在 was 上部署的上下文根为 banger,也就是我们公司
18、的英文缩写,was 是 IBM 的软件 平台。它包含了编写、监视运行全天候的工业强度应变 Web 应用程序和跨产品、跨平台解决方案所需要的整个中间件基础设施,如服务器、服务和工具。was 提供了可靠、健壮和灵活的软件。我们在解决 JS 跨域的时候使用了 JSONP 模式,采用该种模式可有效解决 JS跨域问题。浙江水利水电学院毕业设计9JSONP(JSON with Padding)是 JSON 的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题 4。在服务器选择方面,我们用了服务器集群模式,在连接方面,我们采用了连接池技术,但是我们并没有完全采用连接包,我们重写了某些方面,比如释放等
19、问题,在普通的连接池上并不是很明显。我们的定时器采用的 quartz,quartz 可以有效的触发定时任务,通过简单的配置文件,对时间和定时任务的配置,quartz 就能在配置的时间启动该任务。我们有以下模块:Banger-framework-core:Banger-framework-component:Banger-framework-dao:Banger-framework-sql:Banger-framework-util:Banger-framework-web:Banger-product-core:Banger-product-monitor:Banger-product-permission:Banger-product-permissionIntf:Banger-biz-config:Banger-biz-configIntf:Banger-biz-desktop:Banger-biz-ecm:Banger-biz-ecmIntf:Banger-biz-generate:Banger-biz-system:Banger-biz-systemIntf:Banger-biz-talk:Banger-biz-talkIntf:Banger-biz-video: