外包人员管理系统进行系统分析_第1页
外包人员管理系统进行系统分析_第2页
外包人员管理系统进行系统分析_第3页
外包人员管理系统进行系统分析_第4页
外包人员管理系统进行系统分析_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

引言本文的课题是以外包人员的服务流程为切入点,提到外包人员就不得不提到外包公司,那什么是外包公司,外包公司其实就是公司的业务范围是为其他公司提供业务、技术或者人员上支持的公司,并且利用自己公司的业务辐射为需求公司提供经营或者生产上的帮助。外包是一种精简自身冗杂业务的方法,在上个世纪的末尾不同专业性质的外包公司就开始出现,公司为了能把主要的精力都放到核心的业务以及生产上,因此对于非核心的业务出现了人手短缺的问题,所以将公司中无论是生产还是销售上非主要的业务来交给从事于外包工作的公司,就可以极大地减少人力成本以及运营难度,集中尽力提高核心业务的质量。因此外包公司这种专门从事服务其他公司的模式,给各个行业都进行了优化。讲本公司非核心业务外包给其他的公司现在已成为一种新的业务战略。也就是说,将该公司非核心的一部分内部业务承包给专门从事外包业务的公司。外包服务的本质其实就是对于需求公司内部人力和其他各种资源的集中调整,以此来集中所有的精力投入到企业主要经营的领域上,使得整合资源应对行业上的对手,塑造自己的优势使得竞争公司无法模仿,使得公司拥有了持续发展的能力。通过外包业务能够解放企业的被边缘业务所牵制的精力。外包公司所能带来的不只有边缘业务上帮助,还能带来的可能还有企业未曾掌握的知识存储,还有大量的时间成本。外包解放了公司的金融资本,用于产生最有利可图的核心业务的运营。外包可以使得公司有精力去跻身于新的业务范围,一些没有经历才处理非核心业务的公司都因为大量的使用了外包业务而获得活力并给公司的发展获得全球性的提升。在这种需求十分明良的情况下,作为一个专门从事外包行业的公司,却缺乏一个专门针对于外包人员的全流程管理系统,在这种背景下未解决这下问题,我开发了这个外包人员管理系统。这个题目最终要实现的效果是需求方提出人员需求—>供应商提供符合需求的人员—>需求方面试、定级—>采购方确认最终的人员级别—>需求方协助人员入场—>需求方对在场人员进行全方面管理,提交考勤结果—>采购方确认在场人员考勤—>在场人员离场—>需求方针对离场人员做工作评价反馈—>统计分析的全过程管理。根据我的调查市面上并没有业务相同并且成熟的外包人员管理系统,首先的原因可能是单纯从事外包工作的公司数量还较少,其次企业可能还缺乏一个全数字化管理的意识,因此开发这个基于Node.js的外包人员管理系统完全可以弥补市场上的空白。本文设计的外包人员管理系统的总体结构如下:第1章,说明项目中运用到的相关技术,其中前端使用vue框架,后端使用基于node.js的express,数据库使用MongoDB,还使用了iview等技术,并使用了git进行项目管理。第2章,对外包人员管理系统进行系统分析,分为功能需求和用例分析。分为三大模块,即需求方、供应商、外包人员三种不同身份,说明不同身份的不同功能和需求,并充分介绍项目的功能。第3章,本章主要介绍了外包人员管理系统的系统设计,包括系统总体设计和系统的详细设计。系统总体设计中主要介绍了本系统的主体业务的功能结构以及,以及系统总体框架的设计。第4章,说明外包人员管理系统的开发环境,所使用到的开发工具,介绍外包人员管理系统的几大模块,系统的主要业务以及相应的功能,对实现的功能进行截图,并配有相关的文字说明。第5章,按照模块分类列出主要功能测试功能并通过各个检查点测试系统功能的完善性。非功能部分从兼容性和性能两方面测试系統。兼容性方面,测试了Chrome在内的多数主流的浏览器,基本通过全部浏览器测试。

