Skip to content

如何配置册记录扩展字段

Hopeshine edited this page Sep 30, 2020 · 4 revisions

一、准备工作

将 dp2circulation 和 dp2library(xe) 模块都升级到最新版本。

dp2libraryxe 框架版本: 3.1.7566.25774以上

标准版:library (3.36.7576.26110)

二、在 dp2library 端为册记录定义扩展的字段

在 library.xml 中根元素下的 circulation 元素里面使用 itemAdditionalFields 属性,以定义打算在册记录(XML格式中)扩展的一个或者多个数据元素名。定义之后这些元素名才会被用在册记录中。

    <circulation itemAdditionalFields="add1,add2,add3"/>

上面例子中,定义了三个元素,名字分别为 add1、 add2、 add3。

只有在这里定义了的扩展字段(元素),dp2library 保存册记录的时候才允许这些字段(元素)保存到数据库中(即服务器上)。否则,即便内务前端提交了数据,保存到服务器也不会成功。

注:

用户在自定义册记录扩展字段名称时需要注意,不能与系统原有的基本元素名称一致。否则,dp2library 启动的时候,会自动检查 library.xml 中 circulation/@itemAdditionalFields 属性中定义的元素名是否和册记录的基本元素名是否发生重复。如果重复了 dp2library 会在当天的错误日志文件中输出一条报错信息,并挂起自己。那样服务器将会停止工作,直到错误被纠正为止。

三、在内务前端中配置扩展的字段显示

在内务前端中,有两处界面需要经过专门配置后,才能在内务中将扩展的字段显示出来,并允许进行编辑。

册登记对话框

第一处是册登记对话框。需要在内务的用户文件夹中,增加一个名为 item_extend.xml 的 XML 文件,样例内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<editor>
  <field element="add1">
    <caption lang="zh">新增字段1</caption>
  </field>
  <field element="add2">
    <caption lang="zh">新增字段2</caption>
  </field>
  <field element="add3">
    <caption lang="zh">新增字段3</caption>
  </field>
</editor>

(注:创建文件的时候,注意文件编码方式要和内容第一行 prolog 里面指定的编码方式一致)

这里只是示范的例子,真正应用的时候可以根据实际情况来定义。

每一个 field 元素代表一个扩展字段。field 元素的 element 属性定义了扩展字段的 XML 元素名,注意要和刚才介绍的 library.xml 中的 circulation/@itemAdditionalFields 中的元素名吻合;caption 元素则定义了编辑界面上显示的字段名字。

种册窗的“册”属性页

第二处是种册窗的“册”属性页。需要在内务的用户文件夹中,增加一个名为 item_list.xml 的 XML 文件,样例内容如下:

<collection>
  <field element='barcode' width='150'>
    <caption lang='zh'>册条码号</caption>
  </field>
  <field element='ErrorInfo:this' width='200'>
    <caption lang='zh'>错误信息</caption>
  </field>
  <field element='state' width='100'>
    <caption lang='zh'>状态</caption>
  </field>
  <field element='publishTime' width='180'>
    <caption lang='zh'>出版时间(期定位信息)</caption>
  </field>
  <field element='location' width='150'>
    <caption lang='zh'>馆藏地点</caption>
  </field>
  <field element='shelfNo' width='150'>
    <caption lang='zh'>架号</caption>
  </field>
  <field element='currentLocation' width='150'>
    <caption lang='zh'>当前位置</caption>
  </field>
  <field element='seller' width='100'>
    <caption lang='zh'>订购渠道</caption>
  </field>
  <field element='source' width='100'>
    <caption lang='zh'>经费来源</caption>
  </field>
  <field element='price' width='150'>
    <caption lang='zh'>册价格</caption>
  </field>
  <field element='volume' width='150'>
    <caption lang='zh'>卷期</caption>
  </field>
  <field element='accessNo' width='150'>
    <caption lang='zh'>索取号</caption>
  </field>
  <field element='bookType' width='150'>
    <caption lang='zh'>册类型</caption>
  </field>
  <field element='registerNo' width='150'>
    <caption lang='zh'>登录号</caption>
  </field>
  <field element='comment' width='150'>
    <caption lang='zh'>附注</caption>
  </field>
  <field element='mergeComment' width='150'>
    <caption lang='zh'>合并注释</caption>
  </field>
  <field element='batchNo' width='100'>
    <caption lang='zh'>批次号</caption>
  </field>
  <field element='borrower' width='150'>
    <caption lang='zh'>借阅者</caption>
  </field>
  <field element='borrowDate' width='150'>
    <caption lang='zh'>借阅日期</caption>
  </field>
  <field element='borrowPeriod' width='150'>
    <caption lang='zh'>借阅期限</caption>
  </field>
  <field element='intact' width='150'>
    <caption lang='zh'>完好率</caption>
  </field>
  <field element='bindingCost' width='150'>
    <caption lang='zh'>装订费</caption>
  </field>
  <field element='binding:innerXml' width='150'>
    <caption lang='zh'>装订</caption>
  </field>
  <field element='operations:innerXml' width='150'>
    <caption lang='zh'>操作</caption>
  </field>
  <field element='RecPath:this' width='200'>
    <caption lang='zh'>册记录路径</caption>
  </field>
  <field element='refID' width='200'>
    <caption lang='zh'>参考 ID</caption>
  </field>
  <field element='add1' width='200'>
    <caption lang='zh'>扩展字段1</caption>
  </field>
  <field element='add2' width='200'>
    <caption lang='zh'>扩展字段2</caption>
  </field>
  <field element='add3' width='200'>
    <caption lang='zh'>扩展字段3</caption>
  </field>
