预约功能 bug 排除

最近发现没有册条码号的册记录,在进行预约操作时,出现了一些 bug:表现为多人预约同一本书的时候,到书通知的顺序不正确。

经过检查,发现是当册记录信息放入到书队列库记录的时候,<itemBarcode>元素记载了形态为 '@refID:xxxxxxxx'的内容,但检索这些记录的模块没有像以前那样去检索“册条码号”检索点,而是去检索了一个尚不存在的“参考ID”检索点。这是以前改造代码的时候遗留的问题,是因为没有检查预约到书库记录结构而想当然进行的改造。

要把功能恢复正常,其实使用现有的册条码号检索点也是可以的。当内容为参考ID的时候,由于有 @refID 前缀,所以也不会有问题。

考虑到将来的扩展需要,也就是有一种可能:到书队列记录中,可能需要同时存储册条码号和参考ID,我决定修改预约到书库的 keys 模板,增加了一个“册参考ID”检索点,对应于记录中的<refID>元素。

顺便也把原先在<itemBarcode>元素上的属性 onShelf 修改为使用独立的元素<onShelf>。

这样,需要在原有安装的环境下进行测试,验证预约到书功能是否正常。另外,需要在 dp2libraryXE 升级后,刷新预约到书库的数据库定义,然后再进行测试。两种情况下程序走的流程是不一样的,都需要测试。

---

预约到书库的更新后的 keys 配置文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <key>
    <xpath>//itemBarcode</xpath>
    <from>itembarcode</from>
    <table ref="itembarcode" />
  </key>
  <table name="itembarcode" id="1">
    <caption>册条码号</caption>
    <caption>册条码</caption>
    <caption>Item barcode</caption>
  </table>
  <key>
    <xpath>//readerBarcode</xpath>
    <from>readerbarcode</from>
    <table ref="readerbarcode" />
  </key>
  <table name="readerbarcode" id="2">
    <caption>读者证条码号</caption>
    <caption>读者证条码</caption>
    <caption>Reader barcode</caption>
  </table>
  <key>
    <xpath>//state</xpath>
    <from>state</from>
    <table ref="state" />
  </key>
  <table name="state" id="3">
    <convert>
      <string style="split,upper" />
    </convert>
    <convertquery>
      <string style="upper" />
    </convertquery>
    <caption>状态</caption>
    <caption>State</caption>
  </table>
  <!-- 2015/5/7 增加 参考ID -->
  <key>
    <xpath>//refID</xpath>
    <from>refID</from>
    <table ref="refID" />
  </key>
  <table name="refID" id="7" type="item_refid">
    <caption>册参考ID</caption>
    <caption>Item Reference ID</caption>
  </table>
</root>


检索途径“册参考ID”专门设立了一个type,为"item_refid",这样在获取到检索途径信息后,可以用 Style 是否包含这个字符串来进行判断,比判断检索途径的 Caption 要稳定很多。


你可能感兴趣的:(bug,预约到书,dp2)