1相关技术1.1Vue.js框架Vue前端当今企业中最常用三大框架之一,vue框架是一种渐进式用来编写系统网页的框架。Vue与另外的框架有着本质上的区别,vue作为一个数据驱动的框架被设计为了自底层到上的模式。视图层是这个框架最为看重的,vue具备与三方库高兼容性的特点,并且可以完美的契合既有项目,还有vue的难度并不高便于新手的学习,在与各种第三方库同时使用的时候,通过单页面路由跳转的应用也能实现。Vue.js的主要原理就是通过Object.Defineproperty来进行数据的拦截,当数据发生变化的时候,通过这个函数的get、set方法来拦截改变的数据[1],通过监听数据的改变来进行后续的操作,视图层进行最简化的主动更新,对比与js的原生方法,唯一的方法之后手动的进行dom的操作,但是就游览器而言,dom树的建立是非常的复杂的,十分不利于项目的性能,但是vue框架想要实现的话就可以只改变绑定在data中的数据,视图层就可以实现自主的更新。并且Vue拥有组件化开发的功能,真正意义上的万物皆组件,把每一个页面或者是每一个能够复用的功能写成能够复用的组件,一次来提高工作的效率,减少代码的重复率提高代码的精简程度。而一个网页就相当于盛放组件的模具,内部就是一个个不同的组件,组件的相互组合构成了一个合格的项目。Vue框架的核心观念就是来源于数据驱动的数据双向绑定,数据的双向绑定能够实现视图层与Data中存储的数据进行同步更新。相比于其他的js库比如jQuery,jQuery想要进行视图层的更新时,需要编辑大量的复杂冗余并且有大量重复代码,而这些代码由于很高的重复率会造成出错的情况,以及代码的不精简。简单来说什么是数据双向绑定,就是当绑定在data中的数据发生变化的时候[2],vue就会对数据的更新进行拦截,并且视图层会根据数据的改变做出实时的更新。Vue.js观察者模式实现双向数椐绑定主要用到Object.defineproperty函数的getter和setter方法[3]。当访问定义在data对象中的单个属性时系统调用getter方法,当修改定义在data对象中的单个属性时系统调用setter方法。订阅者(Watcher)的主要功能是接收来自监听器对属性变化的通知并执行对应的指令绑定的回调函数。订阅者是监听器和指令解析器之间的桥梁,消息订阅器(Dep)以数组的形式保存订阅者。当代码执行到newVue时Vue.js遍历定义在data对象中的属性并通过Object.defineProperty函数实现监听功能,初始化阶段完成[4]。下图为vue.js的数据驱动模型。图1.1vue.js数据驱动模型1.2Node.jsNode.js是一个对ChromeV8进行封装的Javascript运行环通过C实现底层模垬不仅打破了Javascript语言只能在浏览器端运行的局限性且具有事件驱动和非阻塞的特点[5],Node.js的整体架构分为三层主要包含NodeStandardLibrary、Nodebindings、V8以及Libuv四大部分。总结一下就是,Node.js是通过js来编写的服务器的脚本语言。由于JavaScript本身就是一个单线程的语言,因此Node.js也继承了js语言的特性,通过单线程语言开发的项目都有一个特点,那就是在高并发的情况下,项目拥有很好的抗压能力,再配合MongoDb进行开发时更能应对高并发的项目。Node.js平台的运行结合了单线程和多线程的优缺点,采用了单线程的方式,通过异步ⅣO和事件循环机制来解决高并发性能问题。但Node.js的单线程是指其单线程在进行业务处理的同时也存在其他线程专门处理ⅣO并不是传统意义上真正的单线程。当用户进行IO操作时应用程序的线程把IO操作移交给如libuv的底层类库来避免阻塞1。当底层类库处理完IO操作后事件循环异步调度单线程处理后续的工作。作为一种编写服务器的脚本语言,Node.js的主要职责就是用来编写各种服务器端的请求与api接口以供前端发起请求。在Node.js尚未出现的时候,js是还是一种只能编写前端业务的语言,被用来编写各种项目中客户端与用户的交互,实现页面的改变等。而后端接口的开发还是靠Java、c++、PhP等脚本语言,Node.js的出现打破了这个限制,使得公司中的前端可以使用js语法也能进行后端接口的编写,大幅度的减少了人力成本,由于语法相同,对于掌握javascript的开发工程师来说学习成本是很低的。Node的出现解决了减少的很多不足与缺陷,比如更好的组织代码,提升复用性。当然在ES6中这一点也得到了很大的提升,比如处理文件与数据库。Node.js的特点有很多,比如采用了事件驱动的方法,并且还是一种异步编程的方式。由于使用Node.js的开发工程师大部分已经掌握了JavaScript的使用方法因此学习node.js的成本也会降低。Node高效并且轻量,高效的原因是因为,Node.js是一种单线程的语言,同时只能执行一个语法,不会造成事件的混乱,因此非常适合高并发的项目,但是由于是单线程的技术,Node.js并不适合那种超大型项目的开发。1.3ExpressExpress是node.js当中的一个非常方便的框架,它的特点是体量非常的小,操作起来十分的轻便,虽然它的体量不大但是却拥有很多强大的功能,Express能够帮助开发者编写各种的服务器的web接口,它拥有大量的各种工具,其中就包括HTTP工具。作为Node.js的框架,它的核心原理是:通过各种不同的中间件来对各种请求进行不同的响应。Express通过中间件首先将每一个数据表在model文件夹中注册,并通过router中间件将已经定义好的api接口暴露出来,方便前端通过请求进行调用。Express在配合前端框架的情况下,可以合作开发出一个各方面完整的项目,可以用于开大一些复杂的单页面应用,或者多页面应用。Express中的app.use()方法就是去装载这些函数,并放入一个数组中,当前端一个请求传到服务器的时候,首先会经过request,然后是一系列的服务端处理,也就是中间件处理,存放于数组中的中间件采用后进先出的栈模式处理请求最后将处理结果通过路由注册供前端调用。1.4MongoDBMongoDb作为一种非关系型数据库,它和传统的关系型数据库相比,并没有数据表的概念[6],它采取的是使用json格式进行数据的存储[7],和其他数据库相比,由于操作json数据的效率远高于操作数据表的效率,因此MongoDb在数据的存储以及读取的时候效率远高于关系型数据库,高并发项目中也具有很高的效率,因此非常适合用于高并发的项目,由于同样的特性因此非常适合配合Node.js进行开发项目。MongoDb具有以下几种优点:由于MongoDb是一种面向对象进行存储的非关系型数据库,这意味着MongoDb能够实现动态的查询,由于是Json格式存储的数据,因此MongoDb还能够全索引支持并且能够查询记录,并且可以做到最快速的进行更新,相对于非关系型数据库MongoDb还有一个优势那就是能够存储文件,文件是通过二进制数的方式存储在数据库中。MongoDb相对于非关系型数据库的有点还有很多,但是最后在项目中运用它的原因还是与Node.js的完美兼容。1.5本章小结本章介绍了外包人员管理系统所用到的技术栈,其中前端技术使用了VUE框架,后端以及服务器相关的技术使用了Node.js语言,以及基于Node.js的Express框架,数据库使用了非关系型数据库MongoDb,并在一些小组件中还使用了iview库。

