基于Netty框架的位置服务平台的设计与实现

目 录

摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 开发环境及开发工具 3
1.2 相关知识简介 3
1.3 本章小结 4
2 系统分析 5
2.1 设计背景 5
2.2 系统需求分析 5
2.3 市场分析 5
2.4 论文的概要内容 6
2.5 本章小结 6
3 系统设计 7
3.1 系统总体设计 7
3.2 系统结构设计 8
3.3 数据库设计 11
3.4 本章小结 14
4 系统实现 15
4.1 开发环境 15
4.2 数据库实现 15
4.3 系统功能实现 16
4.4 本章小结 18
5 系统测试 19
5.1 系统测试环境 19
5.2 系统压力测试 19
5.3 系统功能测试 20
5.4 本章小结 22
结 论 23
参考文献 24
致 谢 26

摘 要

位置服务是人们在工作、生活、学习等时候经常使用的服务。在我们日常出差、旅游等到一个新的陌生环境的时候,不可避免的会出现找不到路、迷失方向等种种不安全的情况。由于GPS等可以获取地理位置数据信息的硬件已经能够完美地嵌入到移动智能手机或者车载仪等互联网设备中,市面上出现的基于此的服务也是比较繁杂,此时,设计便需要设计一套系统可以支持基于基本位置服务又可以完美扩展其他相关业务,符合市场需求的就显得十分有必要。
本文主要是关于基于web的位置服务的设计与实现,主要所作的工作包括:
(1)了解当前市面上关于位置服务的发展情况,并对收集到的数据进行归纳分析,总结这些软件系统存在的优势,避免已存在的劣势,发现并思考可补足方面,最后,设计一套属于自己的系统运行流程。
(2)设计系统的运行环境以及系统开发环境,确定代码总体设计和详细设计,最后完成此系统的程序代码编写。利用VueJS和ElementUI搭建系统网站,并采用OpenLayersJS进行对空间数据的采集上传以及展示,确定开源API,例如百度高德进行位置数据的上传和展示;利用SpringBoot进行后台服务编写,完成数据服务端的处理,开放API提供调用,最后完成系统的整体运行。
(3)程序编写完成后,可将程序发布到测试环境运行,提供给所有可支持网页浏览的用户使用此系统。
(4)完成上述步骤后,分别对其各个功能模块进行测试,确保设计功能模块基本实现。如果在测试过程中发现明显错误或者隐藏漏洞,即时思考问题所在并设计解决方案,最后完成修复工作。
通过使用这一套系统就可以方面地体验到位置服务功能以及延伸的其他相关业务功能,并提供了可以处理一类位置服务问题的便利。

关键词:位置服务;安全预警;地理围栏;工单;即时通讯

Abstract

Location service is a service that people often use in work, life, study, etc. When we are on a daily business trip or traveling to a new unfamiliar environment, it is inevitable that there will be various unsafe situations such as nowhere to be found and lost. Since hardware such as GPS that can obtain geographic location data information can be perfectly embedded in Internet devices such as mobile smartphones or car meters, the services based on this market are also quite complicated. At this time, the design needs to design a system It can support basic location-based services and can perfectly expand other related businesses. It is very necessary to meet market needs.
This article is mainly about the design and implementation of web-based location services. The main work includes:
(1) Understand the current development of location services on the market, and summarize and analyze the collected data, summarize the advantages of these software systems, avoid existing disadvantages, discover and think about complementary aspects, and finally, design a set Belong to your own system operation process.
(2) Use VueJS and ElementUI to build a system website, and use OpenLayersJS to collect, upload and display spatial data; use Android to complete the mobile terminal APP creation, determine the open source API, such as Baidu Gaode for location data upload and display; use SpringBoot for background services Write, complete the processing of the data server, open the API to provide calls, and finally complete the overall operation of the system.
(3) After the program is written, the program can be released to the test environment and run, and it is provided to all users who can support web browsing and install Android application devices to use this system.
(4) After completing the above steps, test each function module to ensure that the design function module is basically realized. If obvious errors or hidden vulnerabilities are found during the test, think about the problem immediately and design a solution, and finally complete the repair work.
By using this system, you can experience the location service function and other related business functions of Yanshen in various aspects.

Keywords: Location services; security warning; geo-fencing; work orders; instant messaging

引 言

