当前位置:首页 期刊杂志

基于小程序的DevOps工单系统

时间:2024-05-04

韩欣怡,高铭,靳海涛

(北京信息科技大学,北京,100020)

0 引言

目前高校及科研院所大都已经在一级部门间启用或开始启用信息化的沟通协作系统,但由于存在较多历史遗留问题,并没有实现完全的信息化。同时,一级部门下设的二级机构之间,信息化协作水平较低,尚处于使用邮件在同一份文档内进行沟通协作的传统模式。随着去年新冠疫情爆发,线上办公的普及,上述传统模式转为云文档在线协作,部分提高了沟通效率,但依然存在操作复杂、流程繁复等弊端。

以高校GPU资源申请场景为例:申请资源的用户需要填写在线收集表,申请记录会自动收集到申请记录表格中,每一条记录都包括用户的基本信息(姓名,工号等),申请的资源的详情,以及申请的处理进度。资源管理员需要定期查看申请记录表格,并根据用户的申请需求和资源的实际情况,对用户的申请做出相应的处理。用户想要了解申请进度,需要自行查看申请记录表格中的处理状态,且表格并未进行有效的权限管理。部门间的高沟通成本和低协作效率会放大上述问题的影响,降低基础设施的使用效率,导致资产的无形损失。

1 工单系统分析

■ 1.1 工单系统发展现状

客服工单管理系统目前在国内外技术都比较成熟,基本涵盖工单管理、客户管理、知识库管理、在线客服、呼叫中心等功能模块。为了更好的获取客户反馈信息,实时追踪和处理解决客户反映的问题,21世纪初,美国多家公司致力于开发客户管理、工单管理、统计报表等服务,帮助公司及时获取客户所需,解决客户急需解决的问题或意见与建议[1]。国内后续也有很多企业致力于帮助开发者和企业可以更快速低成本的搭建自己的客户服务系统,使用户的问题可以更方便的提交和反馈。其中的工单系统将工单作为部门协同、任务流转记录、提升效率、改善和提升服务体验的工具,在公司内部各个部门进行流转处理[2]。经过我们查阅资料等方式,总结为主要以下三个问题:(1)用户分级操作不明确:学生无法通过自主填写信息完成资源申请;(2)用户申请状态难追踪:在申请记录非常多的情况下,用户就难以在众多的记录中查找自己的申请记录,且不方便管理员更新申请的处理状态;(3)流程中沟通成本巨大:用户申请占用大资源需要相关领导审批,但用户无法通过填写一张简单的申请表格来描述自己对大资源的需求,还需要自行联系资源管理员,级级上报,等待审批,最后才能为用户分配资源。可见,巨大的沟通成本导致的特殊申请的效率极其低下。

■ 1.2 工单系统需求分析

由于本系统最主要研究的是各高校以及科研院所中不同层级资源申请的问题,设计并开发一款适用于高校及科研院所内部使用的工单管理系统,旨在高校及科研院所之间的协同配合工作,使得资源管理员可快速响应各层级用户的申请,解决用户问题。我们设计的工单系统是面向不同级别用户申请资源的一种区别于线下传统的线上系统,针对于不同级别的用户,如普通用户与管理员,而普通用户又有级别的区别,这些不同的级别也都对应着不同的工单流转方式以及所需要的审批工程。图1是工单系统所要完成的基本功能。

图1 工单系统功能图

2 工单系统基本设计

该工单系统的前后端是分离独立的,采用了client/server模式,以及MVC的三层设计模式[3],前后端交换数据使用的是JSON格式[4];系统后端采取Java语言写,使用java web技术开发,MyBatis-Plus技术进行封装,基于的是SpringBoot2框架[5]、微服务架构;系统前端分为两个大的模块,其中之一是管理员后端,另外一个模块即普通用户进行申请的小程序前端,管理员后端使用了Vue.js框架技术,Vue.js框架能快速的搭建与用户交互的环境,使用户有良好的交互式体验;数据库的实现采用了MySQL数据库,是安全、跨平台、高效的数据库系统,与我们系统的后端Java语言紧密结合。

■ 2.1 后端基本设计

后端表现层(Web层)是与Service层接口交互的层次,主要负责接受客户端的请求,向客户端发送请求结果。通过前端的表现层调用方,即后台管理系统前端(Browser)、微信小程序前端、微信服务器这三部分前端调用,通过HTTP协议调用JSON向表现层传参,,之后表现层再把自己接受到的数据通过Service层接口传到Service层[6]。

后端服务层(Service层)设计是与数据库进行直接交互的层级,表现层接受到的数据通过接口调用,传给Service层对外暴露的接口,通过接口数据即被传到了服务层,服务层的需要通过MDS加密类等工具实现加密数据、格式化日期数据等功能,将表现层传过来的数据进行统一的格式化处理,格式化处理后的数据会通过数据持久层接口传送到数据库。

后端数据持久层,即直接与数据库进行交互的层级,这部分操作是通过标准的Java应用编程接口向数据库传入需要存储的数据[7]。

■ 2.2 前端视图层设计

系统前端视图层总共有四个模块,即消息模块、工单模块、审批模块、用户信息模块,这四个模块分别调用控制层中的消息控制层接口(MessageController)、工单管理控制层接口(WorkController)、审批工单控制层接口(ApprovalController)、用户控制层接口(AuthController)这四个控制层。

2.2.1 用户信息模块