2系统分析2.1功能分析2.1.1需求方外包人员的需求方,也就是需要采购外包人员的公司。需求方使用外包人员管理系统时具有以下功能,需求方在需求管理模块中可以添加新的需求,需求包括了对外包人员要求的职位、人员的级别、需求的外包人员人数、要求外包人员的最低学历、工作年限以及采购预算和项目类型,还包括采购对接人姓名电话以及采购时间等信息,并可以通过条件对存在的需求进行查找,并对已经存在的需求得要求进行编辑。在供应商也就是外包公司对需求进行响应后,需求方在候选人管理页面对供应商添加的外包人员候选人进行选择,并可以通过系统通知已经选择的外包人员进行面试。外包人员面试之后,需求方可以在面试反馈页面对已经面试过的外包人员进行添加面试反馈,包括面试是否通过、面试评价人员级别、人员单价等信息。在供应商将面试通过的外包人员信息添加到在场人员中后,需求方可以在在场人员管理页面中查看在场外包人员的信息,并且在完成工作或对外包人员的工作不满意时,可以在在场人员管理中选择相应的外包人员在填写离场时间以及离场原因后,通知外包人员离场。外包人员离场后需求方可以通过离场人员管理页面对已经通知离场的外包人员进行人员评价,包括总体评价以及评价反馈。2.1.2供应商外包人员的供应商,也就是为需求方提供外包人员的外包公司。供应方使用外包人员管理系统时具有以下功能,在需求方新增需求时,供应商需要在需求响应页面添加新的候选人,供应商针对需求方提出的要求添加合适的外包人员的信息,包括外包人员的姓名、证件类型(有两种选项护照或者身份证)、身份证或者护照的号码、电话号码、电子邮件、职位、级别、人员类型等信息并可以上传候选人的简历,在添加候选人之后如果添加的候选人信息有错误可以在编辑页面对已添加的候选人信息进行编辑,或者有不适合的候选人时供应商可以删除候选人。在已添加的候选人被供应商面试并通过之后,供应商需要在待入场人员管理中将已经通过面试的外包人员的信息添加进去,信息包括外包人员的姓名、证件类型(有两种选项护照或者身份证)、身份证或者护照的号码、电话号码、电子邮箱、工作年限、学历学位、职位、级别、供应商以及人员类型和预计到岗时间,并此页面可以外包人员上传简历。最后在需求方通知外包人员离场后,供应商可以在离场人员管理中查看需求方对离场人员的评价以方便后续管理。2.1.3外包人员外包人员在外包人员管理系统中只有部分功能的搜索以及查看权限,包括需求响应中的搜索以及查看的权限,待入场人员以及在场人员管理中搜索以及查看的权限,并根据入场人员管理中的到场时间及时到需求方的公司报道。并且在离场人员管理中查看客服评价的权限针对客户做出的评价及时对自身做出调整。2.2用例分析外包人员管理系统用户共分为需求方、供应商、外包人员三种身份,需求方与供应商无需注册账号,有固定的管理员账号,外包人员登录前需注册再登录。外包人员管理系统主要的业务流程为:需求方在需求管理模块进行需求的添加。供应商在需求响应模块针对需求方添加的需求,为每个需求添加相应人数的候选人。需求方在候选人管理模块中的简历列表页面查看候选人的信息,并根据候选人的信息通知适合的候选人进行面试。面试结束后需求方需要在候选人管理中的面试反馈页面中对面试结果进行评价,并填写是否通过面试。需求方填写面试反馈之后,供应商需要在待入场人员管理模块中将已通过面试的外包人员信息添加进去并填写到场时间。外包人员根据到场时间及时去供应商公司报道,之后需求方可以在在场人员信息中查看在场人员的信息,并根据人员表现或者项目进度等原因在在场人员管理模块通知相应的外包人员离场并填写人员评价。之后供应商可以在离场人员管理中查看需求方对离场人员的评价以进行改进。需求方:需求方登录外包人员管理系统之后首页是我的待办,显示待办的工作,在需求管理模块中添加新的人员需求,需求方还需对供应商添加的候选人进行查看,通知合适的候选人面试,并在面试后在面试反馈中填写面试反馈。需求方之后在在场人员管理中通知已在场的外包人员离场,外包人员离场之后需求方需要在离场人员管理当中填写人员评价。需求方用例分析图如图2.2.1所示。图2.1需求方用例分析图供应商:供应商登录系统后,在我的代办可以看到未办理的业务,并在我的代办下方图表显示预算剩余。供应商在需求响应模块中为未响应的需求添加候选人,或对已添加的候选人进行编辑或者删除操作。并在待入场人员管理模块中,供应商将通过面试的外包人员信息添加进去。在离场人员管理中供应商可以查看人员评价。供应商用例分析图如图2.1.2所示。图2.2供应商用例分析图2.3非功能性需求分析一个成熟完整的在线上运行的项目,最基本的需要具备以下这些要求,程序的品质质量一定要过关、兼容性一定要好、项目的运行环境一定要稳定、对高并发具有一定的抗性、对于外部接口的请求时间一定要合理。在开发完成后,经过对每个模块不同功能的不断应用,外包人员管理系统并没有发生任何质量上的问题,因此品质质量方面十分稳定。在兼容性方面,所使用的技术栈并没有那些低兼容性的技术,因此项目具备很好的兼容性,最低可以兼容到IE8。由于项目后端使用的技术是node.js,作为一个单线程的脚本语言,再配合适合高并发存储的MongoDb数据库,因此这个项目是适合高并发环境的[8]。对于接口,从业务方面就开始规范减少请求的发送的数量,这样就可以有效提升项目的效率。软件产品非功能性定义不仅决定产品的质量,还在很大程度上影响产品的功能需求定义。如果事先缺乏很好的非功能性需求定义,结果往往是导致软件产品在运行的稳定性、易用性、安全性等方面受到很大的影响,从而使软件本身的价值大打折扣[9]。从用户信息安全以及保密性和数据可靠性几个方面考虑,用户信息安全用户的个人信息应是私密的。妥善监管用户重要信息尤其涉及到金钱的信息确保用户信息不会在访问过程中被非法获取和溢用。在线支付安全确保用户使用网上支付时与银行信息相关的安全。交易信息安全保证交易的真实性和数据完整性以防止信息被恶意篡改。本系统的易用性主要包含良好的视觉设计、高性能、以及大量的操作提醒人机交互三个方面。视觉设计系统的整体主题色彩要一致,色彩搭配突出重点信息。页面布局符合用户习惯,保持页面条理清晰。用户每次进行操作是都会进行相应提醒这样就会提高用户体验。高性能:高性能在满足基本的用户需求情况下,高性能是系銃流行的必要条件。对用户体验影响极大的一个因素是页面的访问速度。开发过程中,应考虑精简代码、减少发起htp请求个数、减少htp请求大小、存静态资源来提升系统性能。抗高并发:由于系统的技术栈为vue+Node.js+mongondb,其中js为单线程的语言,而vue以及node.js都是以js为底层开发的框架以及语言,而系统所选择的数据库MongoDb作为一个非关系型数据库,进行数据的读取是效率是极高的[10],这是因为非关系型数据库是按照json格式进行存储,这种方式存储的优点是方便数据的存储,在数据存储到时候拥有很高的效率,以此很适合高并发的项目也最适合和node开发的项目进行配合。因为node和MongoDb都是适合高并发项目的,因此本系统的抗高并发能力是很强的[11]。作为一个内部管理系统,通过功能分析可以知道,因为外包人员是可以注册登录并查看系统信息的,外包人员的数量未知,随着公司规模的扩大未来系统有很大的抗并发量的需求量。因此外包人员管理系统选用node.js开发并使用MongoDb来存储数据是正确的。2.4本章小结本章主要介绍的是外包人员管理系统的系统分析,其中包括功能分析以及用例分析和非功能需求分析。首选通过用例图介绍了本系统的功能以及用户身份的关系,主要包括功能需求和用例分析。并且对外包人员管理系统的需求方、供应商、外包人员三种身份进行需求分析,结合用例图更全面更仔细的介绍了本系统各个身份的功能,介绍了详细的功能需求。在本章的最后介绍了外包人员管理系统的非功能性系统分析,包括安全性,易用性和抗高并发能力。

3外包人员管理系统设计3.1系统总体设计3.1.1系统功能结构外包人员管理系统系统结构共分为需求方、供应商、外包人员三种身份,以及我的代办、需求管理、需求响应、候选人管理、待入场人员管理、在场人员管理、离场人员管理七个模块。需求方和供应商配合完成系统的主要业务,外包人员的权限为一些查看权限。功能组织结构图如图3.1所示。图3.1功能组织结构图3.1.2系统架构设计外包人员管理系统前端使用到的技术架构为vue、vucx、vue-router、wcbpack、cs6、less。前端表现层vicw指各个业务页面,componcnt为通用组件。store即状态资源管理vucx,router指前端路由vue--routerservice业务层负责处理从服务器响应的数据[12]。API层封装了系统的全部请求。uil层用于存放系統全局工具函数。基础设施层,init为自动初始化配置文件,dev为启动项目等辅助开发的依赖配置,deploy为编译解析源码和发布[13]。服务端业务层表示对返回的数据进行业务逻辑处理,token层为接收请求后的权限验证,使用JWT验证机制验证。中间件层为引入的koa中间件,通过中间件处理数据和请求,解决原生不能实现的功能。模型层是MONGODB数据库通过mongoose插件将collection集合映射到Node.js的实体对象[14]。下图3.2为系统结构。图3.2系统结构3.2系统详细设计3.2.1系统功能详细设计外包人员管理系统中的供应商可以添加待入场人员、查看待入场人员的个人资料;提前为待入场人员做入场准备。供应商可以查看本公司的待入场人员个人资料;提供待入场人员的预计入场时间;外包人员按照预计入场时间进行入场。需求方可以直接将实际未入场的待入场人员离场,需求方可以查看在场人员的个人资料,查看在场人员的离场情况。当在场人员完成工作可以离场时,需求方可以在系统中按照规定的时间发起离场通知;在场人员按照业务方提供的离场时间进行离场。需求方可以对离场的工作人员发起工作评价;需求方、供应商都可以都可以查看离场评价。外包人员管理系统E-R图如下图。图3.3E-R图我的待办招募中的需求,需求方指派给供应商的,还未关闭的需求数量。每当子需求数量有增减时,该数据均更新,需求方看到的是自己拆分的全部需求的范围;供应商看到的是指派给自己的子需求范围。未查看的简历,指在面试列表中状态为“待通知面试”的人员数量,供应商可以查看自己提交的简历。待面试人员,在面试反馈列表中状态为“待面试”的人员数量;供应商可以查看自己提交的简历范围。待审核人员,在面试反馈列表中状态为“面试通过待审核”的人员数量。需求管理:需求编号:每添加一个子需求系统自动分配一个编号。职位:必填项,选择框,默认备注“请选择人员职位”。级别:必填项,选择框,默认备注“请选择人员级别”。人数:必填项,输入框,默认备注“请填写需求人数”,允许输入数字。资质要求:必填项,输入框,默认备注“请填写对该职位人员的资质要求(1-100字)”,允许输入中文/英文/数字/字符,0<=字符长度<=100。保存按钮:点击,可保存该条人员需求信息,保存后该条数据以字段形式展示,本条数据右上角增加编辑、删除按钮,可以编辑修改或者删除已经保存的人员需求描述;(人员需求描述中的)删除按钮:点击,将删除本条人员需求描述。添加人员描述:当保存一条人员需求之后,出现该按钮;当没有在编辑状态的人员需求描述时,该按钮为可以点击的状态,可以再次添加人员具体需求描述。选择供应商:必填项,模糊搜索框,允许输入中文/数字/英文,0<=字符长度<=15,选择范围为供应商协作平台的主数据。采购对接人:必填项,输入框,默认备注“请填写人员姓名”,允许输入中文/英文。联系电话:必填项。输入框,默认备注“请输入电话号码”,允许输入数字/字符,7<=字符长度<=15。需求管理时序图如下图所示。图3.3需求管理时序图需求响应:该列表数据支持查看,按照以下搜索条件进行搜索,需求编号:输入框,默认备注“请输入编号”,允许输入中文/英文/数字,状态:选择框,默认选择“全部”,选项内置为:招募中、已关闭。按钮:搜索按钮:点击,按照填写的搜索条件进行搜索,并将搜索结果显示在下方列表中;如果没有符合条件的数据,则在下方列表区域显示提示语“未找到符合条件的数据!”。重置按钮:点击,清空全部搜索条件恢复为默认值,并且在列表中刷新、显示全部默认数据。候选人添加时序图如下图所示。图3.3候选人添加时序图候选人管理-候选人管理:点击菜单候选人管理默认进入简历列表页面,该页面数据来源于在需求响应模块供应商提交的候选人信息;列表排序:根据提交候选人简历的时间倒序排列,最新提交的在最上方显示。该列表支持查看,按条件搜索,搜索条件如下:申请编号:输入框,默认备注“请输入编号”,允许输入中文/英文/数字,0<=字符长度<=15。职位:选择框,默认选择“全部”;选项来源于数据字典中字段“职位”自定义的内容。状态:选择框,默认选择“全部”;选项内置为:待通知面试、已淘汰。搜索按钮:点击,按照填写的搜索条件进行搜索,并将搜索结果显示在下方列表中;如果没有符合条件的数据,则在下方列表区域显示提示语“未找到符合条件的数据!”。重置按钮:点击,清空全部搜索条件恢复为默认值,并且在列表中刷新、显示全部默认数据。1.确定要面试哪些人后,可通过点击列表页面的通知面试按钮,弹出通知面试弹窗,也可在查看某人信息详情页面,点击通知面试按钮,弹出通知面试弹窗。面试对接人:必填项,输入框,默认显示当前登录人,联系方式:必填项,输入框,允许输入数字、字符,取消按钮:点击弹窗关闭不进行面试通知,提交按钮:点击,系统先进行校验,人员数据是否勾选了内容,面试对接人、联系方式是否全部填写。若以上条件均满足,则保存数据,提交成功,向相应的供应商对接邮箱发送面试通知;通知面试弹窗关闭。候选人管理-面试反馈,切换按钮面试反馈进入以上页面,该页面数据来源于在简历列表中通知面试的候选人信息;列表排序:根据提交候选人简历的时间倒序排列,最新提交的在最上方显示。列表中默认显示的数据是状态为“待面试”、“面试通过待审核”的人员数据,其他状态的人员可以通过搜索条件来筛选。待入场人员管理:列表排序:根据数据在该列表中的创建时间倒序排列,最新的数据显示在最上方。添加待入场人员:按钮,点击,页面跳转到个人信息页面。最上方显示位置路径,除当前页面外均可以点击,点击跳转到相应页面。字段说明,姓名:必填项,输入框,允许输入中文/英文。性别:必填项,单选项,选项为:男、女。证件类型:必填项,选择框,默认备注为“请选择”,选项来源为数据字典中的字段“证件类型”的自定义内容。证件号码:必填项,输入框,允许输入数字/字符/英文,1<=字符长度<=30。联系方式:必填项,输入框,只允许输入数字,7<=字符长度<=15。电子邮箱:非必填项,输入框,允许输入英文/数字/字符,0<=字符长度<=20。提交点击,系统进行校验,必填项是否全部填写完成,是,页面中填写的数据保存并提交,返回上一页,在列表最上方增加一条新数据;否,在第一个未填写的必填项中提示“请完善信息”。在场人员管理:弹窗中先以列表的形式显示已经勾选的人员信息,做二次确认,字段为:选择、供应商、姓名、联系方式、职位。离场日期:必填字段、时间选择器,点击弹出时间选择器,数据转到【离场人员管理】列表中。离场原因:非必填项,输入框,默认备注“请填写离场原因”。离场人员管理:总体评价:必填项。评价反馈:必填项,输入框,默认备注“请填写您对该员工工作期间表现的综合评价(1-200字)”。取消按钮,点击,关闭弹窗,不保存操作。提交按钮,系统进行校验,是否填写了全部的必填项,是,则关闭弹窗并保存操作;否则提示“请填写全部必填项”,评价成功后,列表中的评价按钮更换成查看。3.2.2系统数据模型详细设计本系统所使用的数据库为MongoDb,MongoDb作为一种非关系型数据库[15]是并没有表这一概念的,与关系型数据库中表概念对应的是集合。MongoDb通过集合来存储数据[16],数据按照JSON的格式存储在集合当中,这种json格式存储的在进行数据的输入或者读取时速度是非常快的。这种方式存储的优点是方便数据的存储,在数据存储到时候拥有很高的效率,以此很适合高并发的项目也最适合和node开发的项目进行配合。相对于其他数据库而言MongoDb的主要优势在于以下几个方面分别为:在关系型数据库中,存储的每一条数据都必须按照事先设置好的字段来进行存储,并且还需要对每个字段进行数据类型的限制,这样就限制了数据存储的自由。而MongoDb是在集合当中存储数据,集合当中存储的都是json格式的数据。在关系型数据库中需要建立专门的从属关系表,而Mongodb对于入的数组和子文档可以直接建立索引。(2)性能,关系型数据库査询需要联合多个表,每一个表都对应着磁盘的一次读取。而MongoDb为json形式存储数据,json格式的数据无论是在数据存储的速度或者效率都远远高于传统数据表存储的数据,因此MongoDb适合配合Node进行高并发项目的开发。(3)灵活关系型数据库最常见的运维问题是给已有数据加一个新的可选的属性,从数据表到应用数据层都要更改[17]。MONGODB没有Schema(数据模型),不需要改动数据库,只需要在应用层做必要的改动。需求管理模型的详细设计,需求方按照企业需求的不同人员类型人员数量等信息发布新需求,需求包括外包人员职位、级别、人数、学历、工作年限、采购预算、服务类型、资质要求、采购对接人、电话、采购时间等信息。将数据上传到Demand集合中,Demand集合如下表3.1所示。表3.1Demand集合域名数据类型说明RequirementNumString需求编号NumberIdString职位PositionString级别NumberNumber人数EducationString学历WorkingLifeString工作年限BudgetNumber采购预算ServiceTypeString服务类型QualificationString资质要求PurchasingString采购对接人TelNumber电话TimeData采购时间需求响应模型的详细设计,供应商按照需求方新增的需求进行分析,通过分析结果在需求响应模块中添加新的候选人的信息,其中候选人信息包括:姓名、性别、证件类型、证件号码、联系方式、电子邮箱、职位、级别、人员类型等信息,并将数据存储到Candidate集合中。Candidate集合如下表3.2所示。表3.2Candidate集合域名数据类型说明NameString姓名GenderString性别DocumentTypeString证件类型DocumentNumNumber证件号码ContactNumNumber联系方式EmailString电子邮箱PositionString职位LevelString级别PersonnelTypeString人员类型BirthDataData出生日期JobDataData参加工作时间WorkinglifeString工作年限EducationString学历学位候选人管理-简历列表的详细设计,供应商按照需求方的需求添加候选人之后,需求方需要根据自己的需求通知合适的候选人面试。并且为通知面试的候选人添加面试对接相关信息,并将数据添加到toauditeds集合中。toauditeds集合如下表3.3所示。表3.3toauditeds集合域名数据类型说明NameString姓名GenderString性别DocumentTypeString证件类型DocumentNumNumber证件号码ContactNumNumber联系方式EmailString电子邮箱PositionString职位LevelString级别PersonnelTypeString人员类型BirthDataData出生日期JobDataData参加工作时间WorkinglifeString工作年限EducationString学历学位DockerNumNumber对接人电话PlaceString面试地点候选人管理-面试反馈的详细设计,需求方在通知外包人员面试后,根据面试结果为外包人员添加面试反馈。如果面试通过的话会将买时反馈结果数据添加到zaichangs集合中。下表3.4为zaichangs集合。表3.4zaichangs集合域名数据类型说明NameString姓名GenderString性别DocumentTypeString证件类型DocumentNumNumber证件号码ContactNumNumber联系方式EmailString电子邮箱PositionString职位LevelString级别PersonnelTypeString人员类型BirthDataData出生日期JobDataData参加工作时间WorkinglifeString工作年限EducationString学历学位DockerNumNumber对接人电话PlaceString面试地点ResultString面试结果EvaluateString面试评价PersonnelLevelString审核人员级别UnitPriceString人员单价ArrivalTimeData要求到岗时间离场人员管理中数据库的详细设计,需求方在业务结束或者对外包人员不满意时,在在场人员管理中可以通知外包人员进行离场,须填写离场时间以及离场原因。并将数据添加到lichangs集合中,下表3.5为lihcangs集合的内容。表3.5zaichangs集合域名数据类型说明NameString姓名GenderString性别EducationString学历学位DockerNumNumber对接人电话PlaceString面试地点ResultString面试结果EvaluateString面试评价PersonnelLevelString审核人员级别UnitPriceString人员单价ArrivalTimeData要求到岗时间leavingtimeString离场时间leavingReasonsString离场原因在供应商在需求响应页面对需求方提出的需求进行提交时,已完成的需求数据将会转移到demandsend集合中,集合中包含字段外包人员职位、级别、人数、学历、工作年限、采购预算、服务类型、资质要求、采购对接人、电话、采购时间等信息。Demandsend集合结构如下表3.6所示。表3.6Demandsend集合域名数据类型说明RequirementNumString需求编号NumberIdString职位PositionString级别NumberNumber人数EducationString学历WorkingLifeString工作年限sBudgetNumber采购预算ServiceTypeString服务类型QualificationString资质要求PurchasingString采购对接人TelNumber电话TimeData采购时间3.3本章小结在本章当中对外包人员管理系统的系统设计进行了详细的介绍。其中包括了系统的总体设计,在这一部分通过功能结构图的配合详细的介绍了系统的主要功能。还介绍了系统的详细设计在这当中首先介绍了系统每个模块的各个功能的开发要求[18],然后介绍了主要业务的部分数据库几个集合的设计并对其中结构进行展示,并配合三线图进行说明。

