论文部分内容阅读
摘 要:基于座位管理系统的Web Service接口,采用SOAP方案实现了座位信息的查询页面,并通过Ajax实现座位信息的实时更新。
关键词:座位管理系统;Web Service;SOAP;Ajax
中图分类号:TP315 文献标志码:A 文章编号:1673-8454(2013)15-0049-03
一、座位系统的现实意义
信息共享空间、自习室座位资源已成为考量高校图书馆服务的核心指标。临近期末,读者对座位资源的需求更为突出。部分高校图书馆针对座位紧张、占座现象严重,开发了自习室管理系统。[1]商业化的座位管理系统针对座位这一独特资源进行了数据库优化、流程简化,并提供了应用接口供个性化二次开发。目前已有不少高校图书馆采用了此套座位管理系统。
安装座位管理系统后,读者在座位系统终端机上刷校园卡选号,点击屏幕,在空座分布图上选择座位,打印座位号条即可凭号入座。凭条上印有座位号、校园学生卡卡号和进馆时间等信息,离开时需要刷卡释放座位。如果中途有事要离开座位,也需要重新刷卡,在系统中选择暂离,座位将自动保留一段时间,如果超时系统将释放座位,以便其他读者选择。每学年期末是座位紧张高峰期,从目前厦大图书馆使用情况来看,引进此套座位管理系统后,座位利用率有了很大的提升。
但是,此套座位管理系统安装于我馆内部网,无法由外部Web访问,亦无法远程查询目前座位状况。期末座位紧张时段,学生经常到馆后才发现无位可选,提供通过Web查询实时座位状况的功能是对此套座位管理系统的有效改进,能极大地满足学生使用需求,提升系统可用性。
二、座位系统Web Service介绍
座位管理系统提供了便于与其它应用系统互操作和个性化定制的Web Service,该Web Service使用SOAP代码实现。[2] SOAP(Simple Object Access Protocol,简单对象访问协议)是一种轻量的、简单的、基于XML的远程访问协议,可以与现有的多种传输层或应用层协议结合使用,如TCP、HTTP、SMTP等。SOAP广泛使用的是基于HTTP和XML协议的实现(SOAP=RPC HTTP XML),也就是大家常提的Web Service使用的通信协议。一个SOAP方法可以简单地看成遵循SOAP编码规则的HTTP请求和响应。
座位管理系统Web Service目前提供六个接口,分别实现阅览室状态查询、座位使用状态查询、读者当前状态查询、读者进出状态查询、读者违规记录查询、违规黑名单记录查询六项功能。这里就本文需要使用的阅览室状态查询和座位使用状态查询予以详细介绍,其它接口不予赘述。
阅览室状态查询接口 ReadingRoomState(ReadingRoomNo)
参数说明:
返回XML文档说明:
<!—Status 阅览室状态(开放/关闭) -->
座位使用状态查询 SeatUsedInfo(ReadingRoomNo)
参数说明:
返回XML文档说明:
<!--区域名称 No 编号;-->
<!--UsedSum 使用数;AllSum 总数;LeaveSum 暂时离开数-->
三、座位信息Web查询页面的实现
座位信息Web查询页面需要提供的信息有:
(1)图书馆总座位数,总使用座位数;
(2)各阅览室状态;
(3)各阅览室总座位数,总使用座位数。
因为阅览室的状态和座位使用情况是不断变化的,因此在设计座位信息的Web查询页面时,必须要考虑如何能够在Web页面上显示出实时的情况,因此就需要使用Ajax技术,让Web页面在不进行手动刷新时自动获取当前座位信息,并显示在Web页面上。
为方便Ajax程序调用,在座位管理系统Web Service的基础上,再设计一个二次封装接口。该接口负责从数据库提取获得阅览室记录号,通过Web Service提交调用请求,解析Web Service返回结果,计算图书馆总座位数、总使用座位数。
流程如图1所示:
座位管理系统提供的Web Service需要通过阅览室记录号提交调用请求返回查询结果。调用座位系统Web Service的ASP代码如下:[3]
function RoomInfo(readingroomno)
dim xmlReadingRoomState, xmlSeatUsedInfo, UsedSum, AllSum, freeSeat
dim soapClient, xmlReader
set soapClient = Server.CreateObject("MSSOAP.SoapClient30")
Set xmlReader = Server.CreateObject("MSXML2.DomDocument")
’调用阅览室名称和阅览室状态 soapClient.ClientProperty("ServerHTTPRequest") = true
call soapClient.mssoapinit("http://localhost/WebService/SMS_DataQueryInterface.asmx?WSDL")
xmlReadingRoomState = soapClient.ReadingRoomState(readingroomno)
xmlReader.loadXML(xmlReadingRoomState)
ReadingRoomState = xmlReader.documentElement.selectNodes("Status")(0).text
RoomName = xmlReader.documentElement.selectNodes("RoomName")(0).text
’调用阅览室座位信息(已用座位、总座位数、暂离座位数)
xmlSeatUsedInfo = soapClient.SeatUsedInfo(readingroomno)
xmlReader.loadXML(xmlSeatUsedInfo)
UsedSum = xmlReader.documentElement.selectNodes("Seat/@UsedSum")(0).text
AllSum = xmlReader.documentElement.selectNodes("Seat/@AllSum")(0).text
freeSeat = xmlReader.documentElement.selectNodes("Seat/@freeSeat")(0).text
LeaveSum= xmlReader.documentElement.selectNodes("Seat/@leaveSum")(0).text
set soapClient = nothing
set xmlReader = nothing
’返回阅览室信息
RoomInfo = Array(RoomName, AllSum, ReadingRoomState, freeSeat, UsedSum, leaveSum )
end function
封装二次接口,返回图书馆总座位信息及各阅览室座位信息:
’从数据库读取图书馆阅览室记录号,调用接口读取各阅览室信息
roomNo = "000"
关键词:座位管理系统;Web Service;SOAP;Ajax
中图分类号:TP315 文献标志码:A 文章编号:1673-8454(2013)15-0049-03
一、座位系统的现实意义
信息共享空间、自习室座位资源已成为考量高校图书馆服务的核心指标。临近期末,读者对座位资源的需求更为突出。部分高校图书馆针对座位紧张、占座现象严重,开发了自习室管理系统。[1]商业化的座位管理系统针对座位这一独特资源进行了数据库优化、流程简化,并提供了应用接口供个性化二次开发。目前已有不少高校图书馆采用了此套座位管理系统。
安装座位管理系统后,读者在座位系统终端机上刷校园卡选号,点击屏幕,在空座分布图上选择座位,打印座位号条即可凭号入座。凭条上印有座位号、校园学生卡卡号和进馆时间等信息,离开时需要刷卡释放座位。如果中途有事要离开座位,也需要重新刷卡,在系统中选择暂离,座位将自动保留一段时间,如果超时系统将释放座位,以便其他读者选择。每学年期末是座位紧张高峰期,从目前厦大图书馆使用情况来看,引进此套座位管理系统后,座位利用率有了很大的提升。
但是,此套座位管理系统安装于我馆内部网,无法由外部Web访问,亦无法远程查询目前座位状况。期末座位紧张时段,学生经常到馆后才发现无位可选,提供通过Web查询实时座位状况的功能是对此套座位管理系统的有效改进,能极大地满足学生使用需求,提升系统可用性。
二、座位系统Web Service介绍
座位管理系统提供了便于与其它应用系统互操作和个性化定制的Web Service,该Web Service使用SOAP代码实现。[2] SOAP(Simple Object Access Protocol,简单对象访问协议)是一种轻量的、简单的、基于XML的远程访问协议,可以与现有的多种传输层或应用层协议结合使用,如TCP、HTTP、SMTP等。SOAP广泛使用的是基于HTTP和XML协议的实现(SOAP=RPC HTTP XML),也就是大家常提的Web Service使用的通信协议。一个SOAP方法可以简单地看成遵循SOAP编码规则的HTTP请求和响应。
座位管理系统Web Service目前提供六个接口,分别实现阅览室状态查询、座位使用状态查询、读者当前状态查询、读者进出状态查询、读者违规记录查询、违规黑名单记录查询六项功能。这里就本文需要使用的阅览室状态查询和座位使用状态查询予以详细介绍,其它接口不予赘述。
阅览室状态查询接口 ReadingRoomState(ReadingRoomNo)
参数说明:
返回XML文档说明:
<!—Status 阅览室状态(开放/关闭) -->
座位使用状态查询 SeatUsedInfo(ReadingRoomNo)
参数说明:
返回XML文档说明:
<!--区域名称 No 编号;-->
<!--UsedSum 使用数;AllSum 总数;LeaveSum 暂时离开数-->
三、座位信息Web查询页面的实现
座位信息Web查询页面需要提供的信息有:
(1)图书馆总座位数,总使用座位数;
(2)各阅览室状态;
(3)各阅览室总座位数,总使用座位数。
因为阅览室的状态和座位使用情况是不断变化的,因此在设计座位信息的Web查询页面时,必须要考虑如何能够在Web页面上显示出实时的情况,因此就需要使用Ajax技术,让Web页面在不进行手动刷新时自动获取当前座位信息,并显示在Web页面上。
为方便Ajax程序调用,在座位管理系统Web Service的基础上,再设计一个二次封装接口。该接口负责从数据库提取获得阅览室记录号,通过Web Service提交调用请求,解析Web Service返回结果,计算图书馆总座位数、总使用座位数。
流程如图1所示:
座位管理系统提供的Web Service需要通过阅览室记录号提交调用请求返回查询结果。调用座位系统Web Service的ASP代码如下:[3]
function RoomInfo(readingroomno)
dim xmlReadingRoomState, xmlSeatUsedInfo, UsedSum, AllSum, freeSeat
dim soapClient, xmlReader
set soapClient = Server.CreateObject("MSSOAP.SoapClient30")
Set xmlReader = Server.CreateObject("MSXML2.DomDocument")
’调用阅览室名称和阅览室状态 soapClient.ClientProperty("ServerHTTPRequest") = true
call soapClient.mssoapinit("http://localhost/WebService/SMS_DataQueryInterface.asmx?WSDL")
xmlReadingRoomState = soapClient.ReadingRoomState(readingroomno)
xmlReader.loadXML(xmlReadingRoomState)
ReadingRoomState = xmlReader.documentElement.selectNodes("Status")(0).text
RoomName = xmlReader.documentElement.selectNodes("RoomName")(0).text
’调用阅览室座位信息(已用座位、总座位数、暂离座位数)
xmlSeatUsedInfo = soapClient.SeatUsedInfo(readingroomno)
xmlReader.loadXML(xmlSeatUsedInfo)
UsedSum = xmlReader.documentElement.selectNodes("Seat/@UsedSum")(0).text
AllSum = xmlReader.documentElement.selectNodes("Seat/@AllSum")(0).text
freeSeat = xmlReader.documentElement.selectNodes("Seat/@freeSeat")(0).text
LeaveSum= xmlReader.documentElement.selectNodes("Seat/@leaveSum")(0).text
set soapClient = nothing
set xmlReader = nothing
’返回阅览室信息
RoomInfo = Array(RoomName, AllSum, ReadingRoomState, freeSeat, UsedSum, leaveSum )
end function
封装二次接口,返回图书馆总座位信息及各阅览室座位信息:
’从数据库读取图书馆阅览室记录号,调用接口读取各阅览室信息
roomNo = "000"