基于RFID和开源框架的资产管理系统设计与实现

2015-04-17 12:18刘超慧
实验室研究与探索 2015年5期
关键词:手持机调用框架

刘超慧, 张 森, 聂 荣

(郑州航空工业管理学院 计算机科学与应用系,河南 郑州 450015)



·仪器设备供应与管理·

基于RFID和开源框架的资产管理系统设计与实现

刘超慧, 张 森, 聂 荣

(郑州航空工业管理学院 计算机科学与应用系,河南 郑州 450015)

根据资产管理信息化建设的需求和实践,结合开源框架和RFID技术的优点,提出了一种基于RFID和SSH架构的开发资产管理系统的方法。利用ExtJS和HighCharts框架的优点,构建了多层Web应用框架ESSHR。介绍了资产管理的业务流程,阐述了资产管理系统的功能模块,并对技术实现过程进行了详细说明。实践表明该资产管理系统能较大程度上提高资产的管理效率,而且系统具有很好的稳定性和可移植性,具有较好的应用与推广价值。

资产管理; RFID; SSH架构; HighCharts

0 引 言

随着信息技术的发展,如何利用信息技术提高固定资产的利用率,保障固定资产的完整性,成为当前高校资产管理的重点。为此很多学者进行了富有成效的研究[1-4],开发出来的系统提供了资产的存储、查询、统计和分析等功能。但是由于资产管理业务复杂,资产管理中的清点环节仍然采取手工方式、效率低下,对贵重设备无法提供跟踪功能、流失严重,传统系统开发维护成本较高,系统安全性差。

文章利用SSH等开源框架的优点,结合RFID(Radio Frequency Identification)技术,构建了一种新的Web应用框架ESSHR框架,在此基础上开发了固定资产管理系统,实现了视图层、业务逻辑层和数据持久层的分离,提高了代码的可重用性和可移植性,降低了系统的耦合性,克服了传统资产管理系统开发面临的问题,实现了资产的入库、盘点及跟踪的简捷操作。

1 技术介绍

1.1 RFID技术

RFID射频技术,又称为电子标签无线射频识别,可通过无线电讯号识别特定目标,并读取相关数据。基本的RFID系统包括电子标签(Tag)、读写器(Reader)和天线(Antenna)三部分[5]。其中电子标签又称为射频标签,由耦合元件(天线)及芯片组成,是射频识别系统的数据载体,每个标签具有唯一电子编码;读写器是读写标签信息的设备,可无接触地读取并识别电子标签中所保存的电子数据,以达到自动识别物体的目的;天线是一种以电磁波形式把无线电收发机的射频信号接收或辐射出去的装置,用在标签和读写器间传递射频信号。读写器通过天线发送一定频率的射频信号,当标签进入天线辐射场时,产生感应电流从而获得能量,发送自身编码信息,读写器读取并解码后发送至服务器进行处理[6]。

1.2 开源框架技术

(1) ExtJS框架。一个用JavaScript编写的,用于创建前端用户界面的UI框架。与后台语言无关,并提供了丰富的跨浏览器的UI组件,比如ExtJS的树形组件功能强大而且美观实用, 实现了拖动、排序、异步加载等功能。采用JSON/XML为交换格式,减轻了服务器端的负荷,提高了客户端的响应速度[7]。

(2) SSH框架。SSH是Struts、Spring和Hibernate轻量级框架技术的组合,它方便开发人员更注重业务逻辑的设计,提高了系统的开发效率[8]。

Struts是Apache组织的一个开源项目,是基于MVC模式的框架,用于实现Web项目中的表示层,主要采用Servlet和JSP技术实现,将JSP、Servlet、自定义标签和信息资源整合到一起,开发人员只需开发相应的组件和类,就可使用Struts进行项目开发。

Spring是一个以依赖注入原则和面向切面编程思想(AOP)为基础的轻量级框架。提供了Bean的配置基础、JDBC的提取框架、AOP的支持和抽象事物支持等,是一个服务于所有层面的应用程序框架,实现了优雅的MVC,降低了组建之间的耦合。