</collection>

(注:创建文件的时候,注意文件编码方式要和内容第一行 prolog 里面指定的编码方式一致)

field 元素的 element 属性,有三种形态:

  1. barcode 这样的形态。表示使用册记录中的 barcode 元素文本节点内容。(注:所谓“文本节点内容”就是指例如 <barcode>B0000001</barcode>这一个 XML 元素中 B0000001 这一部分)
  2. operations:innerXml这样的形态。表示使用册记录中的 operations 元素的 InnerXml 内容。(注:所谓“InnerXml内容”就是指例如 <operations><operation>...</operation></operations>这一个 XML 元素中 <operation>...</operation> 这一部分)
  3. RecPath:this这样的形态。表示使用 BookItem 对象的 RecPath 属性或者字段。这一般是册记录 XML 数据以外的相关数据。(注:比如册记录的路径本身是不在册记录 XML 里面存储的)

如果内务的用户文件夹中没有主动配置 item_list.xml 文件,软件会自动创建一个默认的item_list.xml。这个默认的 item_list.xml中只包含系统默认的基本元素,不会包含自定义字段。用户需要在此基础上增加自动定义字段的相应内容,才会让自定义字段显示到种册窗的“册”属性页。

总结,以上三个配置文件在配置过程中,需要注意:

1)library.xml 中根元素下的 circulation 元素里面使用 itemAdditionalFields 属性值要与前端的两个配置文件 item_extend.xml和item_list.xml 对应。种册窗“册”属性页中所显示的自定义字段由item_list.xml 控制;种册窗册登记时的“册信息”属性页中所显示的自定义字段由 item_extend.xml控制;而服务器最终保存的自定义字段由library.xml 中根元素下的 circulation 元素里面使用 itemAdditionalFields 属性值决定。

2)所以,library.xml 中根元素下的 circulation 元素里面使用 itemAdditionalFields 属性值要与item_extend.xml和item_list.xml 中所定义的字段名统一。这样前端所配置并显示的内容才能保存到服务器上。

3)只有经过前端配置了 item_extend.xml和item_list.xml后,在内务前端的种册窗“册”属性页和种册窗册登记时的“册信息”中,才能看到已经保存到服务器上的扩展字段内容。如果前端电脑没有经过配置,就算是服务器上保存了自定义字段,在种册窗“册”属性页或“册信息”中也不会看到。

也就是说如果服务器上配置了扩展字段,某台前端也对应配置了,那么可以通过这台前端给扩展字段设置内容;但其他没有配置的前端电脑在种册窗的“册”属性页和和册信息中是看不到扩展字段的(但是这些电脑可以从【册】窗的xml里面看到扩充字段的内容),界面上是不会显示的。

四、将扩展的字段配置为检索点

为了使扩展字段能够被所有前端检索到,可以针对对应实体库配置扩展的字段检索点。具体设置方法参见文档。注意检索点配置文件修改后,要对数据库进行重建检索点的操作。

如果不打算针对这些字段进行检索,则不需要进行本节介绍的配置。这时这些字段只是起到了存储数据的作用。

Clone this wiki locally