毕业设计的课题是:基于Netty框架的位置服务平台的设计与实现。这套系统可应用于安监、交通、环保、智慧城市、国土、作业安全、巡检等绝大部分于位置相关的场景中[1],常见的应用场景是:车辆导航、手表定位。但也因为系统多客户端使用,具备相对使用复杂性和适用性范围固定。本文从位置服务领域用途作用广泛展开,从而开发一套基于位置数据的位置服务业务系统为目标展开此课题设计。本文阐述了此课题的研究现状以及研发者套系统的意义,确定了此课题设计的研发目标,为建立基于位置数据,提供大多数相关业务场景的功能性交互,解决同性质传统业务实现的复杂性、低效性,丰富当前业务表面以及潜在的功能业务需求,并可灵活添加位置数据上传设备处理同类业务需求,以平台式提供使用者所需要的服务。基于位置的服务,更侧重的是服务,市场终归有限度,高质量的服务才是获取用户的不可忽略的因素,而创新无异于是这一因素的捷径[2]。
在选择开发工具和技术方面,系统位置数据流转分为数据采集,数据上传,数据处理以及数据保存,结合开源技术百度高德等获取当前位置数据信息;数据上传选择的是Netty网络编程框架[3],主要从开发难易度,执行性能,数据处理能力方面考虑,Netty提供了强有力的支持。数据处理即对约定的数据格式的编解码处理;数据保存选择Redis,其非关系型数据key-value存储格式以及高效可靠的增删查改对高频率数据操作有强有力支持。系统设计与系统实现体现的此课题的设计方向,通过功能模块的展示体现此设计所需要实现的模块为五大模块,实时追踪、工单管理、即使聊天、安全预警、系统安全模块,也较为详细的区分模块所属。五大模块互相关联,并未隔离,用户管理为系统设计基础模块,其用户信息在其他模块也有相应存储,用以保持数据权限以及数据获取准确性安全性;工单模块较为独立模块,但视为核心业务模块,处理功能也较为多样化,轻便化,其观点模板部分动态组装字段,适应多种业务场景,灵活性较强;即时通讯模块原本为工单模块设计,实时提供当前数据信息,平台端与移动端的沟通提高业务实现性能,但其灵活较高,适用性更加广泛,也所属独立模块[4]。实时追踪和安全预警可视为同性质功能的不同体现。安全预警包含追踪并对追踪加以附加功能,都依赖于动态地理位置数据的获取,围栏则较为静态地理空间数据,三者共同作用。最后分别对几大模块的功能进行测试,也同时展示模块与模块之间的功能联系。本系统采用开源(百度,高德)地图服务,基于用户位置信息的获取,添加地理围栏,安全预警,工单相关模块,实现工作人员在指定的地方完成指定的工单采集任务,即时聊天工具加以监督指导,并为人员添加安全预警保证其工作效率以及安全的工作流程。除了主要流程,还会添加一下辅助模块加以完善[5]。
本文课题的提出目标为构建通用性平台提供多样化服务,这个目标暂时还是理想化的,还处于探索阶段。实际上此课题给提供的更多是基于传统位置服务相关业务需求假定的业务需求,适用性在于目的性不是特别强的作用范围,而面对更加专业性、需求更高的情况下是不太适用的,更像一个通用基础系统,更多更高要求还有待优化与添加,现有模块可作为附属模块[6]。后续更多的应该是系统可扩展性方面的优化,同时实现通用式平台管理服务方案必须对其现有设计模式进行思考,对现有功能和非功能代码做好管理,提高质量。
页面优化也极其重要,简单操作,智能化操作是趋势,操作繁琐,复杂度高,上手难等是软件周期结束的必然,尽管此课题设计针对使用人群有限制,但是友好型系统设计仍是重中之重,例如针对此课题中的工单模块,操作流程化方向改变是改变的必然,比如加入工作流,减轻使用者使用的各项成本。对于这些潜在或急需解决的问题,对于当前我的技术储备来说[7],有远有进,并难以支持我进行全部的改造,后续的工作则是对于这些问题的思考及向解决这些问题的方向发展。

1相关技术

1.1开发环境及开发工具
1.1.1开发环境简介
Netty是本系统的主要开发环境,是目前使用比较广泛的一个框架,目前业内对于Netty认可度很高,广泛应用与众多的项目当中,而且有效性较高[8],众多使用者应用Netty的结果也认证的它的优势所在。例如在Hadoop的RPC使用框架avro是使用Netty作为底层通信框架。在其他项目中,众多项目都很流行的RPC框架,同样采用了Netty框架,大大提升了其项目的使用效果和客户的体验效果。
SpringBoot对于Spring是一个最优化过程[9],他的方式不同于往的单一,而是使用者可以自行调整,根据使用者的习惯来搭建自己的项目,比较高效便捷,并且开发速度快,应用面广。在本项目的服务器搭建过程中,采用SpringBoot来管理代码,起到了优化项目以及提高兼容度的作用。
OpenLayers是一个类库[10],采用开源的方式,可以应用到比较简单的客户端中,起到作为地图类库的作用,应用于众多位置服务系统中,它可以兼容很多使用者较多的浏览器。本系统为位置服务系统,对于地图的要求较高,应用此开发环境可以提高系统稳定性。
VueJs是主要用来搭配web[11],可以用来使用与框架中,方便迅捷,可用度高,其中包含API,都比较适用于设计者,同样适用于初学者,因为其中内容易懂,性能较高,VueJs可以由API来响应视图组件。
1.2相关知识简介
GeoServer是 OpenGIS Web 服务器中规范的 J2EE 实现[12],利用 GeoServer 可以极度的方便地发布地图数据。GeoJSON是一种对各种地理数据结构进行编码的格式,是基于Javascript对象表示法的一种地理空间信息数据交换格式。它在处理数据时更迅速,提高了项目设计者的效率,并且在日后的项目使用中也使项目会更稳定。
WKT是一种文本标记语言[13],可以用于表示矢量几何对象、空间参照系统和空间参照系统之间的转换。它的二进制表示方式,亦即WKB(well-known binary)则胜于在传输和在数据库中存储相同的信息。该格式由开放地理空间联盟(OGC)制定。WKT通常应用于几何对象,其中包括点、线、多边形以及不规则三角和多面体,课件应用面比较广泛,因此在业内使用率较高,其方便,便捷的特点使其优于很多同类型语言,所以本项目也采用WKT来作为文本标记语言。
JTS是一种新型的可开放源码的Java API[14],它为使用者提供了及具优势的算法,这种算法应用对象为空间对象,可以在基本基础上提供更优等的算法,即在基础上增加可操作性来提高兼容度。
MySQL数据库是一种大型的数据库[15],可以应用于很多类型的管理系统储存数据,它将数据储存在表中,各个表之间可以相联系,灵活度和可用度较高。MySQL的速度很快,可以应用于比较大的系统中,也可以供使用人员自行调试代码,数据库在此位置服务平台中作用十分重要。MySQL对于数据存储很灵活,它将数据存储于各个不同的表中,并非放在一个地方,这一设计大大提高了它的灵活度。
1.3本章小结
本章节主要介绍了课题设计涉及到的技术,后端采用的是Springboot框架进行编写[16],其高度简化的配置可以更加高效和快速的开发服务端代码;前端采用的VueJs作为框架,其组件式开发加上ElementUI组件库,可以快速的搭建项目,第三方类库OpenLayers和TurfJs为项目地图模块展示以及空间数据处理做出强有力支撑。结合于高德百度等开源Api精确高效地提供位置数据信息,以及实现相关业务。

2系统分析

2.1设计背景
位置服务是基于位置的服务(Location Based Services,LBS),位置服务即将通讯和定位结合到一起,使用者可以使用卫星定位来对位置获取详细信息,也可通过通讯技术来联系项目管理者以此来获得服务[17]。位置服务需要使用很多种定位技术,并且需要妥善的处理数据,将二者相结合后来服务用户,提供相应的业务。在互联网行业兴起以来,也随着各项技术的成熟,位置服务逐渐兴起,目前其已经是一项基本的生活服务。位置服务的兴起提升了社会的各项工作的效率,以位置信息为基础的服务已经成为各行各业争先探索的行业目标。
2.2系统需求分析
基于位置的服务,位置已不再是新鲜词汇,服务才是不断探索的要素,而创新无异于是这一要素的捷径。智慧城市是近几年提出的一个新理念,而我国也走在这一行列,目前以有两百多个城市提出了智慧城市相关规划。
位置服务在这股创新力量的刺激下,更显现出其优势,具体体现方面如下:为城市运行服务、为个人生活服务、为企业经济服务等。当前基于互联网的发展速度,位置服务的提供方式也是逐步发生变化,促进业务更加精细化管理,提高整体运营效率。服务的多元化是市场发展的自身需要,不局限于传统模式,更是提供位置服务创新发展的温床。
综合以上所述,位置服务对于社会的发展的促进作用越来越明显,其重要程度逐日递增。而更多的新型位置服务也还未成为产业链,这一产业缺口是位置服务发展的大方向之一,位置服务行业的兴起是未来发展的必然趋势。
2.3市场分析
目前位置服务呈现的是百花齐放,市场分析的研究成果也可以分为国内和国外来进行分析:就国外而言,作为GPS系统的诞生国[18],美国是最早推出位置服务的国家之一,相比美国,加拿大则在此方面更加投入。加拿大推出的Swordfish是全球首款基于GPS移动技术的游戏,并对位置服务技术加入了娱乐,信息,求助,以至于在市场上占据了较大份额;日本也对GPSONE技术进行了丰富,其保证高精度安全和保卫服务可以准确定位其拥有设备的位置;韩国则是以另一种方式走在了世界前沿,韩国推出的全球首款儿童安全网络定位服务—i-Kids,可以获取儿童当前位置信息和设置安全活动范围;欧美方面运用的位置服务技术内容则相对单调,缺乏创新。
就国内而言,国内三大运营商是最早运用位置服务技术的,比如中国移动“在哪里”,中国联通“定位之星”业务,中国电信“小灵通”业务。位置服务的爆炸式增长是近几年,体现在交通,健康,医疗,教育,工作,个人生活等领域,普遍作用于车载GPS位置服务,智能手机的发展,GPS定位芯片也促进移动位置服务的发展;国内较为熟知位置服务厂商为百度地图,高德地图,腾讯地图,比较偏向专业性服务相对较多。目前市场对于位置服务普遍性需求已过于饱和,但在基于这些普遍性需求的需求还很多,不局限于对app的服务,例如有智能手表,车载仪等的融合应用也是一大发展趋势。
2.4论文的概要内容
本设计的主要内容是设计对位置数据获取,并对获取的数据加以业务性的操作,全文一共分为六章,第一章:主要对于开发工具的简介以及系统设计的相关知识的简介。第二章:主要阐述项目的系统分析,设计的背景、目的以及意义。第三章:主要阐述了软件总体设计,展示各部分的流程图,介绍各个模块的设计思路。第四章:主要展示了系统的实现页面,并且相应的介绍功能。第五章:主要记录了对系统功能测试的过程。
2.5本章小结
本章节从背景,目的和意义,相关领域的研究成果几个方面阐述并明确位置服务的当前状况以及研究方向,作为地理信息产业研究领域的高度化,可延申性发展的基础,位置服务的研究开发是不可忽视的因素之一。同时也简要说明了此课题设计的内容目录,清晰明确地表明课题设计方向。

3系统设计

系统设计是系统开发过程的重要环节之一,良好的系统设计是开发的开始。同时,遵循系统设计八大基本原则也是开发的一项标准。本系统分为系统安全模块,工单管理模块,安全预警模块,即时聊天模块四大业务模块,实时跟踪和地理围栏为辅助模块。主要设计为用户登录后可以运用四大模块功能,且各个功能并不独立,互相交互,共同协作。
3.1系统总体设计
该系统设计主要是运维部分和系统平台是web端。运维部分负责的基础功能维护,例如用户登录模块管理,报警规则模块管理,工单模块管理;平台端负责的位置数据服务,例如显示当前用户地理位置信息,勾画地理围栏,位置信息数据的获取上传至后台服务,并在此基础上添加工单的业务功能,和平台端以即时聊天为关系纽带处理功能业务。
本课题所述的位置服务平台,是将移动通信网络和卫星定位系统结合起来,采用多种定位技术、数据处理技术与GIS交叉融合的信息服务平台。本平台接入高精度的外围定位设备[19],例如指南者、RTK高精度定位设备,以下简称终端,也可以可接入CORS网,保证采集数据的高质量。在结合数据采集管理、数据规划、地理围栏,为用户提供了监控、路线规划、轨迹回放,安全预警等位置服务,同时结合于工单管理服务模块,为用户提供具体业务实现。
系统的每一个模块都作用于每一个客户端,位置服务平台主要分为实时跟踪,安全预警,工单管理,地理围栏,简单即时聊天为主要功能模块,当终端向服务端传入数据时,把当前位置数据存入reids,点击当前终端对应得对象是,在平台地图显示其当前位置,且有三种状态,在线表示有位置数据传入,离线则没有数据传入,报警则是触发安全预警,也可算作在线状态一种。
在地图上选择部分区域,可以是指定圆心得范围,也可以是自定义多边形区域。为用户所在位置与地理围栏添加关系,判断是否处于围栏范围,做相关业务处理。外出用户添加指定信息传至平台处理,上传->处理(打回,再分配,完结)的循环过程。总体业务流程在于运维部分与移动端部分,并且两者业务交叉部分较多,具体业务流程如图3.1 所示:
在这里插入图片描述

图3.1系统运行流程图
3.2系统结构设计
由于终端由不同厂家生产,各厂家自定义协议大有不同,采用Netty网络编程框架接收并解析终端上传得数据,将获取得数据以K-V得方式存储于Redis[20],Reids只是暂存终端上传得位置等数据,并不做持久化处理。服务端从数据库中取得用户与终端的关联关系并从Redis中获得位置数据,实现实时追踪。
前端接入开源地图,利用openlayes js类库从地图上画取得围栏数据,业务数据存储于数据库,空间数据以gwkt格式存储于postgreSQL中[21],之后在运维模块为用户设置安全预警规则,加以围栏数据,利用定时器
定时从Redis获取用户位置树判断用户是否触发在围栏的状况,做不同规则得不同处理,例如,出围栏报警。
工单主要用于app形式的终端,平台创建工单,然后交予app处理,app处理之后上传平台,平台加以判断,重新交予app处理还是办结;同时,平台可以通过websocket建立连接进行实时通信[22]。
系统安全模块中,管理员拥有绝对的管理员角色,所展示模块为系统所有的功能模块,不存在对于管理员角色管理模块的修改删除操作。且管理员拥有系统安全模块的管理权限,此模块分为,用户管理,角色管理,模块管理。安全模块流程图如图3.2所示:
在这里插入图片描述

图3.2系统安全模块流程图
工单管理模块中,自动派发的流程是总结了上述pc端第一步创建和派发的过程,无需认为派发,以定时器的模式进行每天,每月等模式派单工作。派单需有位置信息,获取位置的同时还需要很多数据,且http接口形式数据对接已不能够满足海量数据处理,故采用Netty框架作为数据流转,满足高并发,快速传输,支持多协议。工单管理流程如图3.3所示:
在这里插入图片描述

图3.3 工单流程处理
即时聊天并没有做到专业性地步,采用的是http+websocket两种协议格式交叉协作。首先我们对于聊天设计的模式为双向聊天。首先是文本传输,发起聊天,建立websocket连接信息存储于服务端[23],需要建立在线会话列表,规定聊天信息的数据格式,获取到接收人信息,轮询会话列表,找到对应会话发送给信息。交互原理流程如图3.4所示:
在这里插入图片描述

图3.4 即时聊天交互原理流程图
实施追踪模块实现需获取定位信息后,将用户等信息数据封装为json格式数据,并对用服务端建立socket客户端向服务端定时传输数据,netty作为服务端[24],监听约定端口,对接收到的数据进行数据解码,判断并转换为我们所需要的数据格式,将之存储在数据库中。实时追踪原理流程图如图3.5所示:
在这里插入图片描述

图3.5 实时追踪原理流程图
3.3数据库设计
本系统的数据库开发软件为MySQL[25],为了有效的对数据进行存储,针对数据分散的普遍现象,数据库可以来比价集中的处理分散的数据,将其整合,方便后续的控制,增加系统的整合性。
数据库的设计是整个系统比较关键的部分,需要考虑到整个系统的功能来设计,并且内容需要全面,以确保系统的完整性。为了清晰展示本系统设计,得到按系统需求所制的E-R图模型,如下图3.5所示:

在这里插入图片描述

图3.5 系统E-R图
表之间需要注意关联,依次来保证工作的有效性。为能符合本系统需求,共建立20个表,其中管理员信息表的作用是用来储存系统的管理员数据,存储的信息十分重要。管理员表包括主要包括字段为用户名、用户位置、状态和密码,其中用户名的数据类型为int,其余为varchar类型,用户名称为主键。管理员拥有整个系统的最高权限,设置好后不得修改,负责授权给用户使用权限,包括管理暂时游客用户。管理员信息表如表3.1所示:
表3.1 admin管理员表
列名 数据类型 长度 主键 说明
_id int 10 是 用户名
strLoc varchar 50 否 位置
strZT varchar 20 否 状态
strPassword varchar 20 否 密码

用户信息表的作用是用来储存系统的用户数据,主要包括字段为用户编号、用户名、用户密码、用户位置等信息。需要注意的是要区分用户信息表和暂时游客信息表。用户信息表所存储的用户信息分为正式用户包括了已经注册的用户,即存在用户ID和密码,用户信息表如表3.2所示:
表3.2 user用户信息表
列名 数据类型 长度 主键 说明
userId int 10 是 用户编号
userName varchar 10 否 用户名
userPassword varchar 10 否 用户密码
userLoc varchar 50 否 用户位置

暂时游客信息表的作用是用来储存系统的暂时用户数据,即没有注册,暂时使用的用户,暂时游客是系统给体验人群所设,暂时游客信息表主要包括字段为用户编号、用户名、用户位置等信息。此表中,游客编号信息表数据类型为int,其余为varchar,暂时游客信息表如表3.3所示:
表3.3 tourist暂时游客信息表
列名 数据类型 长度 主键 说明
touId int 10 是 游客编号
touName varchar 10 否 游客名
userLoc varchar 50 否 用户位置
userMb varchar 50 否 目标位置

日常工单信息表的作用是用来储存系统的日常派单信息,主要包括字段为工单编号、工单类型、发起用户、发起时间等信息。其中工单编号、工单类型和发起时间的数据类型为int,其余为varchar类型。日常工单信息表如表3.4所示:
表3.4 daily日常工单信息表
列名 数据类型 长度 主键 说明
dailyId int 10 是 工单编号
dailyType varchar 20 否 工单类型
dailyTime varchar 20 否 发起时间

新建工单信息表的作用是来存储新建的工单,包括字段为新建工单日期、类型和编号。要注意新建工单不同于日常工单,其中工单编号为主键,其余非主键,工单编号的数据类型为int,其余为varchar。新建工单信息表如表3.5所示:
表3.5 new新建工单信息表
列名 数据类型 长度 主键 说明
newnumb int 10 是 工单编号
newType varchar 20 否 工单类型
newTime varchar 20 否 发起时间

用户需求信息表的作用是用来存储每个用户所提供的需求信息,包括字段为用户ID、用户位置、日期和具体内容。其中用户ID为主键,其余非主键,用户ID的数据类型为int,其余为varchar,用户需求信息表如表3.6所示:
表3.6 reply管理员表
列名 数据类型 长度 主键 说明
userNa int 10 是 用户名
userLoc varchar 50 否 用户位置
userTime varchar 20 否 日期
userNei varchar 20 否 具体内容

数据库的代码示例如下文所示:
DROP TABLE “LBSP”.“LBSP_ACQUISITION”;
CREATE TABLE “LBSP”.“LBSP_ACQUISITION” (
“ID” VARCHAR2(32 BYTE) NOT NULL ,
“ACQ_NAME” VARCHAR2(100 BYTE) ,
“ACQ_NUM” VARCHAR2(50 BYTE) ,
“ACQ_TYPE” VARCHAR2(100 BYTE) ,
“ACQ_GROUP_ID” VARCHAR2(32 BYTE) ,
“ACQ_GROUP” VARCHAR2(100 BYTE) ,
“ACQ_DESC” VARCHAR2(200 BYTE) ,
“TARGET_ID” VARCHAR2(32 BYTE) ,
“TARGET_NAME” VARCHAR2(255 BYTE) ,
“TARGET_NUMBER” VARCHAR2(255 BYTE) ,
“TARGET_TYPE” VARCHAR2(50 BYTE) ,
“TARGET_CATEGORY” VARCHAR2(32 BYTE) ,
“TERMINAL_ID” VARCHAR2(32 BYTE) ,
“TERMINAL_NAME” VARCHAR2(255 BYTE) ,
“TERMINAL_NUMBER” VARCHAR2(255 BYTE) ,
“TERMINAL_GROUP” VARCHAR2(32 BYTE) ,
“ACQ_APPR_PERSON” VARCHAR2(50 BYTE) ,
“ACQ_APPR_OPINION” VARCHAR2(500 BYTE) ,
“ACQ_APPR_TIME” TIMESTAMP(6) ,
“CREATE_PERSON” VARCHAR2(50 BYTE) ,
“CREATE_TIME” TIMESTAMP(6) ,
“INVALID_PERSON” VARCHAR2(50 BYTE) ,
“INVALID_TIME” TIMESTAMP(6) ,
“DESCRIBE” VARCHAR2(200 BYTE) ,
“STATUS” VARCHAR2(20 BYTE) ,
3.4本章小结
本章节主要阐述的是系统设计部分,设计是一个项目开始的前提,清晰的设计可以调高后续工作的效率,更加直观的构架可以使任务更加有条理。在本章节中,针对此系统展示了总体功能模块功能原理流程图,展示了数据库E-R模型图,以此来清晰介绍数据库内各个数据之间的联系,同时展示了数据库的部分代码。并对各模块进行了简单介绍。为实现系统安全模块,工单管理模块,安全预警模块等功能进行总体设计。netty作为主要应用的框架,起很大的作用,通过本章设计可以清晰的了解其作用。

4系统实现

4.1开发环境
本系统使用Win10进行操作,开发工具为IntelliJ IDEA和WebStorm,其中IDEA为主要开发工具,数据库为Mysql,开发语言为Java,主要技术包括:Netty、Redis、WebSocket、JavaScript、OpenLayers。
开发规范具体内容如下:常量命要求表达完整清晰,抽象类名使用Base开头,测试类以Test结尾。同时不允许应用未定义的常量直接出现在代码当中,代码单行过长时需换行。
4.2数据库实现
由于存储数据容易分散,数据库的介入实现了对其集中控制,又不失其独立性,数据库最大程度的减少了系统中的多余运行。数据库表单如图4.1所示:
在这里插入图片描述

图4.1 数据库表单
为了实现数据库的有效性,减少数据的冗余度,共建立20个数据库表,详细内容如下:管理员表(admin)、用户信息表(user)、用户权限信息表(role)、暂时游客信息表(tourist)、省级地理信息表(p_geography)、市级地理信息表(s_geography)、县级地理信息表(x_geography)、区级地理信息表(q_geography)、街道地理信息表(j_geography)、派单信息表(send)、其他派单信息表(q_send)、里程信息表(mile)、用户位置信息表(site)、日常工单信息表(daily)、自动派单信息表(auto)、新建工单信息表(new)、系统通知信息表(inform)、用户需求信息表(reply)、报警内容信息表(alarm)、预警内容信息表(early)。
4.3系统功能实现
4.3.1系统安全模块实现
系统的每一个模块都作用于每一个客户端,总体业务流程在于运维部分与web端部分,并且两者业务交叉部分较多。此系统设计web端并未设置注册功能,均由管理员用户创建。当用户首先进入登录页面后,输入账号密码,校对后进入平台或者运维,进入后所展示页面为角色分配决定[26]。
管理员在填入相应用户信息后可创建用户,色部分系统默认管理员角色和普通用户。管理员具有最高权限,可以由管理员进行用户添加,也可以由用户自行申请添加角色。管理员可以添加任意角色,此情况多用于用户不便自己添加用户时,例如当用户不会操作时可联系管理员进行帮助。管理员需要遵守创建标准,避免错乱重复,新建如图4.2所示:
在这里插入图片描述

图4.2 新建用户示意图
4.3.2工单管理模块实现
工单模块处理相对比较复杂,但总的来说处理端为pc负责创建新的工单,创建的工单可以比较的多样化,可以手动填写所有信息数据,也可从日常工单部分获取数据作为样板数据进行修正。
负责的主要业务为派发和审核,派发是指将非完结与非下发状态的工单下达,接收到工单后,从而进行工单处理工作并对此工单进行业务审核,这一流程在未办结状态下周而复始的进行。平台端新建工单如图4.3所示:
在这里插入图片描述

图4.3 新建工单
4.3.3实时追踪模块实现
每一个用户只可能存在一条位置数据记录,并且此纪录为用户最新数据记录,同时,针对每个用户建立三条记录,第一条为状态信息,分别为在线,离线,报警,心跳状态;第二条为用户数据信息,即用户的位置数据,对象编码等;第三条为用户历史数据[27]。
位置数据的展示是即时性的,所以创建了定时推送机制,采用WebSocket协议传输用户最新状态统计以及位置数据用以即时更新。用户可以通过系统的实时追踪模块,使用导航,管理员则课通过实时追踪模块查看报警信息,用户状态,实时追踪如图4.4所示:
在这里插入图片描述

图4.4 实时追踪示意图
4.3.4即时聊天模块实现
即时聊天有固定的数据格式,用以需要入库保存,但标记为未读,待用户查询记录时可以获取。传输文本相对比较复杂,由于websoket的局限性,采用http接口上传[28],获取用户聊天文件以及固定数据格式,存储图片后依旧采用websocket聊天会话进行聊天信息的转发。即时通讯效果如图4.5所示:
在这里插入图片描述

图4.5即时通讯效果图
4.4 本章小结
本章对每一个模块都展示了实现成果,系统安全模块是系统基本模块,其有登录验证,用户分配,角色创建与分配,模块的建立和角色的对应的关系,这属于操作权限控制,同时,在数据权限控制方面,管理员负责管理最高权限,在增删改查可以对任何模块使用。

5系统测试

5.1系统测试环境
在执行系统测试阶段需要搭建系统相关的测试环境。系统服务端的运行环境为软件:Win10 Server,Apache Tomcat8.0,Idea2018.5,Redis,WebStorm,谷歌浏览器等。客户端为计算机,谷歌浏览器等各类浏览器,支持Android8.0以上的安卓设备。
5.2系统压力测试
本系统进行压力测试的测试工具为:JMeter5.2.1,并发用户为2000,测试的结果展示为:聚合报告、汇总报告、图形结果。压力测试结果如下:如图5.1为聚合报告、图5.2为汇总报告、图5.3为图形报告。
在这里插入图片描述

图5.1 聚合报告

在这里插入图片描述

图5.2 汇总报告

在这里插入图片描述

图5.3 图形报告
5.3系统功能测试
5.3.1系统安全模块功能测试
测试环境的搭建也必须符合生产模式环境,不在局限测试环境,根据本系统设计分别搭建客户端端和服务端进行测试。为验证系统安全,进行系统安全模块功能测试。测试内容如下:测试已经创建用户登录的
系统,输入账号密码后,运行结果显示登录成功,即表明测试成功。测试增加系统用户和模块添加到角色以及角色添加到模块,系统显示添加成功,系统的安全模块测试内容如下表5.1所示:
表5.1 系统安全模块功能测试表
测试内容 操作 系统运行结果 测试结果
测试已创建用户登录系统 登录页面输入账号密码 登录成功,进入系统主页,并根据角色展示相应页面 系统登录成功
测试新增加系统用户 点击添加用户,完成相关信息,点击确定 重复登录名和填写不规范提示,创建成功,并同步到监控对象 新增系统用户成功
测试用户的修改删除 点击修改,改动数据后查看再点击删除 修改后看到信息已修改,删除后查无记录 修改删除成功
测试模块增删改查 点击模块添加,成功后点击修改,成功后点击删除 添加后展示信息,修改后更新信息,删除无记录 模块管理增删改查操作成功
测试角色增删改查 点击角色添加,成功后点击修改,后点击删除 添加后展示信息,然后更新信息,删除无记录 角色管理增删改查操作成功
测试模块添加到角色 点击编辑权限树按钮,选择模块 选择相关模块后成功保存,点击查看按钮可看到结果 模块添加成功
测试角色添加到用户 点击分配角色,选择相应角色,点击确定 选择角色后成功保存,重新登录后,系统展示所分配角色相关模块 测试模块,角色,用户关联关系成功
5.3.2工单管理模块功能测试
系统的工单模块测试内容主要为测试新建工单,日常工单的修改和删除,新增普通工单功能,工单下发和上传等功能。测试操作为在PC端点击工单模块,并按照测试具体功能的具体操作进行。工单模块较为复杂,其中测试工单下发和上传方面前四次不稳定,测试新增派单规则前三次不稳定。其中表现为,工单下发后PC端保存失败,无法正常查看新增工单,经调试后,第五次测试后显示稳定。具体测试内容如下表5.2所示:
表5.2 工单管理模块功能测试表
测试内容 操作 系统运行结果 测试结果
测试新建日常工单 登录PC端点击工单模板,按要求填写保存。 查看到新增加的日常工单记录 新增日常工单成功
测试日常工单的修改和删除 点击修改信息,查看后点击删除 修改后记录更新,删除后记录消失 日常工单修改和删除成功
测试工单下发和上传 PC端点击工单选择下发对象 PC端成功下发工单,并上传所下发工单 工单下发和上传成功
测试新增派单规则 PC端点击新建规则,完善信息 新建规则记录成功显示 新增派单规则成功

测试派单规则可行性 查看规则下发时间,到达时间点后查看记录 成功显示工单记录 规则具备可行性
测试新增普通工单 在PC端点击新增工单,或从日常工单库选择 PC端两种方式均创建成功 多种创建方式新增成功
5.3.3即时聊天模块功能测试
即时聊天模块测试内容主要为测试PC端发送信息、接收信息、测试聊天记录获取。在PC端的聊天页面进行测试,选择聊天对象发送信息进行相应测试。即时聊天测试时需要注意所处环境的网络信号以及卫星信号,PC端发送信息测试结果平稳,接受信息偶尔失败,经过调试后均成功并且结果平稳。聊天记录可获取,但不支持过久的具体内容见表5.3:
表5.3 即时聊天模块功能测试表
测试内容 操作 系统运行结果 测试结果
测试PC端发送信息 选择需要聊天对象,输入所需要聊天消息内容 PC端聊天框内展示编辑的信息并展示 PC端发送信息成功
测试PC端接受信息 选择聊天对象,向PC端输入内容发送消息 PC端成功接受到信息并展示 PC端接受信息成功
测试聊天记录获取 点击获取聊天记录 成功展示聊天记录 查询聊天记录成功
5.3.4实时追踪模块功能测试
实时追踪模块测试主要内容为测试地图展示对象当前位置信息和测试监控对象和终端,打开PC端进行测试时需注意当前信号是否良好,系统运行后显示功能的测试成果,具体内容见表5.4:
表5.4 实时追踪模块功能测试表
测试内容 操作 系统运行结果 测试结果
测试地图展示对象当前位置信息 随意走动到卫星信号好的地方,打开PC端平台管理 接受位置信息权限后PC端展示当前地理位置信息 功能展示成功
测试监控对象和终端 成功展示当前位置信息后打开运维管理,查看监控对象 显示当前对象已绑定终端设备,查看设备的位置信息 监控对象和终端设备绑定成功

5.4本章小结
本章节首先测试系统运行环境,确保系统正常运行。测试结果并不是一直稳定,经过多次调试和多次测试后,测试结果显示稳定成功。测试系统各个功能模块,从简单登录模块开始测试,首先从必要的增删改查步骤开始,逐步地开始融合相关模块形成具体业务实现,业务与业务之间又形成新的组成部分,从而构建出系统整体业务流程。整体的测试思路还需要从单元测试开始,全方位,多角度,广思路的进行测试分析修改完善。

结 论

本文从位置服务领域用途作用广泛展开,从而开发一套基于位置数据的位置服务业务系统为目标展开此课题设计。阐述了此课题的研究现状以及研发者套系统的意义,确定了此课题设计的研发目标,为建立基于位置数据,提供大多数相关业务场景的功能性交互,解决同性质传统业务实现的复杂性、低效性,丰富当前业务表面以及潜在的功能业务需求,并可灵活添加位置数据上传设备处理同类业务需求,以平台式提供使用者所需要的服务。
本课题提出目标为构建通用性平台提供多样化服务,这个目标暂时还是理想化的,还处于探索阶段。实际上此课题给提供的更多是基于传统位置服务相关业务需求假定的业务需求,适用性在于目的性不是特别强的作用范围,而面对更加专业性、需求更高的情况下是不太适用的,更像一个通用基础系统,更多更高要求还有待优化与添加,现有模块可作为附属模块。后续更多的应该是系统可扩展性方面的优化,同时实现通用式平台管理服务方案必须对其现有设计模式进行思考,对现有功能和非功能代码做好管理,提高质量。页面优化也极其重要,简单操作,智能化操作是趋势,操作繁琐,复杂度高,上手难等是软件周期结束的必然,尽管此课题设计针对使用人群有限制,但是友好型系统设计仍是重中之重,例如针对此课题中的工单模块,操作流程化方向改变是改变的必然,比如加入工作流,减轻使用者使用的各项成本。对于这些潜在或急需解决的问题,对于当前我的技术储备来说,有远有进,并难以支持我进行全部的改造,后续的工作则是对于这些问题的思考及向解决这些问题的方向发展。

致 谢

时光荏苒,大学生涯即将结束了,回首这四年的生活,收获了很多,不仅是在学习上学到了很多东西,而且我个人各方面的能力也有了很大的提高。从大一开始,我个人还没有什么明确的学习目标,对学习也提不上多大的兴头,那时候只想着完成每天学校安排的课程,课下完成布置的作业。这样的日子过了一段时间以后我开始反思我的大学四年我应该怎样度过,以及在郭鸣宇老师的教导下,定下了一些短期的目标。
在这里,首先由衷地感谢我的指导老师李朋老师和王凤伟老师,在他们的悉心指导与不厌其烦地督促下,这篇论文才能顺利的完成。李朋老师和王凤伟老师在此期间,为了帮我们顺利完成任务,占用了自己很多的休息时间,让我敬佩。其次要感谢的是身边的同学和朋友,无论是在生活上,还是在这个课题设计完成的过程中,是他们的关心鼓励,分享经验,相互解疑答惑,得以让我忙碌单调的生活变得更为生动,充满温暖和欢乐,也正是在这样宽容的环境里才能吸取营养来面对困难。最后要感谢我的父母,是他们的辛苦工作和教育才让我能够有机会在大学者四年里学到这么多的东西,让我对自己的人生和未来有了更加清晰的认识。回首这四年的生活,虽然也放弃了很多东西,但是总的来说还是很充实的,这是我的选择,这段时光必将是我人生中最珍贵的岁月!

参考文献

[1]王永和,张劲松,邓安明,周智勋. Spring Boot研究和应用[J]. 信息通信,2016(10):91-94
[2]韩星,刘姣,周淑君. 基于Netty的RPC通信系统的编解码技术研究[J]. 电脑知识与技术,2017,13(26):104-107
[3]熊肖磊,王春伟,赵炯,周奇才. 基于Redis与SSM的大型设备数据运用系统设计[J]. 现代机械,2018(06):29-34
[4]杜艳美. 基于web前端的性能优化框架模型研究[D]. 西南科技大学,2018.
[5]陈瑞. 基于Springboot高并发Java Web开发模式[J]. 电脑编程技巧与维护,2019(04):27-30
[6]焦鹏珲. 基于SpringBoot和Vue框架的电子招投标系统的设计与实现[D]. 南京大学,2018
[7]Meng,J.E&Yong,Z&Ning,W&Mahardhika,P.Attention pooling-based convolutional neural network for sentence modelling[J]. Information Sciences,2016,13(11):373-374
[8]何鑫. 基于GeoServer和OpenLayers的WebGIS地理信息服务系统的设计与实现[J]. 山西交通科技,2017(04):122-126
[9]阳华. 基于Geoserver的校园WebGIS实现[D]. 南华大学,2011
[10]哈吉德玛. 基于位置服务(LBS)的应用研究[J]. 现代信息科技,2019,3(04):61-62
[11]何晓东. Android手机定位信息采集及上传软件设计与实现[J]. 电脑知识与技术,2014,10(36):8646-8647
[12]陈劼. 基于分布式的高可用消息中间件的设计与实现[D]. 西安电子科技大学,2015
[13]蒋一帆. 位置服务:蛋糕为谁而留[J]. 互联网经济,2016(11):64-71
[14]梁建超. 基于开源WebGIS软件Geomajas的应用研究[D]. 西安科技大学,2012
[15]毕建信. 基于MVC设计模式应用研究与实现[D]. 武汉:武汉理工大学,2006
[16]张雷,王悦. 基于SpringBoot微服务架构下的MVC模型研究[J].安徽电子信息职业技术学院学报,2018,17(04):1-9
[17]陈强,武佳佳. 基于Netty高并发物联网服务器研究与设计[J]. 电子技术与软件工程,2018, 01(07):34-35
[18]魏莹. 基于Netty框架的智能终端与服务器通信的研究[D]. 西安:西安电子科技大学,2017
[19]Ying,K&Yu,Z&Zhu,F&Liu,Q. Static Detection of Logic Vulnerabilities in Java Web Applications [J]. IEEE conference paper, 2012,16(22):69-71
[20]洪文菊. 基于LBS的移动GIS的研究与实现[D]. 贵州:贵州大学,2017
[21]David,F. JavaScript权威指南[M]. 第5版. 北京:机械工业出版社, 2007:23-26
[22]傅莞龙,张传武,彭安金. 使用Spring Data和JPA在JavaEE系统中简化持久层[J]. 电子世界,2017,01(06):88-89
[23]王靖. 计算机操作系统运行与维护研究[J]. 无线互联科技,2017, 12(22):56-57
[24]王珊, 萨师煊. 数据库系统概论[M]. 北京:高等教育出版社, 2014:12-23
[25]Leila,E&David,S.Adaptive recommendation system:conceptual frameworks and implementations[J]. Vietnam Journal of Computer Science, 2015, 2(2):95-107
[26]资讯教育小组. ASP与SQL网站数据库程序设计[M]. 北京:科学出版社, 2002:26-28
[27]奥斯马尼. JavaScript设计模式[M]. 北京:人民邮电出版社, 2013:03-06
[28]Johnson,R.A. Java Database Connectivity Using Sqlite:Atutorial[J], Allied Academies Interontaional Conference, 2014,05(18):32-36

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值