Hibernate是一个开源的对象/关系映射(ORM)框架,该框架通过对JDBC API进行轻量级的对象封装,使开发人员能够以面向对象的思维来操纵数据库。它主要封装了通过JDBC访问数据库的操作和向上层应用提供访问面向对象数据访问的API。

(3) Highcharts。是一个用Java脚本写的矢量绘图库,绘图机制采用SVG与VML实现,支持IE、Firefox等主流浏览器及iPhone手机或平板电脑桌面显示[8]。可以制作折线图、饼图、柱状图和时速表等多样图表类型,并可把多类型图表集成在一个图表上显示,具有提示功能、放大功能、兼容性、跨语言易用性等特征。

1.3 ESSHR架构

在SSH架构的基础上,为克服SSH对AJAX支持不足和Web级图表创建的缺点,结合RFID技术和ExtJS及HighCharts开源框架的优点,并根据资产管理系统的实际需要,设计了ESSHR架构模型。该模型在结构上采用分层原理,从整体上分为六层,见图1。

图1 ESSHR框架结构图

(1) View层。用JSP、ExtJS框架技术实现外观设计,通过HighCharts完成Web级图标的绘制,把用户提交的数据转给控制器进行处理。

(2) Controller层。负责控制业务逻辑层和表现层的交互,并以JSON为数据格式。根据用户的请求调用Action,获取用户的请求参数,调用业务逻辑层,将返回的数据写入Response,进而更新表现层,由Struts框架实现。

(3) BO层。负责业务逻辑处理操作,调用DAO 层的组件进行具体操作,并返回结果供其上层组件使用[9-10]。BO层位于Web的业务逻辑层,在该层中引入Spring,利用IoC容器对业务类进行装配和管理,使类与类之间的耦合度降到最低,利用AOP框架对业务层中的事务进行声明式管理。

(4) DAO层。负责与持久化对象交互,使用Hibernate框架访问数据库,并封装数据的增、删、查和改等操作,完成对数据的访问操作,与数据库的交互操作,实现持久化操作[11]。

(5) PO层。通过实体关系映射工具将关系型数据库的数据映射成对象,PO是一个符合JavaBean规范的Java对象,包含了符合统一标准的属性和方法,其属性只可以通过自身的get和set方法访问,这样对外隐藏了内部实现的细节,很方便地实现以面向对象方式操作数据库。

(6) WebService层。WebService是一种新型Web应用程序,具有自包含、自描述以及模块化的特点。该层通过互联网发布应用程序,供手持机端查找调用。在WebService体系结构中,使用WSDL来描述服务,使用UDDI来发布、查找服务,利用SOAP来执行服务调用,各模块间及模块内部消息以XML格式传递,由新一代的WebService引擎XFire框架实现[12-13]。

(7) HL层。硬件层主要由电子标签、读写器和网络设备组成,进行数据读写工作。在读写器中应用程序通过调用WebService同应用系统进行数据交换:一方面将标签的ID送往应用系统,另一方面是将应用系统的信息写入RFID标签。

2 系统设计方案

2.1 系统需求分析

高校资产种类繁多、业务复杂,因此构建资产管理系统应全面考虑[14-15]。①系统功能应该包含资产管理的所有业务活动,具体包括资产的“入库、借出、使用、折旧、查询和监控”等。②系统权限应清晰明确,对资产管理涉及的资产管理科、财务审计部门和院系部等不同部门能进行不同的权限分配。其中资产管理科负责固定资产台账和分类;财务审计部门对固定资产的管理起审核和监督作用;院系部是资产使用部门,负责本单位资产业务的申请提交及管理。同时对同一部门的不同人员也可以进行不同的权限划分。③系统应具备盘点、监控、数据输出及打印功能。信息系统具备对涉密及贵重设备的监控防流失功能,并能够进行数据输出和打印,以保证电子账目、账务及帐卡的一致性。④系统应具备安全措施。应详细记录对系统各环节的操作,能对系统数据进行备份等操作。

2.2 系统功能分析

系统围绕固定资产的“进、出、用、控”等环节进行科学管理,提供对资产全生命周期的跟踪管理[16],为了系统的可扩展性和管理权限划分,采用模块化设计思想,每个模块包括若干功能,其功能模块图见图2。

图2 资产管理系统功能模块图

系统划分为计算机端子系统和手持机端子系统,计算机端子系统包括用户账户、数据备份、资产管理等10个功能模块。其中用户账户、角色信息、组织结构三个模块是对用户信息进行管理,可以先建立组织机构,然后在该机构内创建用户,根据不同的工作职责赋予不同的权限,并可以定制角色;数据备份、系统日志和通知公告三个模块提供系统安全功能,可以发布新闻公告,并记录对系统的各类操作、对数据库信息进行备份等操作。资产管理、档案资料、实验耗材及统计报表四个模块提供对各类资产的有效管理,包括常见的入库、出库及重点设备的监控报警功能,可根据条件查询、打印及导出报表。

手持机端子系统有用户账户、档案资料、资产管理和系统设置等四个模块,其中用户账户、档案资料、资产管理三个模块功能同计算机端子系统相同,而系统设置模块主要是对连接数据库地址、频段和速率等RFID参数及盘点的相关信息进行设定。

3 系统功能实现

根据资产管理系统的需求,系统选用Windows 2003 Server操作系统,利用MySQL5.1数据库,选用Tomcat7.0服务器,在Eclipse开发环境中完成系统的实现。由于系统模块较多,各模块采用统一的架构方式,文中通过计算机端子系统中权限管理、统计报表模块和手持机端子系统,介绍实现细节。

3.1 用户权限功能

权限管理是系统重要的组成部分,涉及到所有功能模块、权限、角色、部门和用户的动态管理,对系统起到整体构架和引导作用。

(1) 表现层。利用Jsp技术构建index.js页面,引入ExtJS的样式文件resources/css/ext-all.css和基础库文件adapter/ext/ext-base.js及核心库文件ext-all.js。用户的请求通过ExtJSP发送到Countroller层,同时利用服务器返回的数据更新视图。系统进行授权操作时,通过调用Ext.require(‘Common.PrivTree’,

function(){var entity = Ext.create(Common.PrivTree)

;} ),动态加载PrivTree.js,并向服务器提交该用户ID,服务器以JSON格式返回信息,并以树形式显示。

(2) 业务逻辑层。添加权限的业务处理权限管理过程的业务逻辑,向上接受角色名称、角色说明信息等表单数据,向下接受与传递数据持久层的数据,业务逻辑由Service实现类组成,并由Spring控制与注入[7]。授权模块的注入方式如下:

@Resource(name ="privService")

public void setPrivService(PrivService

privService){this.privService= privService;}

用户选中checkbox进行权限更改时,PrivAction调用逻辑层的grantPrivToUser函数,将用户的ID与权限的ID进行关联,并以json格式返回结果,改变checkbox的状态。

(3) 数据持久层实现。用户权限管理通过grantPrivDAOImpl类实现,该类继承了HibernateDaoSupport,并依赖由Spring封装的hibernateTemplate对象,hibernateTemplate依赖Hibernate的SessionFactory,由Spring容器生成,并通过@Resource(name="hibernateTemplate")注入到grantPrivDaoImpl中。

在用户授权功能中,业务逻辑层会调用数据持久层的grantPrivToUser(int userId,int privId),这个函数在DaoImpl中实现方法如下:

Query query=session.createSQLQuery("insert into user_priv(userId,privId) values(?,?)");

query.setInteger(0, userId);

query.setInteger(1, privId);

return query.executeUpdate();

3.2 统计报表功能

统计报表功能由Highcharts实现,Highcharts运行需要在html文件的head区引入所使用的jquery. min. js和highcharts. js框架文件[17],js文件的引入方法如下: