APP下载

基于SSM的实验室管理系统的研究与设计

2020-04-22彭勇陈俞强

微型电脑应用 2020年3期
关键词:实验室管理管理信息系统

彭勇 陈俞强

摘 要:随着实验室大型设备增多,出现了校企共建共用等各种新型实验方式,使得现有高校实验室信息管理系统不能满足不断变化的实验室共享功能和新需求。为此研究了利用SSM框架开发应用系统的一般步骤,分析了高校实验室管理的功能需求,设计了系统的主要功能模块和业务流程,并利用SSM框架实现了系统的功能。

关键词:实验室管理; 管理信息系统; SSM框架; Web项目

中图分类号: TP319

文献标志码: A

Abstract:As the amount of large equipment is increasing, new experimental methods appear, such as college and enterprise co-construction and sharing. It lead that the existing university laboratory information management system cannot meet the actual needs of the laboratory management. In this paper, the relevant technologies of enterprise application development are studied, the functional requirements of laboratory management are analyzed. The main functional modules and business processes of the system are designed. The main function modules of the system are realized based on SSM framework.

Key words:Laboratory management; MIS; SSM Framework; Web project

0 引言

实验室信息管理系统(Laboratory Information Management System,LIMS)是以数据库技术为核心,将现代信息技术与实验室管理需求相结合的管理信息系统。实验室管理的对象很多,主要包括与实验室有关的设备、师生、各类信息,各种耗材,实验经费等,非常复杂。实验室管理主要包括:实验室设备管理、实验人员管理、实验信息管理、实验耗材管理、实验室故障管理、实验室共享等[1]。

高校实验室管理系统整合了实验室管理所需的全部功能,依托学校内网和用户手机端,采取服务器端、Web端和移动端相结合的方式,将实验人员、实验设备、实验室共享、实验耗材、实验数据、实验标本、实验信息、管理制度等内容融为一体,与高校大型设备共享预约平台实现无缝对接[2]。

1 SSM框架

SSM (Spring+SpringMVC+MyBatis)是由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。

Spring是一个轻量级的JAVA开发框架,主要解决业务逻辑层和其他层之间的松耦合问题,使用基本的Javabean来完成以往只有EJB完成的企业应用功能[3]。

SpringMVC是Spring实现的一个Web层,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。

Mybatis是一个持久层的框架,在使用上相比Hibernate更加灵活,可以控制SQL的编写,使用 XML或注解进行相关的配置。

1.1 Spring

Spring的核心包括IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程),IoC促进了低耦合,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象[4];AOP促进了高内聚,可以方便的实现对程序进行权限拦截、运行监控等功能。

1.2 Spring MVC

Spring MVC是Spring的一个子模块,分离了控制器、模型對象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制,其具体工作流程如图1所示。

前端控制器实际就是DispatcherServlet;应用控制器其实拆为处理映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等[5];提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

1.3 MyBatis

MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的基于Java的持久层框架。使用MyBatis,程序员无需书写JDBC代码,不用进行参数的手工设置以及结果集的检索,只通过XML文件或注解用于配置以及原始映射,就能够将接口和Java的POJOs(Plain Old Java Objects,简单的Java对象)映射成数据库中的记录。

2 系统的需求分析

随着高校实验室建设规模的扩大,各种新型实验教学模式的出现,实验中心的管理和维护工作量迅速增加,教学对实验室的标准也越来越高,根据市场调研和走访座谈,提出的主要功能需求如下[6]:

1)提供实验室设备管理功能,具体包括现有实验室设备登记、新设备出入库管理功能、设备折旧报废、耗材入库领用管理、设备资料的查询和修改、设备使用记录管理,手机App还能扫描设备二维码,查询设备的基本情况,并预留与后勤固定资产管理系统以及财务系统对接的数据接口;

2)针对为维护人员不足,为提高实验设备的可用性,鼓励每个师生安装移动客户端,当设备出现故障时,扫描设备二维码可以进行保修,并对故障现象进行拍照上传,方便维护人员快捷准确的维护设备,同时,也减轻实验室维护人员的工作量;

3)为提高仪器设备的使用率,提升重点建设实验室的投资效益,将实验室的仪器设备向校内外用户提供预约共享使用,软件能够提供分享实验室功能,并降低实验室的设备管理难度和管理成本;

4)提供仪器设备资产统计,实验设备使用情况登记统计,实验设备维修登记统计、设备报废信息统计等数据统计功能,跟踪了解使用人员的工作痕迹,做到全程可追溯。

3 设计与实现

3.1 系统设计

高校实验室管理系统的系统架构如图3所示。

整个系统包括服务器端、Web客户端和移动客户端。其中服务器端主要提供一个通用服务平台,Web客户端和移动App端负责展现数据和处理用户交互,所需要的数据来自于服务器端的工作流引擎[7];工作流引擎负责业务逻辑处理,生成核心数据发送到数据存储模块,工作流引擎还可以聚合数据存储模块查询到的数据返回给客户端;数据存储模块负责核心数据的增删改查;

实时通讯模块是服务器消息服务的基础。可以为Web应用和App应用加入实时消息等功能,还能实现协同实验等实时互动功能;

消息推送服务,可以即时的通过客户端向用户推送预约结果或者邀请实验的通知,用户之间可以保持沟通,从而有效地提高用户留存率,提升用户体验。

部分具体业务流程如下:

3.2 系统实现

根据软件的需求,Web端在前端使用easyUI框架,方便设计出功能丰富并且美观的UI界面进行页面展示,管理员在Web页面上进行相关操作,发送用户请求[8]。系统通过SpringMVC提供的前端控制器DispatcherServlet拦截用户请求,并对请求URL(统一资源定位符)进行解析,得到URI(统一资源标识符),根据URI调用HandlerMapping获得Handler对象,控制器根据Handler选择相应的HandlerAdapter,HandlerAdapter将调用实际处理用户请求Controller接口,在实例化DeviceController的时候,注入DeviceServiceImpl。在实例化DeviceServiceImpl的时候,又注入DeviceMapper, 根据ApplicationContext.xml中的配置信息,将DeviceMapper和Device.xml关联起来了,这样拿到了实例化好了的DeviceController,并调用 list 方法,从而进入对应的DeviceService处理业务逻辑,引用相应的Dao操作数据库,而数据库的具体操作通过Mybatis映射文件,处理完后返回用户响应。

下面仅列举本系统中设备管理模块的设备明细列表实现的部分代码:

1)jQuery+easyUI 搭建前端界面:

$("#tableDevice").datagrid({url:'device',{…});

2)服务端通过注解配置 Handler,注解@Controller 表示该方法是一个控制器,@RequestMapping 表示映射请求和请求的方法:

@Controller

public class DeviceController {

@Autowired

private DeviceService deviceService;

@RequestMapping (value="device",method=RequestMethod.POST)

@ResponseBody

public datagrid device(int page, int rows,HttpServletRequest request){…}

3)进入相应的 service 进行业务逻辑处理:

@Service("deviceService")

@Transactional (timeout=60, propagation =Propagation.REQUIRES_NEW)

public class IDeviceService implements DeviceService{…}

4)通过 Dao 与数据库交互:

public interface DeviceMapper {ListdeviceManager(Pager p);}

5)通过 Mybatis 映射实现具体数据库的操作,需手动编写 SQL 语句: