馆藏定位系统能有效提高图书、光盘、座位等实体馆藏资源的服务管理水平, 而定位显示技术是实现定位功能的关键, 决定了馆藏定位系统的开发难度和定位显示效果。
目前, 馆藏资源定位的应用研究集中在图书, 主要采用基于静态图片坐标查询定位和动态图片显示定位的馆藏定位显示技术, 由于没有将定位业务逻辑实现和定位界面设计制作分离, 无法通过定位数据直接对定位界面上的定位目标做定位显示输出, 需要对定位界面上的定位图像进行坐标数据采集, 以实现定位数据与定位图像位置的关联, 由此增加了定位数据采集的工作量和系统更新维护的难度。同时基于图片的定位界面和动态定位显示在显示效果和制作效率上存在不足[ 1, 2, 3, 4, 5]。由于受图片分辨率和交互功能的限制, 该馆藏定位显示技术不适用于
光盘和座位等馆藏实体资源的定位。
因此, 本文提出一种基于Flash定位技术的馆藏定位系统开发模式和实现技术, 通过Flash元件/实例的图形动画制作、面向对象编程的ActionScript图形动画实例控制以及与后台数据库的数据交互等定位显示技术, 设计开发了图书、光盘、自习室座位等实体馆藏资源的定位系统, 解决了现有馆藏定位显示技术存在的不足。
开发模式.
上述馆藏定位显示技术所存在的不足, 究其原因是没有将定位业务逻辑实现和定位界面设计制作分离。Flash作为一款二维交互式图形动画制作的专业开发平台, 其所具有的定位显示制作技术, 适合上述问题的解决。
(1) Flash在定位界面和定位动画的制作过程中, 通过元件/实例的图形动画制作方式, 实现了最大限度的设计制作重用, 提高了开发效率, 同时降低了更新维护的难度;
(2) Flash平台提供面向对象的ActionScript编程, 通过实例名引用能够直接对定位界面的目标定位实例进行属性设置和动画控制等操作, 实现图形动画定位;
(3) Flash作为客户端, 通过ActionScript编程, 能够方便地与ASP等后台技术相结合, 实现与定位数据库的交互和对定位数据的获取。同时, 利用ASP等技术, 完成系统业务逻辑功能的实现。
基于Flash定位显示技术的馆藏定位系统开发模式由数据输入、Flash定位界面与Flash ActionScript、ASP后台页面和定位数据库等功能模块组成。系统开发模式和实现流程如图1所示:
系统通过以下步骤实现对馆藏资源的定位:
(1) 数据输入模块接收由外部系统或PC输入设备输入的数据, 并将数据赋值给Flash ActionScript模块中的相关对象属性;
(2) 在Macromedia Flash 8开发平台进行Flash定位界面的设计制作和Flash ActionScript模块的编程。Flash定位界面的设计制作首先要对定位实体对象的实际布局进行适当抽象和简化, 并利用元件、实例和层等Flash制作技术生成定位界面;
(3) Flash ActionScript模块通过变量赋值或监听的方式接收数据输入模块的数据, 用LoadVars类对象的sendAndLoad () 方法将数据发送给ASP后台页面;
(4) ASP后台页面首先接收Flash ActionScript模块发送的数据, 并在完成对定位数据库连接、业务逻辑处理和数据读写等操作后, 通过Response.Write () 函数将取得的目标定位数据返回给Flash ActionScript模块的接收对象;
(5) Flash ActionScript模块中LoadVars类对象自动接收ASP后台页面返回的目标定位数据, 通过对接收数据的解析和对目标实例的属性设置、动画控制等编程操作, 最终实现图形动画定位。
根据馆藏定位资源的实际存放空间, 需要对书库楼层空间布局、光盘柜设计布局和自习室座位布局进行定位界面视角的合理选择和定位空间要素的抽象简化, 以保证定位界面与实际空间布局的相似性。在Flash开发平台制作馆藏定位界面时, 充分利用元件/实例技术制作图形动画, 制作方式类似于对象编程中的类/对象, 通过元件来构建实例。对应于面向对象中类的聚合关系, 元件可以包含其他元件的实例。
以馆藏图书定位界面为例, 定位界面设计制作思路和实例属性命名格式如图2 所示。其他馆藏定位界面制作可参见文献[6-8]。
.定位数据库用于存储定位目标的定位数据。数据库表设计如表1-表3所示。
![]() | 表1 图书定位数据库表设计 |
![]() | 表2 光盘定位数据库表设计 |
![]() | 表3 自习室座位管理数据库表设计 |
ASP后台页面接收Flash ActionScript模块发送的数据, 并连接查询定位数据库, 返回目标定位数据给Flash ActionScript模块。同时, ASP后台页面根据馆藏定位系统的需求, 负责系统业务逻辑功能的实现。
(1) 图书定位系统.
ASP后台页面用于接收Flash ActionScript发送过来的图书分类号等定位数据, 通过查询定位数据库, 获取并返回图书目标定位数据。
针对不同的图书定位数据采集方式, SQL查询方法有以下三种:
①基于架标区间的定位数据采集, 查询表1中图书分类号落入架标区间的记录, 并获得定位数据, 返回记录至少1条。
②基于RFID的定位数据采集——即对RFID层架标及其图书进行数据采集, 查询表1中FLH等于图书分类号的记录, 并获取对应架层位置数据, 返回记录为1条。
③基于RFID和图书分类排架相结合的定位数据采集——即对每个或间隔多个的RFID层架标和对应架层第一本图书进行数据采集, 先查询表1中FLH值小于等于图书分类号字符串值的记录并按降序排列, 取第一条记录为定位起始数据;然后查询表1中FLH值大于等于图书分类号字符串值的记录并按升序排列, 取第一条记录为定位末尾数据;由于分类号中的“/”、“-”、“.”等符号的ASCII码值大小顺序和分类排架顺序不一致, 在对图书分类号和FLH进行比较时, 需要进行转换比较。查询最后返回记录为1条或2条。
(2) 光盘定位系统.
查询方法为通过查询表2中光盘流水号落入区间的记录, 获得定位数据, 返回记录为1条。
(3) 自习室座位定位系统.
查询表3中一卡通号码等于CARD_NUM字段值的记录, 返回记录为1条。由于自习室座位定位系统具有业务管理功能, ASP后台页面还包括记录删除处理程序、学生刷卡操作的判断处理、鼠标点击座位切换处理程序、数据库初始化设置和管理员的查询处理等业务逻辑功能的实现。
以馆藏图书定位系统为例, SQL查询语句和返回定位数据的关键代码如下:
select * from location WHERE flh <= ′"&book_flh&"′ order by flh desc.
select * from location WHERE flh >= ′"&book_flh&"′ order by flh asc.
Response.Write ("location1"&"="&rs ("location") ) &"&" .
Flash ActionScript编程是实现定位功能的关键部分, 负责将馆藏定位查询数据发送给ASP后台页面, 并等待接收ASP后台页面返回的目标定位数据。在完成对目标定位数据的接收后, Flash ActionScript模块对定位数据进行解析, 取得目标定位实例名称和定位显示数据, 并通过对目标实例的属性设置、动画控制等编程操作, 最终实现图形动画定位。
Flash ActionScript模块的编程实现主要分为三部分:
(1) 数据输入监听.
通过变量赋值、Key.addListener () 键盘输入监听和Mouse.addListener () 鼠标监听等方式, 接收数据输入。
(2) 发送和接收数据.
首先定义发送变量的LoadVars类对象send_lv和接收变量的LoadVars类对象result_lv;然后, 把Flash ActionScript模块接收的数据作为send_lv的属性附加, 并执行发送对象send_lv的send_lv.sendAndLoad () 方法, 通过send_lv.sendAndLoad (“ASP服务器地址”, result_lv, “POST”) 语句将数据发送给ASP后台页面, 同时对象result_lv等待接收ASP后台页面返回的目标定位数据。
(3) 解析数据和实例定位.
首先利用LoadVar类对象result_lv的onLoad () 方法判断对象result_lv是否完成对ASP后台页面返回数据的接收, 再利用eval () 函数和slice () 函数解析并处理result_lv接收的数据。通过对解析数据和定位界面中实例名的比较, 先确定书库楼层、光盘柜层和自习室等目标影片剪辑实例, 再确定目标书架/架层、光盘、座位实例, 并通过编程控制实现对目标实例的图形动画定位。
其中, 图书定位系统的定位实现分为对楼层、书架的定位和对书架、架层的定位两部分。而光盘定位系统根据返回的数据确定光盘柜、柜层的位置后, 还要对光盘在柜层中的位置进行计算定位, 计算公式如下:
L=1 L=0
INT ( (I-S) ×k/ (E-S) ) L≠0.
其中, L表示目标光盘所在光盘柜层的具体位置, I表示查询光盘的流水号, S表示定位查询获得的流水号始, E表示定位查询获得的流水号末, k表示光盘层柜所包含的光盘实例数量。
关键代码如下:
//定义发送和接收数据对象.
var result_lv:LoadVars = new LoadVars () ;
var send_lv:LoadVars = new LoadVars () ;
//接收外部数据, 并附加给发送对象属性, 执行发送到ASP后台页面.
send_lv._input = "数据接收";
send_lv.sendAndLoad ("http://ASP服务器地址/location.asp", result_lv, "POST") ;
result_lv.onLoad = function (success:Boolean) {.
if (success) {.
//解析数据和实例名的比较判断.
switch (eval ("this.location1") .slice (0, 7) ) {.
case "floor_1" :
_root.floor_1._visible = 1;
//显示目标定位实例.
tellTarget (eval ("this.location1") .slice (0, 11) ) {.
gotoAndPlay (1) ;
//目标定位实例动画控制.
}}}};
基于Flash定位显示技术的馆藏定位系统由Flash馆藏定位界面、ASP后台页面文件和数据库三部分组成。其中, Flash馆藏定位界面可由Flash开发平台发布成EXE和SWF格式文件, EXE文件可作为C/S模式下的客户端应用软件, SWF文件可作为B/S模式下的页面访问文件;ASP文件部署在服务器IIS目录下, 并设置好目录访问权限;数据库则部署在数据库服务器上。
为了提高系统的易用性, 将馆藏图书定位系统嵌入到OPAC书目查询结果页面中, 当读者点击查看目标图书的详细信息时, 页面自动加载图书定位系统并传递图书馆索书号等数据, 定位系统对目标定位实例进行图形动画定位。目前, 本馆采用分类排架, 图书定位只实现对图书书架的定位, 为方便读者, 在定位界面上增加显示书架序号的功能, 该序号与书库书架序号标识相对应。该系统已运行两年多, 成为读者进行书库寻书时必不可少的定位辅助工具[ 6], 其运行如图3所示:
.对于随书光盘不外借的图书馆, 可采用C/S模式, 工作人员可通过随书光盘定位管理系统进行光盘数据录入、查询定位等管理服务工作。对于随书光盘外借的图书馆, 可采用B/S模式, 读者可通过网页方式访问随书光盘定位系统, 快速确定光盘的柜号、层号和具体位置。该系统投入试用后, 当读者提出光盘介质需求时, 工作人员通过定位系统能快速查询定位光盘并取得光盘, 彻底解决了寻盘难的问题[ 7]。系统运行如图4所示:
.本文根据基于Flash定位显示技术的馆藏定位系统开发模式和实现技术, 设计开发了图书、光盘、座位等馆藏实体资源的定位系统, 并投入实际运行, 验证了方案的可行性和先进性, 对大中型图书馆具有很好的推广应用价值。
未来工作中, 将针对在分类排架馆藏组织体系下图书定位, 设计开发图书可视化定位采集系统, 在不采
用RFID技术条件下, 实现对书架层架定位数据的采集, 并结合现有馆藏书架定位系统, 实现精确到具体架层的图书定位系统。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|