【《Y市人才管理系统设计与实现案例》14000字】_第1页
【《Y市人才管理系统设计与实现案例》14000字】_第2页
【《Y市人才管理系统设计与实现案例》14000字】_第3页
【《Y市人才管理系统设计与实现案例》14000字】_第4页
【《Y市人才管理系统设计与实现案例》14000字】_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Y市人才管理系统设计与实现案例目录TOC\o"1-3"\h\u27134Y市人才管理系统设计与实现案例 1221811.1系统框架 1143821.2系统部署 2234361.3人才信息库模块 377321.3.1目标数据源探查及获取 44811.3.2数据抽取及清洗 6322851.3.3数据转换、关联与比对 8217781.3.4数据融合处理 10268501.3.5数据同步增量更新 12123761.4人才基础管理模块 13108721.4.1人才信息管理 14325131.4.2单位信息管理 15233871.4.3系统信息管理 1641901.5人才数据分析模块 22192841.5.1结构化数据分析及可视化 2391871.5.2非结构数据分析及可视化 24306061.6人才综合业务管理模块 29141981.6.1系统登录 2936381.6.2人才服务 30125441.7小结 32系统框架基于面向多源异构数据的Y市人才管理系统框架如图4.1所示。图4.SEQ图4.\*ARABIC1系统框架本系统按照功能需求分析搭建了四层系统框架。整个系统框架搭建在基于J2EE标准的技术架构之上,采用基于MVC模式中的Spring+SpringMVC+MyBatis框架在“人才信息库模块”中,首先对多源异构数据进行采集,主要使用Webmagic进行人才信息的网络爬取人才数据采用Kettle工具进行多源异构数据的采集、预处理与融合后,将数据存储到人才库中。“人才基础管理模块”建立在人才信息库基础上,实现系统登录、日志管理、账号管理、角色权限管理、系统资源管理、企事业单位信息管理、人才信息管理等基本功能。“人才数据分析模块”也是建立在人才信息库基础上。针对结构化数据,通过SQL对人才库的数据进行查询后由数据接口将结果数据传输到前端页面,实现对人才总体数据、人才结构数据、风险指标数据等结构化数据的分析。针对非结构化数据,采用基于自然语义的人才文本关键词提取算法提高数据分析效率。最后使用Echarts框架进行数据可视化图表展示。“人才综合业务管理模块”处于系统最上层,主要通过用户注册、用户登录、人才政策申请、人才政策审核等应用功能,提供高效的人才管理和人才服务。系统部署面向多源异构数据的Y市人才管理系统的实现过程,主要部署在两个Tomcat应用服务容器中,如图4.2所示。整个系统运用Nginx服务器实施负载均衡,运用Mysql数据库对系统的数据库进行备份。图4.SEQ图4.\*ARABIC2系统部署图此外,考虑到Windows完善的图形化界面,网络和硬件支持良好,应用程序众多等优势。为了实现Y市人才管理系统,本论文采用Windows操作系统作为开发环境,通过Java语言和JavaScript语言进行代码实现各功能模块,包括人才信息库、人才基础管理、人才数据分析、人才综合业务管理等功能模块。Java语言具有良好的跨平台与可移植性支持,以及基于虚拟机的高性能运行效率、对分布式应用环境的的安全性支持,完善的内存管理和访问机制,以及程序的健壮性设计。因此,使用Java语言实现面向多源异构数据的人才管理系统的后端部分。JavaScript语言作为一种解释性的脚本语言,可以有效减少网络传输量,提交传输效率,方便操纵HTML对象,对分布式运算、处理予以支持。广泛应用于各个领域。因此,使用JavaScript语言实现面向多源异构数据的人才管理系统的前端部分。人才信息库模块人才信息库模块实现了多源异构数据治理,包括结构化数据和非结构化数据。非结构化数据主要包括:人才学术论文文档、人才发明专利文档、人才科研项目文档、人才业绩文档、人才获取奖项文档、人才评价文档、其他人才文本信息等。本系统的人才数据处理采用Kettle工具实现,原始库的数据(即省市人才库、党政人才库、企业人才库、专业人才库、教育人才库的数据)经过目标数据源探查及获取、数据抽取、清洗、转换、关联、比对、融合等系列过程后,将数据治理成符合标准规范的数据,加载到目的数据仓库模型中去,最终实现人才信息库模块。对多源异构数据治理过程如图4.3所示。图4.SEQ图4.\*ARABIC3人才信息库模块实现过程按照图4.3的实现过程,人才信息库模块基本实现了全市人才库、党政人才库、企业人才库、专业人才库、教育人才库的相关人才信息数据治理。数据治理结果如表4.1所示。表4.SEQ表4.\*ARABIC1数据处理结果数据源原始数据条数清洗融合后条数省市人才库893276785621党政人才库8527677218企业人才库238512203256专业人才库123259116576教育人才库6527959199总计14056021241870目标数据源探查及获取首先需要找到目标数据源,目标数据源探查组件主要对原始库(省市人才库、党政人才库、企业人才库、专业人才库、教育人才库)中的数据进行探查分析,以便对待汇聚整合的数据有一个清晰的了解,进而提取出数据源头的元数据信息,为后续的数据处理过程提供管理、业务、技术等方面的支撑。具体的探查内容如下:业务探查:对来源表的业务含义进行探查,以便能准确地理解和描述数据。接入方式探查:对来源表的存储位置、提供方式进行探查,为数据接入规则定义和数据处理、组织提供依据。字段探查:对具体字段的数据内容进行探查,识别其代表的含义和统计分布情况。空值率探查:统计字段空值占比情况,一方面可重点关注空值率高的重要字段,另一方面可通过与历史情况比较及时发现数据质量的动态变化。值域及分布探查:对字段的值域范围以及分布情况进行探查。命名实体探查:根据数据内容识别人名、地名、机构名、手机号等命名实体,帮助理解字段语义。数据元探查:根据字段名字及内容,探查字段的确切语义,并与数据元标准进行映射。类型及格式探查:探查字段的类型及格式是否符合规范。数据集探查:对来源数据集表名、引用数据元等进行探查,确定数据集是否是标准数据集。探查数据总量、增量及更新情况,为数据接入、处理和组织提供依据。问题数据探查:探查字段中不符合规范的数据,为后续数据清洗规则的制定提供依据。最后,将探查到的数据进行推送,以便获取数据,如图4.4所示。把数据探查的结果信息推送到数据清洗组件、数据转换组件以及元数据库中,为相关组件的规则制定,流程分发等提供必要的信息。图4.SEQ图4.\*ARABIC4目标数据源探查及获取数据抽取及清洗数据抽取数据抽取是对目标数据源进行规范化处理的过程。针对结构化数据,kettle通过配置数据库连接信息,访问本地及远程数据源抽取数据。针对非结构化数据,kettle将目录信息转化为结构化的数据表示,转换的数据包含文件名、目录存储路径、大小、文件内容等信息。(1)结构化数据内容提取主要针对存在于各政府部门的相关数据库,如教育部门、经信委、民政部门等,根据文件中的内容,提取出业务需要的数据内容。常见的结构化数据类型包括XML、CSV、TXT、Word、Excel等文件。针对结构化数据的抽取过程如下:数据缓存:对XML、CSV、TXT、Word、Excel文件解析出来的结构化信息缓存。数据封装:对解析出来的数据进行数据封装,形成标准化的数据结构。数据推送:推送封装好的结构化数据到本系统的人才信息库。源数据索引:需实现对原始半结构化数据的索引能力,便于对提取后的结果进行溯源追踪。(2)非结构化数据内容提取多媒体信息提取:从图片、语音、视频等多媒体数据中提取文字、图片等信息。如从相关图片中提取文本信息,从视频信息中提取关键帧信息,对图片中出现的二维码进行解析识别,提取包含的文字信息、链接信息等。生物特征提取:从海量图像、视频、音频信息中提取人脸等信息,为人才信息库提供数据支撑。如从社保局的人才管理系统中的人员照片信息提取人脸特征信息、从各类视频信息中提取人脸信息,识别出涉及的人才人员信息等。全文信息提取:主要是从海量文本数据中提取姓名、身份证号、电话号码、社会统一信用代码、企业名称、地址、时间等信息。如从经信局的企业人才发展评估报告信息中提取相关人员学历、职称、职业资格等结构化要素信息。如从业务信息系统中对接的Word格式的文献文件内容中提取单位名称、姓名等要素信息。数据清洗数据清洗是对人才相关业务数据中不符合标准规范或者无效的数据进行相关操作。在进行数据整合之前先定义数据的清洗规则,并对符合清洗规则的数据设置数据的错误级别。当进行数据整合过程中遇到符合清洗规则的数据时,系统将把这些业务数据置为问题数据,并根据错误的严重程度进行归类。对出现的问题数据进行标记后存入问题数据库中,经确认后再决定是通过清洗转换后入库,还是直接放弃,抑或其他方式处理。最终,建立目标数据库作为数据仓库用于存放清洗后的数据。下面以姓名和地址字段为例,对数据清洗进行简要说明:(1)姓名和地址信息是重要的身份标识,但它们比较复杂,比较难以处理。同一人的姓名和地址可能有不同的表示方法,如曾用名、个人随便填写的姓名、中文名与英文名;地址可能会出现地址的缩写或不同表示方法、地址的详尽不同、信箱还是门牌号等问题。(2)即使各信息源的信息都是完整、准确的,而由于各信息源的数据格式可能并不相同,也需要对这些信息进行清理。清理的方法是,把来自各个信息源的信息进行解析,分成更小的信息片断,如把姓名分成姓和名,把地址分成行政区划部分(省、市、区)路名、门牌号、楼层或者房间号等。利用姓名和地址解析工具,可以对信息片断进行合并和修正。(3)通过对姓名和地址的解析和清洗,可以提高身份识别的准确性和数据匹配的质量,从而使得遗漏和错误的匹配大大减少。数据清洗分为以下几步:(1)元素化将非标准的数据格式化成结构数据。以数据库表user的任意一条记录为例。Name、City和Phone三个字段值分别为:Name:张天1生City:北京Phone素化为:Name(1):张Name(2):天1Name(3):生City:北京Phone(1):010Phone(2):12220816(2)标准化将元素标准化,根据字典消除不一致的缩写。这里的字典是用户通过分析样本表预先制定的一些规则的集合。样本表是根据概率统计从表user选择一部分记录所形成的一个表。首先分析Name(2)的值为“天1”,此值在字典中不存在,而“天”在字典中存在。所以在这里,“天1”被认为是脏数据,正确的数据应为“天”。(3)校验对标准化的元素进行一致性校验,即在内容上修改错误。(4)匹配在其它记录中寻找相似的记录,发现重复记录。比如,对整个表user排序,然后在表中查找Name(1)值为“张”的所有记录,如果有这样的记录再去查找Name(2)。依次类推,如果所有字段的数据全都相等,那么这两条记录就是重复记录。(5)消除重复记录根据匹配结果进行处理,删除部分记录或者合并多个记录为一个完整信息的记录。数据转换、关联与比对数据转换本系统涉及Y市多个部门、多个业务系统中的数据。不同系统有不同的数据结构定义,数据汇聚在一起后就会产生数据格式不规范统一、数据命名不规范统一、数据编码不规范统一、数据标识不规范统一。这样的数据是无法支撑业务应用需要的,因此需要对汇集的数据进行数据格式规范统一、数据命名规范统一、数据编码规范统一、数据标识不规范统一等数据转换处理。数据命名转换:通过比对标准数据元和实际数据表中的数据项,如果比对结果一致,则不需要转换处理。如果比对结果不一致,要按照标准数据元中规定的命名进行转换。数据类型转换:通过比对标准数据元和实际数据表中的数据项,如果比对结果一致,则不需要转换处理。如果比对结果不一致,要按照标准数据元中规定的数据类型进行转换。按照标准规范将不同来源、不同格式的数据转换成统一的标准化数据格式。本文系统建立了数据标准,进入系统的数据都必须遵循这些标准,只有这样才能保证平台上层应用的调用数据的通用性和应用之间充分的信息共享。需要做的格式统一有以下几种:全角转半角、电话号码转换、URL形式转换、身份证件号码转换、社会统一信用代码转换、时间格式转换等。身份证号码和社会统一信用代码标准化是将身份证位数统一为18位半角字符,字母字符转为大写字符,电话号码标准化主要是保留源数据的数字字符部分,去除加减号、空格等特殊字符,仅保留有效的数字字符内容。特定字段全角转半角(URL、账号等信息)。时间标准化即将“yyyy-MM-ddHH:mm:ss”、“yyyyMMddHHmmss”等各种时间格式值,这些格式也统一转成系统定义的标准时间格式。数据编码转换:比对标准数据元和实际数据表中的数据项,如果比对结果一致,则不需要转换处理,如果比对结果不一致,需要按照标准数据元中规定的标准编码进行转换。将来源于不同系统的不同数据字典转化为标准数据字典。视频转码:由于本文系统的视频信息来源于不同终端设备,且由异构通信网络进行传输,因此需要进行视频转码,将已经压缩编码的视频码流转换成另一个视频码流,以适应不同的网络带宽、不同的终端处理能力和不同的用户需求,并保证服务质量。数据标识转换:通过数据元和数据表字段的关联,根据关联关系自动生成可执行的转换规则,进行数据标识的转换。标准地址转换:对地址要素不完整、文字表达不一致的地址信息进行标准化处理。依托民政的标准化地址库及互联网公开的POI地址信息库,形成地址标准基础库,对采集的地址信息进行标准化处理。数据关联数据关联是指完成在不同数据集之间的关联,实现在不同数据集的联动,为本文系统的数据管理、业务应用的需求提供支撑。根据多源异构数据流程设计的要求,数据关联主要包括:标准关联、字典关联、非结构化关联、关联回填。(1)标准关联:在人才信息库中设计了标准的数据元体系,作为数据资源中心的数据规范基础。数据元是最小的数据单位。在数据关联系统中,需要通过手工或更智能的方式实现各种不同编码的原始数据和标准数据元的关联。(2)数据字典、属性及相关含义的关联:如姓名与身份证号关联、学历和学位关联、职称名称与职称等级关联、单位代码和单位名称关联等。(3)非结构化与结构化的关联:对非结构化数据进行提取结构化信息后,按照关键字(如就职企业相同、从事专业相同、职称等级相同)等进行关联,构建数据关联关系。关联回填:两个或两个以上数据集之间通过某种信息建立关联关系之后,根据实际业务的需要,对这两个数据集中的数据进行相互补充。数据比对通过数据比对操作实现对两个数据集中的数据内容、数据格式的比较核查,找出相同的数据或不同的数据。在业务应用场景上主要实现以下数据的比对:(1)数据项与标准数据元比对:实现原始数据表中的数据与标准数据元数据的比对,比对的内容包括数据命名、数据标识、数据格式、数据值域、数据编码、数据类型等数据的比对,数据比对的结果为一致或不一致。(2)不同数据项集比对:实现两个数据项集的交集、补集,以满足数据检索的需求。数据融合处理标准化后的数据需要采取必要的数据融合手段,按照人才信息库及数据应用需要的方式组织,以支撑人才管理的数据需求。在数据融合的过程中,本文系统以合理的方式设计数据结构,保障数据应用对数据高效分析查询的同时,尽可能的减少冗余。数据融合处理过程如下所示:模型加工主要包含数据合并、数据覆盖、数据切分等操作。数据合并通过函数、分组或转列的方式完成数据的表合并和列合并。数据覆盖操作需要依赖数据比对的结果,将新增和修改的记录覆盖到目标表中。数据切分需要通过行筛选、列提取或表提取等方式将相同数据对象的结果表进行切分合并。如图4.5所示。根据3.1.1.2节的需求分析,在生成的全部合并数据中会增加一个名为“标志字段”的标识,“Identical”、“Changed”、“New”、“Deleted”。图4.SEQ图4.\*ARABIC5数据合并示例汇总加工操作按照公共汇总的原则,明确哪些数据需要汇总合后,采用聚合函数或窗口函数等方式,完成对跨数据域且需要被频繁公用的数据的汇总。图4.SEQ图4.\*ARABIC6基于switch/case数据处理示意图根据3.1.1.2节的需求分析,数据处理的实现操作源于数据合并后的标识字段,分为:“Identical”、“Changed”、“New”、“Deleted”四种。采用图4.6展示了基于switch/case的数据处理过程。图4.SEQ图4.\*ARABIC7定时调度设定为提高数据处理的效率,设计中考虑使用Kettle的定时任务功能对数据进行处理。实现方式为使用Kettle定时任务功能配置需定时执行的参数实现。人为的更新数据是一件不高效且昂贵的操作,所以在人才信息库模块实现过程中考虑了这一点。实现的方法是:设定定时任务。定时任务相当于闹钟,当时间流转到设定时间后,会自动执行被分配的操作任务。通过定时处理操作,在系统中就只需要进行任务的编写,其他都交给定时器触发即可,如图4.7所示。因为系统在白天的使用率高,所以不推荐把定时任务设定在白天。于是,选择在凌晨执行定时任务是一个不错的办法。设置系统对人才信息库进行定时处理,就能持续保障人才库数据的健壮,从而可以更高效的掌握和应用数据。通过以上基于Kettle的所有操作,包括数据抽取、数据合并、数据处理、定时处理等操作,基本可实现人才信息库模块的构建。数据同步增量更新考虑到人才信息库中的来源数据是不断增加与更新的,因此,人才信息库需要同步增量更新。数据的同步增量更新一般有两种方式。一种是先进行相关旧数据的全部删除,然后将相关的新数据进行插入,实现全部更新。这种操作实现起来方便简单,但是更新后的数据无法体现新旧数据之间的区别,新数据一般都包含了大量的旧数据内容。另一种是相对新旧数据进行对比,只需将不同的数据进行更新即可,即将新增和修改过的数据插入目标数据库。这样操作相对较为复杂,计算成本较高,但是增量数据体积小且更符合业务场景要求。本系统的人才信息库使用第二种方式进行数据同步增量更新,并使用kettle进行实现,以减小计算成本。图4.SEQ图4.\*ARABIC8数据同步增量更新kettle总体过程配置图基于Kettle组件的同步增量更新过程其如图4.8所示,主要包括以下几个操作步骤:输入:输入的最新人才数据源表与目标数据源表的历史数据进行比对,确认比对的关键业务字段一致、且按照比对字段进行排序。合并记录:采用数据的同步增量更新的第二种方式进行历史数据的比较,并生成相应的标识:“identical”标识为无变化、“changed”标识为有更新、“deleted”标识为删除、“new”标识为新增。switch/case:根据合并记录的标识可定义kettle判断选择分支进行数据同步增量更新处理。空操作:如果switch/case的判断标识为identical,说明本条输入的最新人才数据源表与目标数据源表的历史数据记录没有发送变化,kettle将不做任何操作。插入、更新:如果switch/case的判断标识为changed,说明本条输入的最新人才数据源表与目标数据源表的历史数据记录有变化,kettle将执行更新操作。如果switch/case的判断标识为new,说明本条输入的最新人才数据源表是新的数据记录,kettle将执行插入操作。删除:如果switch/case的判断标识为deleted,说明本条输入的最新人才数据源表已删除该条数据记录,kettle将对目标数据源表的历史数据记录执行删除操作。人才基础管理模块人才基础管理模块基于SSM(Spring+SpringMVC+MyBatis)组件构建,采用Java方式,分别对人才信息管理、单位信息管理和系统信息管理进行实现。人才信息管理图4.SEQ图4.\*ARABIC9人才信息E-R图由于人才数据的录入和维护最为重要,因此,为了节省论文篇幅,本节只对在人才数据的录入和维护功能进行实现。首先建立实体关系E-R图,如图4.9所示。其中,录入维护字段部分基于SSM框架中的SpringMVC做为入口实现。人才信息E-R图中涉及到的具体信息如下:(1)人才信息:除了个人信息以外,还包括教育信息、工作信息、党政信息、联系方式以及不同人才类别所具有的特殊信息等。(2)教育经历:可填写多项,主要包括毕业院选、所学专业、学历、学位、授予日期及国家/地区、最高学历学位等。(3)工作经历:可填写多项,主要包括单位名称、担任职务以及工作年限等。(4)入选情况:可填写多项,主要包括文件文号、入选类别、批次、时间、期限、落地省份、以及相关的申报书和附带的申报附加材料等。(5)工作成果:可填写多项,主要包括成果的描述以及成果的材料信息等。(6)获奖情况:可填写多项,主要包括获奖的项目名称、编号、排名、年度、奖励级别、国别、授奖单位等信息。(7)专利授权:可填写多项,主要包含专利名称、类别、专利号、授权技术领域、授权公告日、当前专利状态、使用与转让情况等信息。(8)代表论著:可填写多项,主要包含论著名称、所属学科领域、出版/发表时间、出版机构、发表期刊等信息。(9)培训情况:可填写多项,主要包含培训主题、日期、地点、培训单位和内容等相关信息。图4.10展示了人才信息管理类图,包括了人才实体类、人才DAO类,人才Service类与人才管理Contoller类。PersonnelDO类为人才实体类,主要定义了系统人才相关的属性,主要包括人才id、人才名称、密码、登录时间、昵称。PersonnelDAO类主要提供对人才管理的数据操作内容,包括数据的增、删、改、查、统计等底层方法的实现。PersonnelServiceImpl类对PersonnelService接口的实现,是连接DAO与Contoller的中间业务逻辑层主要实现管理业务的增、删、改、查、统计等方法。PersonnelManagerContoller类是人才管理的顶层实现,包括了查询所有人才、删除人才信息、通过id查询人才信息、编辑人才信息、创建人才等方法的实现。图4.SEQ图4.\*ARABIC10人才信息管理类图单位信息管理单位管理类图如图4.11所示。在类图中包括了单位实体类,单位DAO类,单位Service类与单位管理Contoller类。CompanyDO类为单位实体类,主要定义了系统单位相关的属性,主要包括单位id、单位名称、密码、登录时间、昵称。CompanyDAO类主要提供对单位管理的数据操作内容,包括数据的增、删、改、查、统计等底层方法的实现。CompanyServiceImpl类对CompanyService接口的实现,是连接DAO与Contoller的中间业务逻辑层主要实现管理业务的增、删、改、查、统计等方法。CompanyManagerContoller类是单位管理的顶层实现,包括了查询所有单位、删除单位信息、通过id查询单位信息、编辑单位信息、创建单位信息等方法的实现。单位信息管理是用来管理企业各单位的基本信息,同样基于SSM框架构建,以前端页面数据传输使用SpringMVC,业务逻辑处理使用Spring,数据库映射使用MyBatis实现。主要包含企业的新增、修改、查询、删除、导入、导出。同时,除了机构以外,企业也是作为人才归属的重要地方。图4.SEQ图4.\*ARABIC11单位管理类图系统信息管理按照3.1.2.3的功能需求分析,系统信息管理主要就是为了实现账号管理、权限管理、系统资源管理和日志管理。账号管理功能实现图4.12展示了账号管理类图,在类图中包括了账号实体类,账号DAO类,账号Service类与账号管理Contoller类。AccountDO类为账号实体类,主要定义了系统账号相关的属性,主要包括账号id、账号名称、密码、登录时间、昵称。AccountDAO类主要提供对账号管理的数据操作内容,包括数据的增、删、改、查、统计等底层方法的实现。AccountServiceImpl类对AccountService接口的实现,是连接DAO与Contoller的中间业务逻辑层主要实现管理业务的增、删、改、查、统计等方法。AccountManagerContoller类是账号管理的顶层实现,包括了用户登录、账号删除、账号注册、所有账号查询等方法的实现。图4.SEQ图4.\*ARABIC12账号管理类图账号是发起操作的主体。通过将拥有不同资源的角色分配给不同的账号,以实现各个业务操作功能。本系统通过建立用户-账号的关系,以SSM框架,来实现账号的创建,如图4.13所示。账号主要分为两种类型:企业账号和机构账号。企业账号会与企业管理员相绑定;而机构账号与企业一般人员相关联。对于企业一般人员,由于对系统的操作相对固定,所以企业一般人员已经预设为机构账号,并绑定给出的相关角色信息。用户账号关联角色编码实现如表4.2所示。通过roles!=null判断角色是否存在,如果存在通过for(Objectrole:roles)循环获取角色信息后调用sysUserRoleDao.insert(sysUserRole)方法存储用户账号关联角色信息。图4.SEQ图4.\*ARABIC13账号创建流程图表4.SEQ表4.\*ARABIC2用户-账号创建的关键代码//实现用户-账号关联角色if(roles!=null){for(Objectrole:roles){SysUserRolesysUserRole=newSysUserRole();sysUserRole.setUserId(sysUser.getId());//如果是机构账号,那么只有一个单位录入角色if(sysUser.getIsCompanyAccount()==1){sysUserRole.setRoleId(71L);//默认赋予企业账号}else{sysUserRole.setRoleId(Long.parseLong(role.toString().trim()));}sysUserRoleDao.insert(sysUserRole);}}else{//更新if(sysUser.getIsCompanyAccount()==1){SysUserRolesysUserRole=newSysUserRole();sysUserRole.setUserId(sysUser.getId());sysUserRole.setRoleId(71L);sysUserRoleDao.insert(sysUserRole);}}(2)权限管理功能实现权限管理通过SSM框架中的Spring与Shiro结合实现对用户权限的控制。以赋予不同用户一定的权限,使得用户不能随意使用资源,避免由于用户操作不当而引发风险,尤其要规避泄露隐私数据等情况。数据操作按钮可能并非全部操作,例如有些内容可以新增,但不得删除,只有管理员才能实施删除操作[48]。图4.SEQ图4.\*ARABIC14权限管理E-R图图4.SEQ图4.\*ARABIC15RBAC模式本系统采用RBAC模式来建立E-R关系图(如图4.14所示),进而实现权限管理功能。RBAC这是一种以角色为前提的访问控制。如图4.15所示,在RBAC之中,每一种角色都有与之相对应的权限,用户要想拥有一定的权限,其实现过程的关键代码如表4.3所示。首先,判断创建的角色是否在系统中重复if(sysRole!=null)。如果角色重复,将拦截创建请求并进行提示;如果未重复,将使用Validator.check(sysRole)方法对角色信息进行校验。校验成功后使用this.dao.insert(sysRole)创建角色。角色创建成功后通过permissions!=null判断是否为角色分配了权限。如果分配了权限,则调用sysRolePermissionDao.insertSelective(sysRolePermission)方法进行保存。表4.SEQ表4.\*ARABIC3角色创建//判断角色是否重复if(sysRole!=null){//不为新旧id相等的情况,拦截重复创建if(!(dataParam.getLong("id")!=null&&dataParam.getLong("id").equals(sysRole.getId()))){returnresult.fail(Msg.Save.repeated("角色名字"));}}else{sysRole=newSysRole();}//数据复制if(!CommonUtil.copyProperties(sysRole,dataParam)){returnresult.fail(Msg.Save.typeError());}//数据校验StringcheckMsg=Validator.check(sysRole);if(StringUtils.isNotBlank(checkMsg)){returnresult.fail(Msg.Save.fail(checkMsg));}intcount;//新增if(sysRole.getId()==null||sysRole.getId().equals(0L)){sysRole.setCreateDate(newDate());sysRole.setCreateBy(ShiroAuthenticationManager.getUserId());sysRole.setDelFlag(false);count=this.dao.insert(sysRole);//保存角色关联资源if(resources!=null){for(Objectresource:resources){SysRoleResourcesysRoleResource=newSysRoleResource();sysRoleResource.setRoleId(sysRole.getId());sysRoleResource.setResourceId(Long.parseLong(resource.toString()));sysRoleResourceDao.insert(sysRoleResource);}}//保存角色-权限分配关联if(permissions!=null){for(Objectpermission:permissions){SysRolePermissionsysRolePermission=newSysRolePermission();sysRolePermission.setRoleId(sysRole.getId());sysRolePermission.setPermissionId(permission.toString());sysRolePermissionDao.insertSelective(sysRolePermission);}}(3)系统资源管理功能实现系统资源管理是本系统核心的部分,它包含当前系统里所有的菜单以及请求路径,如图4.16所示。本文按照数据字典-资源关系建立E-R图,以实现对页面资源、操作资源和数据资源的管理。(1)页面资源:用户登录系统之后能看到相应的页面,以菜单的形式实施控制,用户的权限有所不同,看到菜单内容也有所不同,访问的页面也存在差异。(2)操作资源:本系统实现了“可见即可操作”的特征,即用户页面中出现的所有操作按钮都是可以操作的。这一功能能给用户带来良好的使用体验,可以根据具体情况确定是否需要这样做。(3)数据资源:在同一个页面之中,不同的用户获取的数据资源有所不同。为用户授权时需要为每位用户指明与之相对应的部门与组织,以便获取相应权限的数据资源。图4.SEQ图4.\*ARABIC16系统权限树(4)日志管理功能实现本系统通过建立时间信息—对象操作与结果信息相关联的E-R图,来实现日志管理,从而以时间为依据将系统中某一对象的操作与结果归总到一起。一般而言,用户可以直接阅读系统日志,包含着一系列操作访问信息,比如日志类型、访问的请求、访问者IP地址、账号、操作方式以及操作数据和创建时间,如图4.17所示。日志为服务器的各种活动提供各种高价值信息,这对于系统分析、监控而言是十分重要的[49]。图4.SEQ图4.\*ARABIC17日志列表截图人才数据分析模块人才数据分析模块基于SSM(Spring+SpringMVC+MyBatis)构建。本节分别从结构化数据和非结构化数据分析及可视化方面进行实现。结构化数据分析及可视化针对结构化数据,首先使用SQL数据查询语言对数据进行查询归集和数据访问操作。然后,对所得的海量数据,进行联结、合并、分组、去重、排序、过滤、计算等操作,对异常数据进行清理,统一格式,行列转换,从繁杂的数据中提取出有价值的人才数据。最后,将数据传输到前端。由ECharts组件根据数据分析类型,使用折线图、柱状图、饼图、K线图、关系图等具体图形,将人才数据转换为图形进行可视化展示。以下通过人才类别排行、基本情况分析、专业技术人才等三方面进行举例分析。(1)人才类别排行图4.18是本系统对人才类别的横向柱状可视化图表,使用户一目了然各个类型人才的数量比例。其中,纵轴所示为人才类别名,包括:社共专业、农村实用、专业技术、技能、企业经营、党政类人才,横轴表示不同类型的人才数量。在实现过程中,使用了ECharts提供的开源绘图工具,将要相应的结构化数据在Model层进行处理后,以json的格式传送给前端。首先返回一个包含人才类别的数组data:[社共专业,农村实用,专业技术,技能,企业经营,党政类人才],然后转入对应的数量值value:[v1,v2,v3,v4,v5,v6],最后配置其他可视化参数,如:颜色、布局、标题、控件长宽等,生成人才类别排行可视化图表。图4.SEQ图4.\*ARABIC18人才类别排行(2)基本情况分析图4.19是本系统对人才基本情况的环形可视化图表,使用户一目了然人才的基本情况。其中包含了人才的性别分析与学历分析,性别分析为人才的男女占比数量,学历分析为人才学历的占卜数量。在实现过程中,使用了ECharts提供的开源绘图工具,将要可视化的数据在Model层进行处理后,以json的格式传送给前端。系统返回包含人才性别以及学历的相关分类及数量数组data:[{value:v1,name:'男'},{value:v2,name:'女'}]、data:[{value:v1,name:'研究生'},{value:v2,name:'大学本科'},{value:v3,name:'大学专科'},{value:v4,name:'中专及以下'}],最后配置其他可视化参数,如:颜色、布局、标题、控件长宽等,生成人才基本情况分析可视化图表。图4.SEQ图4.\*ARABIC19基本情况分析(3)专业技术人才构成图4.20着重分析了专业人才的职称构成占比。在实现过程中,使用了ECharts提供的开源绘图工具,将要可视化的数据在Model层进行处理后,以json的格式传送给前端。系统返回包含人才职称及该职称人才数量的数组data:[{value:v1,name:'初级职称'},{value:v2,name:'中级职称'},{value:v3,name:'副高职称'},{value:v4,name:'正高职称'}],最后配置其他可视化参数,如:颜色、布局、标题、控件长宽等,生成专业技术人才构成可视化图表。图4.SEQ图4.\*ARABIC20专业技术人才构成非结构数据分析及可视化本节创新性地设计了基于自然语义的人才文本关键词提取算法,提高对非结构化数据分析效率。并同样采用Echart工具实现了人才文本数据分析及可视化过程。基于自然语义的人才文本关键词提取算法通过4.3.1人才信息库模块实现了人才文本数据处理后,由于人才文本数据多源异构性质,其表达的主题信息仍然较为复杂。经过研究发现,在人才文本数据中,主要表现为围绕一个核心主题,并向外发散了若干个非核心主题,即明显的“1+N”的模式[50]。因此本文基于这一现象,设计了基于自然语义的人才文本关键词提取算法,通过分析人才数据的核心主题和非核心主题在文本中的分布信息和重要程度,对人才关键词的主题特征进行提取分析处理。在关键词提取过程中,除了确定句子对主题的重要程度外,还需要防止重复或者相似程度较高的句子被抽取作为摘要句,即需要平衡摘要与主题的相关性和其他摘要的相关性。为了解决这个问题,基于自然语义的人才文本关键词提取算法中,结合了LDA潜在狄利克雷分布模型和最大边缘相关MMR技术[51],利用了LDA反映句子之间的主题相似度,并通过MMR去除摘要句子的冗余,以平衡相关性和多样性,防止查询的文档与检索的文档内容过于相似的问题,有效提高了数据分析的准确性。其中,相关性是指与原文档主题的相关程度,相关性越大就越能反映文档的主题信息。而多样性则是评价摘要与原文档的多个主题的覆盖程度,多样性越大就越能全面覆盖到文档的各个主题,防止摘要过度集中在核心主题,而忽视了非核心主题在文档中的作用。表4.4描述了该算法的伪代码。算法的输入为网络爬取的5000篇文本文档集D和关键词个数M,输出为关键词摘要集合Sums以及对应的句子。首先初始化关键词摘要集合Sums=,并将这5000篇文档分成句子存入语料集数组YL中。然后,遍历语料集中的每一个句子,根据句子向量夹角的余弦函数sim(Si,Sj)计算句子相似度,并根据相似度归纳句子C={C1,C2,…,Cm},其中每个Ci中包含了相似度差不多的句子。当Ci中平均相似度大于设定阈值时,计算出Ci中每个句子Si的MMR权重。 (4.1)其中Si表示文档D的第i个句子。D=Sums∪NoSums,Sums是当前摘要句子的集合,NoSums是当前非摘要句子的集合,NoSums−i表示当前非摘要句子中剔除当前句子Si的剩余部分。λ是调节参数,取值[0,1]之间,λ越大相关性越高,λ越低多样性越大。遍历完成句子MMR权重计算后,选择在语料集YL中权重最大对应的句子,加入摘要集合Sums,并从语料集中剔除相应的句子。如果摘要集合中的句子符合摘要数的要求,则依次输出摘要集合对应的句子,作为本次自动摘要的结果。否则继续遍历YL,通过计算句子相似度和MMR权重的方式,找出关键词摘要,直到摘要个数满足M。表4.SEQ表4.\*ARABIC4基于自然语义的人才文本关键词提取算法输入:文档集D,关键词个数M输出:关键词摘要集合Sums以及对应的句子1:Sums=,i,j=1;2:for(D)3:YL<-分句{S1,S2,…,Sn};4:endfor5:for(;i,j<=n;Si,SjYL)6:调用函数sim(Si,Sj)计算句子相似性;7:endfor8:根据相似性归纳句子C={C1,C2,…,Cm};9:for(C)10:if(Ck相似性>阈值)11:计算Ck中的每个句子的MMR(Si);12:选择出最大的MMR值已经对应句子;13:Sums<-对应句子;14:从YL中删掉对应句子;15:endfor16:if(num.(Sums)>=M)17:returnSums及对应的句子;18:else19:gotostep5;20:endif人才文本数据分析及可视化人才文本数据分析及可视化的流程如图4.21所示:图4.SEQ图4.\*ARABIC21人才文本数据分析及可视化流程图(1)人才文本数据导入人才文本数据已存储在人才信息库中,通过预先设置的多维度筛选条件,将需分析的人才群体/单个人才的文本数据导入。筛选条件包括:性别、年龄段、区县、人才类别、学历、技术领域、所属企业、身份证号等。(2)人才文本分析由于导入的人才文本数据都是连续的中文句子,必须对导入内容进行分词才能进行下一步处理。本文采用结合词典的HMM的分词方法进行分词,词典是为了提高对热点词和专业词的识别率。由于本文主要是做有关人才的文档处理,因此会涉及到大量的网络热词及技术领域的专业词,比如“生物医药”、“电子信息技术”、“仪器仪表”、“光机电一体化”、“有机高分子材料”这样的词就可以被有效识别。在分词的同时,对分词的词性进行标注。然后对停用词进行过滤操作。停用词是指那些没有实际意义或者与主题无关的词,一般包括助词、连词、语气词等虚词和标点符号,如:“的”、“了”、“但是”、“而且”、“。”、“、”等。由于这些词不能反映文档的主题内容,并且会影响关键词抽取的效果。因此,需要在中文分词之后,对照停用词表,剔除词的序列里的停用词。本文可对停用词进行维护,增加、修改、删除停用词。再然后,执行词性筛选操作。对已进行分词、词性标注、停用词过滤的文本进行词性筛选,词性包括:名词、动词、形容词、副词等。用户可根据需求筛选需要提取的候选关键词。图4.SEQ图4.\*ARABIC22关键词提取其次,调用4.5.2.1中的关键词提取算法。关于关键词提取,需要设置两个参数,一是“窗口大小”,而是“关键词个数”,“窗口”指候选关键词的前后N个词(“N”指“窗口大小”)的集合,“关键词个数”是指最终提取显示的关键词个数,如图4.22所示。最后,实现可视化显示,如图4.23所示。本文采用ECharts组件的词云作为关键词提取结果的可视化表现方式。词云就是通过形成“关键词云层”或“关键词渲染”,对人才文本中提取的“关键词”的视觉上的突出,关键词字体越大越突出说明该关键字比重越大。可视化词汇的数目,根据“关键词提取”步骤中的“关键词个数”而定。图4.SEQ图4.\*ARABIC23文本数据可视化结果人才综合业务管理模块人综合业务管理模块同样基于SSM(Spring+SpringMVC+MyBatis)构建。本节分别从系统登录和人才服务两方面进行实现。系统登录系统登录流程如图4.24所示。通过SSM框架实现登录认证,通过Shiro与SSM框架中的Spring结合验证账号合法性。为了获取User信息,先要对传入的用户名进行分析,如果不存在此项信息,就会显示“未找到帐号异常”。如果找到了与之相对应的信息,但该信息被锁定,先是显示“锁定异常”,然后生成AuthenticationInfo信息,交给间接父类AuthenticatingRealm。为了探明密码是否匹配,运用CredentialsMatcher进行验证。如果密码不匹配,则显示“密码错误”,即IncorrectCredentialsException。如果密码重试过于频繁,则会显示“密码重试过于频繁异常”,即ExcessiveAttemptsException。在对SimpleAuthenticationInfo信息进行组装时,需要将加密盐、凭据、用户名等内容传入其中。CredentialsMatcher借助于盐加密传入的明文密码与密文密码配对。当登录失败失败时,则交给异常模块处理。图4.SEQ图4.\*ARABIC24系统登录流程图人才服务图4.SEQ图4.\*ARABIC25人才服务时序图人才服务时序图为图4.25,人才用户填写相关申报材料后提交组织部,组织部经审核后提交人社局,人社局审核相关申报材料后提交住建局,住建局审核材料后提交组织部进行终审,终审完成后结束该人才服务申报。人才服务的实现基于SSM框架,相关人才可以对符合自身的政策进行填报申请,并交由操作人员进行表单录入,录入后该表单会在系统中逐级审批,最后将审批结果通过短信或邮箱的形式告知提交人。该功能极大简化了频繁的业务办理流程。由于各个业务功能代码基本类似且都基于SSM框架实现,所以本文以“购(租)房补助”的业务流程为例进行阐述。“购(租)房补助”的业务流程设定为三级审核的形式,分别为:组织部、人社局、住建局。当提交表单后,首先短信会推

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论