4外包人员管理系统的实现4.1开发环境开发基于Node.js的外包人员管理系统所用到的电脑环境为Windows10的系统,系统类型是64位操作系统,CPU为InterCorei5-8250uCPU@2.20GHz为四核CPU,硬盘为1T容量,内存为8.00GB。软件环境为:开发工具是VisualStudiocode,服务器使用Express部署的,数据库使用MongoDb[19],开发使用的游览器为GoogleChrome和火狐游览器,这些开发环境足以满足外包人员管理系统的开发和运行。4.2开发规范将一次缩进用两个空格代替,在开发的过程中使用双引号代替单引号。在几种括号的前后方添加一个空格。编码规范统一使用UTF-8编码规范。当需要使用循环的时候尽量使用map循环来代替for循环,因为map循环是高级函数,是基于for循环进行封装的因此性能更优越。在开发的时候尽量降低标签的复杂度,尽量使用语义化的标签,这样便于搜索引擎的优化。当命名赋值的时候,不要再首位添加空格。不要给0加单位,使用padding:0;来代替padding:0px。通过Scss等将css先编译为一个文件,较少请求次数,通过其他第三方库提供css文件合并功能。在使用margin以及padding的等元素的时候尽量避免使用简写,过度使用简写形式的属性声明会导致代码混乱,并且会对属性值带来不必要的覆盖从而引起意外的副作用。4.3各个功能模块的详细设计下方的代码是是功能模块中使用到的主要的api接口,每一个接口先要在前端页面中使用都需要使用中间件先引到app.js文件中,然后每个api接口都需要在app.js文件中进行注册。每个api接口需要在编写的时候通过module.exports=router;的方法将接口暴露出来,一共前端通过接口的route进行接口的调用。主要功能接口见下文,接口注册页文件引入代码见附录。app.use('/',indexRouter);app.use('/users',usersRouter);app.use('/register',registerRouter);//到此登录注册接口app.use('/xuqiutianjia',xuqiutianjiaRouter);app.use('/xuqiuguanli',xuqiuguanliRouter);app.use('/xuqiushanchu',xuqiushanchuRouter);//需求管理模块接口app.use('/xiangYingbianji',xiangYingbianjiRouter);//需求响应模块接口app.use('/houxuanrentianjia',houxuanrentianjiaRouter);app.use('/houxuanrenbianji',houxuanrenbianjiRouter);app.use('/houxuanrenshanchu',houxuanrenshanchuRouter);//需求响应模块接口app.use('/xuqiuwanchengtianjia',xuqiuwanchengtianjiaRouter);app.use('/houxuanrenchakantianjia',houxuanrenchakantianjiaRouter);app.use('/houxuanrenchakanshanchu',houxuanrenchakanshanchuRouter);app.use('/houxuanrenchakanchaxun',houxuanrenchakanchaxunRouter);//候选人模块接口app.use('/xuqiuwanchengchakan',xuqiuwanchengchakanRouter);//需求完成接口app.use('/mianshifankuitianjia',mianshifankuitianjiaRouter);app.use('/mianshifankuichakan',mianshifankuichakanRouter);app.use('/weimianshishanchu',weimianshishanchuRouter);app.use('/mianshifankuishanchu',mianshifankuishanchuRouter);//面试反馈完成接口app.use('/zaichangchakan',zaichangchakanRouter);app.use('/zaichangshanchu',zaichangshanchuRouter);//在场人员接口反馈完成接口app.use('/lichangtianjia',lichangtianjiaRouter);app.use('/lichangchaxun',lichangchaxunRouter);app.use('/lichangpingjiatianjia',lichangpingjiatianjiaRouter);app.use('/lichangshanchu',lichangshanchuRouter);app.use('/lichangpingjiachaxun',lichangpingjiachaxunRouter);//离场人员接口需求管理:需求方在需求管理模块进行需求的添加。并可以通过搜索条件对存在的需求进行需求查找并显示在页面中,并对已经存在的需求得要求进行编辑。下图4.1为需求管理的页面。图4.1需求管理需求方通过需求管理页面添加新的外包人员需求,包括外包人员需求的职位、人员的级别、需求的外包人员人数、要求外包人员的最低学历、工作年限以及采购预算和项目类型,还包括采购对接人姓名电话以及采购时间等信息,下图4.2为需求管理的页面。图4.2需求添加需求响应:在需求方新增需求时,供应商在添加候选人之后如果添加的候选人信息有错误可以在编辑页面对已添加的候选人信息进行编辑,或者有不适合的候选人时供应商可以删除候选人。在完成需求的时候点击需求响应的提交按钮可以将已完成的需求中的候选人提交到候选人管理中。页面如下图4.3所示。图4.3需求查看供应商需要在需求响应页面添加新的候选人,供应商针对需求方提出的要求添加合适的外包人员的信息,包括外包人员的姓名、性别、证件类型、证件号码、联系方式、电子邮件、职位、级别、人员类型等信息并可以上传候选人的简历,页面如下图4.4所示。图4.4候选人添加在供应商也对需求进行响应,点击提交添加适合的候选人后,候选人的信息提交到候选人管理中,并将数据在页面中进行展示,可以通过输入框输入数据进行查询并展示结果。页面如图4.5所示。图4.5候选人查看需求方可以查看候选人的信息,需求方在候选人管理页针对候选人的信息对供应商添加的外包人员候选人进行选择,并将合适的候选人点击通知面试添加面试对接人以及对接人电话信息后,通知候选人到场面试,页面如图4.6所示。图4.6通知面试信息展示外包人员面试之后,通知面试的候选人的信息被添加到面试反馈页面,并进行列表展示,需求方可以查看候选人信息,并可以通过条件进行筛选,点击搜索按条件进行展示,页面如图4.7所示。图4.7面试反馈查看需求方可以在面试反馈页面点击反馈可以查看候选人的信息,并且在面试反馈页面,可以添加面试结果、面试评价、人员级别、人员单价等信息。页面展示如图4.8所示。图4.8面试反馈添加待入场人员管理:在已添加的候选人被供应商面试并通过之后,供应商需要在待入场人员管理中查看已经通过面试的外包人员的信息并通知已通过面试的人员及时入场,页面如图4.9所示图4.9待入场人员管理信息包括外包人员的姓名、性别、证件类型、证件号码、联系方式、电子邮箱、工作年限、学历学位、职位、级别、供应商以及人员类型和预计到岗时间,并此页面可以外包人员上传简历。最后在需求方通知外包人员离场后,供应商可以在离场人员管理中查看需求方对离场人员的评价以方便后续管理。页面如图4.10所示。图4.10待入场人员信息查看在场人员管理:在供应商将面试通过的外包人员信息添加到在场人员中后,需求方可以在在场人员管理页面中查看在场外包人员的信息,并且在完成工作或对外包人员的工作不满意时,可以在在场人员管理中选择相应的外包人员在填写离场时间以及离场原因后,通知外包人员离场。页面如图4.12所示。图4.11待入场人员信息查看离场人员管理:在需求方选择外包人员,并通知外包人员离场后,需求方可以通过离场人员管理页面对已经通知离场的外包人员进行人员评价,包括总体评价以及评价反馈。页面如图4.12所示。图4.12离场通知4.4总结 本章介绍了外包人员管理系统的硬件以及软件的开发环境,以及前端开发规范,并根据截图介绍了本系统的所有模块。在开发环境中主要介绍了主机的硬件配置以及所使用到的软件环境。开发规范则介绍了包括命名规范,变量的声明,css语法等。在系统功能中则配合截图介绍了本系统的所有重要业务模块。

5系统测试5.1功能测试外包人员管理系统功能测试分为以下几大模块:我的待办、需求管理、响应、候选人管理-简历列表、候选人管理-面试反馈、待入场人员管理、在场人员管理、离场人员管理。分别对以上模块的所有功能进行测试,并将测试步骤与测试结果填写到下表5.1中:表5.1测试结果模块名功能测试步骤是否正确需求管理数据筛选是否能够根据查询条件筛选出正确的数据正确需求管理列表展示能够根据数据库的数据展示出正确的数据正确需求管理添加需求能够成功的添加新需求

温馨提示

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

评论

0/150

提交评论