用户信息模块中,分为用户信息注册和用户登录两个主要功能。其中用户信息注册是指在首次使用此工单系统时,用户需要填写自己的个人信息,主要是明确信息的身份等级。以图2(a)进行小程序前端注册页面的展示。用户登录功能,传入微信login()接口获取的临时代码,服务器返回一个有时限的登录token(令牌),需要客户端保存好,每次访问接口时都要将token通过HTTP请求头发送到后端,作为登录的凭证。token中包含用户id,学号和工号(如果是学生就携带学号,教师就携带工号),也就是说对于首次登录的用户,会让其填写基本的个人信息,主要是为了获取用户的身份等级,以确认用户提交工单后自动流入的节点,但登录时可能会有一些错误登录的情况,有专门的错误代码返回一些错误的信息,并且在页面上给予用户提示。同一个用户在后续登录系统的过程中,会一直携带着被保存的token,也就意味着,后续用户打开工单系统小程序将能自动登入系统。

2.2.2 消息模块

消息模块中,使用前端小程序的用户可以发送消息给负责审批的管理员,后台的管理者也可以将审批的意见反馈给用户,调用的都为发送信息接口,并且普通用户以及管理员都可以通过消息详情接口的调用去“查看消息详情”,“收件箱列表显示”和“发件箱列表显示”是通过“消息收件箱接口”和“消息发件箱借口”来获取到具体消息列表的,以上消息模块所完成的功能由控制层中的消息控制层来统一调度,并且每一条未读的工单信息都会标有“未读”,图2(b)是前端小程序的消息模块页面。

2.2.3 工单模块

在工单模块中,分别有工单列表显示、发起工单和查看工单详情这三个具体的功能。工单列表显示即通过调用工单列表借口,来查看用户申请的历史工单和在审工单等;用户发起工单即在申请资源时,要填入自己想要申请的具体内容(即标题),还要填写自己的留言(即申请资源的原因和用途),在选择流程中,可以选择上传截图证明,文件证明或是聊天记录,填写完以上所有必填项之外,提交按钮会变为蓝色,最后发送请求给接口/workOrder/save,后端在工单表中新增工单记录,并根据工单流程自动在审批关系表中新增记录,表示工单已经流入第一个审批节点,查看工单详情即可以通过调用工单详情接口来查看工单详情来查询工单的具体审批情况。

2.2.4 审批模块

审批模块中,分别有审批工单列表、查看工单详情,以及审批工单这三个部分的功能,在审批工单列表中,调用审批工单列表接口可以看到所有工单的审批状态;在审批工单时在进行工单的审批,管理员审批需要经过几个节点,即不同的层级,节点转换的触发条件是:审批人员点击“通过”按钮。后端删除目前审批表中的相关记录,并查询流程表获取下一个节点信息,在审批表中新增记录,表示工单已经流入下一个节点。同时将上一个节点的审批信息全部记录到审批记录关系表中,图2(c)是查看工单申请批详情界面。

图2

■ 2.3 后台网页端页面设计

在工单小程序的后端管理平台中,网页的页面主要包括五个具体页面。首先是管理员的注册登录页面,管理员可以选择以用户名密码的方式进行登录,也可以通过微信直接扫码登录页面,并且只有管理员的登录才是有效的,其它普通用户无法成功登录[8]。主要的功能性设计包括管理模块、用户模块等,管理员可以对任一工单或是用户做右侧Actions中的任意操作,如图3以工单管理具体页面作为主要展示:其中ID号是依照工单申请的顺序依次排列的,工单标题为自己填写,工单的创建时间是根据系统自带的时间而定,工作状态分为三种:即在审、不通过和顺利通过,其中在审是指此工单已经进入审批阶段,并且目前已经通过的节点没有其他的问题;不通过是指某一个节点,管理员在审批的时候拒绝了用户的CPU申请,工单申请中途夭折,所以该工单的状态为不通过;状态为顺利通过时是指,此工单固有的审批节点流程已经进行完毕,即完成了此类型工单系统所需要的工单流程。

图3 后端工单管理页面基本展示

3 数据库实现

数据库的设计在我们工单系统的开发中占了非常重要的地位,之所以够有效的存储数据,满足各类用户的应用需求,那么良好的数据库设计可以节省的存储空间,保证所需存储数据的完整性,减少数据冗余的情况[9]。我们设计的数据库主要包含了以下四个模块的数据,分别是工单信息、用户信息、权限管理和流程信息。工单信息包括了我们设计的工单表、已经审批完成的工单历史表,正在进行管理员审批的工单状态表、还有工单审批记录表,也就是说工单信息覆盖了工单从开始填写到审核完毕的全过程;用户信息包括用户表、学院表、专业表和部门表,涵盖了用户信息的各类属性;权限管理模块包括权限表、角色表,是根据用户的不同等级来划分权限,也对应着不同的角色;流程信息包括了流程表、流程节点表,根据不同的角色使其进入指定的节点流程。

对于一些工单申请的用户,在后端的数据库中其基本的信息都有记录,管理员可以随时在后端数据库中管理用户的基本信息或是对表中的数据进行查询、删除或是更改。

4 结束语

我们通过采取client/server模式完成了前后端的环境架构、建立GitHub仓库并使用Java语言编写前后端代码,并采用MySQL数据库完成数据库的构建和实现,顺利地开发了基于小程序的DevOps工单系统,可以用于各个高校与科研院所的线上工单申请流程。目前已经基本解决了目前线下各个层级间沟通成本高,时间耗费大,用户申请时体验感欠佳等各方面的问题,之后我们也会持续对此次开发的工单系统进行实时测评,并对用户提出的问题进行及时地改善与维护。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!