Skip to content

dp2Library library.xml 配置指南

谢涛 edited this page Dec 16, 2021 · 31 revisions

dp2Library 数据目录中的 library.xml 配置文件,负责配置 dp2Library 模块的各种参数(注各种参数大小写敏感)。下面介绍如何进行配置。

如无特别说明,下面示范代码均为片段代码,处在 library.xml 整个 XML 结构的根元素下方。

login 元素 -- 登录配置

<login globalAddRights="clientscanvirus" checkClientVersion="true"/>

globalAddRights (login/@globalAddRights)

globalAddRights 属性定义了在 Login() API 返回前,dp2library 服务器主动给 strRights 参数添加的权限。常用于迫使内务前端检查病毒:globalAddRights="clientscanvirus"

checkClientVersion (login/@checkClientVersion)

checkClientVersion 属性定义 dp2library 在 Login() API 阶段是否检查请求中携带的版本号信息。缺省为 "false"。注:对 "reader" "public" "opac" 这几个特殊账户不进行此项检查。

circulation 元素 -- 流通配置

    <circulation acceptBlankRoomName="true" patronAdditionalFroms="证号,姓名" verifyBookType="true" verifyReaderType="true" maxItemHistoryItems="10" patronAdditionalFields="add1,add2" patronReplicationFields="add1,add2" verifyBarcode="false" notifyTypes="mq" verifyRegisterNoDup="yes" />

verifyRegisterNoDup (circulation/@verifyRegisterNoDup)

verifyRegisterNoDup 属性定义了在创建和修改册记录的时候,验证册记录的时候,是否要检查登录号的重复情况。默认值为 "yes",表示要检查登录号的重复情况。图书馆业务规范中,要求一个图书馆内的所有图书和期刊的登录号互相不能发生重复。

itemAdditionalFroms (circulation/@itemAdditionalFroms)

itemAdditionalFroms 属性定义了借书和还书时候可以使用的附加册记录检索途径。这是一个逗号分隔的字符串。默认值为空,表示不使用附加的册记录检索途径。 例:

    <circulation itemAdditionalFroms="登录号" />

这个例子配置了登录号作为附加的册记录检索途径。也就是说,可以用册条码号(这是原有的基本途径)和登录号来进行借书还书。

verifyBookType (circulation/@verifyBookType)

verifyBookType="true" 

以上代码定义了册登记时是否检查图书类型是否合法。

patronAdditionalFroms(circulation/@patronAdditionalFroms)

patronAdditionalFroms属性定义了借书时,可以使用的附加读者检查途径来识别读者身份这是一个逗号分隔的字符串。默认值为空,表示不使用附加的册记录检索途径。

verifyReaderType(circulation/@verifyReaderType)

verifyReaderType属性定义了编辑读者记录时是否检查读者类型是否合法。

 verifyReaderType= "true"

verifyBarcode(circulation/@verifyBarcode)

verifyBarcode属性定义了服务器端是否校验条码(包括校验册条码与证条码)。

notifyTypes(circulation/@notifyTypes)

notifyTypes属性定义了是否发送借书还书通知。例如notifyTypes="mq"

acceptBlankReaderBarcode(circulation/@acceptBlankReaderBarcode)

acceptBlankReaderBarcode属性定义了保存读者记录的时候是否接受空证条码号。

valueTables 元素 -- 值列表配置

值列表一般只配置订购渠道,订购状态,订购类型,经费来源这几项。馆藏地,读者类型,册类型这些因为在其他地方有配置,值列表就不用配置了。如果值列表也配置了,则其他地方的配置就会失效,而以值列表的配置为先。

<valueTables>
    <table name="readerType">本科生,研究生,博士生,教授,职工</table>
    <table name="orderSeller" dbname="">新华文轩,中国邮政,中图公司</table>
    <table name="orderSource" dbname="">财政拨款,本馆经费</table>
    <table name="orderState" dbname="">已订购,已验收</table>
    <table name="orderClass" dbname="">社科,自科</table>
    <library code="海淀分馆" >
        <table name="readerType">市民,儿童,领导</table>
        <table name="orderSeller" dbname="">人天公司,中国邮政,中图公司</table>
        <table name="orderSource" dbname="">财政拨款,自筹经费</table>
        <table name="orderState" dbname="">已订购,已验收</table>
        <table name="orderClass" dbname="">社科,自科</table>
    </library>
</valueTables>

unique 元素 -- 定义书目库查重空间

<unique>
  <space dbnames="中文图书,中文期刊,西文图书,西文期刊" />
</unique>

unique 元素用于定义书目库的查重空间。unique 是个容器元素,其下可以包含一个或者多个 space 元素。每个 space 元素负责定义一个查重空间。

space 元素的 dbnames 属性的值为数据库名称,多个数据库名以逗号分隔。space 元素 dbnames 属性中指定的若干书目库,这些书目库中的记录互相都不允许重复。也就是说,一旦其中一个书目库中有了一条书目记录,其它书目库中就不允许再创建同样的书目记录。同一个书目库中的记录之间也不允许重复。重复是靠书目记录中的 997 字段来比对判断的。dp2library 在创建或者覆盖书目记录的时候,会自动根据特征字段创建一个 997 字段。

locationTypes 元素 -- 定义馆藏地信息

    <locationTypes>
        <item canborrow="yes" itemBarcodeNullable="yes">保存本库</item>
        <item canborrow="no" itemBarcodeNullable="yes">阅览室</item>
        <item canborrow="javascript:result='yes';" canreturn="javascript:result='yes';" itemBarcodeNullable="yes">流通库</item>
        <item canborrow="yes" itemBarcodeNullable="yes">测试库</item>
        <library code="海淀分馆">
            <item canborrow="yes" itemBarcodeNullable="no">流通库</item>
            <item canborrow="yes" itemBarcodeNullable="no">班级书架</item>
        </library>
    </locationTypes>

其中 item/@canborrow 属性定义了一个馆藏地的图书是否允许外借。属性值可以是 'yes' 或 'no',或者一段脚本,例如 javascript:result='yes';。如果 canborrow 属性缺省,表示不可以外借。

其中 item/@canreturn 属性定义了一个馆藏地的图书是否允许还回。属性值可以是 'yes' 或 'no',或者一段脚本,例如 javascript:result='yes';。如果 canreturn 属性缺省,表示可以还回。

javascript 脚本被触发执行前,宿主给准备好了 account patron item 三个变量。 脚本通过 result 变量返回 'yes' 或 'no' 表示是否允许外借或者还回。

对于外借情况,如果脚本中没有定义这个 result 变量,默认 'no' 的效果。 此外,脚本返回前,可以设置变量 message 的值,这是一个字符串,宿主会用到 Borrow() 或者 GetEntities() API 的返回值中。 注意脚本函数可能会被 GetEntities() API 调用(当 strStyle 中包含 'opac' 时),但此种情况下 patron 变量值为 null,需留意在 javascript 代码中用 if (patron == null) 来处理此种状态。

对于还回情况,如果脚本中没有定义这个 result 变量,默认 'yes' 效果。此外,脚本返回前,可以设置变量 message 的值,这是一个字符串,宿主会用到 Return() API 的返回值中。

patron 是一个 patronRecord 类型的变量:

    public class ReaderRecord : XmlRecord
    {
        public string refID {get;}
        public string libraryCode {get;}
        public string barcode {get;}
        public string state {get;}
        public string readerType {get;}
        public string createDate {get;}
        public string expireDate {get;}
        public string name {get;}
        public string namePinyin {get;}
        public string gender {get;}
        public string dateOfBirth {get;}
        public string idCardNumber {get;}
        public string department {get;}
        public string post {get;}
        public string address {get;}
        public string tel {get;}
        public string email {get;}
        public string comment {get;}
        public string hire {get;}
        public string cardNumber {get;}
        public string preference {get;}
        public string nation {get;}
        public string fingerprint {get;}
        public string rights {get;}
        public string personalLibrary {get;}
        public string friends {get;}
        public string access {get;}

item 是一个 ItemRecord 类型的变量:

    public class ItemRecord : XmlRecord
    {
        public string refID {get;}
        public string parent {get;}
        public string barcode {get;}
        public string state {get;}
        public string publishTime {get;}
        public string location {get;}
        // 加工后纯净的 location 内容,不包含 '#reservation' 部分
        public string pureLocation {get;}
        public string seller {get;}
        public string source {get;}
        public string price {get;}
        public string bookType {get;}
        public string registerNo {get;}
        public string comment {get;}
        public string mergeComment {get;}
        public string batchNo {get;}
        public string volume {get;}
        public string accessNo {get;}
        public string intact {get;}
        public string bindingCost {get;}
        public string oldRefID {get;}
        public string shelfNo {get;}
    }

account 是一个 AcccountRecord 类型的变量:


    // 帐户信息
    public class AccountRecord
    {
        public string Location {get;}	// 工作台号
        public string LoginName {get;}  // 登录名 带有前缀的各种渠道的登录名字
        public string Type {get;}
        public string Rights {get;set;}	// 用户权限
        public string AccountLibraryCode {get;} // 账户所从属的馆代码 
        public string Access {get;}  // 存取权限代码
        public string UserID {get;}  // 用户唯一标识。对于读者,这就是证条码号
        public string Binding {get;} // 
        public string Barcode {get;} // 证条码号。对于读者型的帐户有意义
        public string Name {get;}    // 姓名。对于读者型的帐户有意义
        public string DisplayName {get;} // 显示名。对于读者型的帐户有意义
        public string PersonalLibrary {get;}  // 书斋名。对于读者型的帐户有意义
        public XmlDocument PatronDom {get;}    // 如果是读者帐户,这里是读者记录的 XmlDocument 对象
        public string PatronDomPath {get;}   // 读者记录路径
        public string RightsOrigin {get;}	 // 最原始的权限定义
    }

这是一段示范 canborrow 属性的脚本代码:

javascript:
if (patron == null)
{
	result = "no";
	message = "因没有提供具体的读者记录,无法判断是否允许外借";
}
else
{
    if (patron.readerType == "本科生")
	result = "yes";
    else
	result = "no";

    message = "读者类型为 " + patron.readerType;
}

globalResults 元素 -- 定义全局永久结果集

globalResults 元素用于定义 dp2library 启动阶段自动创建的全局永久结果集。

例:

	<globalResults>
		<item name="biblio1" type="state" parameters="内部" resultsetName="内部" />
	</globalResults>

其中 item 元素定义了一个永久结果集。name 属性值可以任意命名,只要多个 item 元素之间 name 属性值不重复即可。type 属性是结果集类型,目前只能使用 "state" 这个值。parameters 属性值是用于创建结果集的检索词。resultsetName 属性值是永久结果集的名字。

当 dp2library 启动的时候,或者跨越了一天以后,会自动创建和重新创建这个永久结果集。永久结果集不会被自动清除,只要 dp2library 存活期间一直会存在。

在内务前端的书目查询窗里面,可以为“馆藏地”输入“-内部”,这时候检索命中的结果,是排除了 998$s 中包含“内部”的那些书目记录(减号表示执行 SUB 逻辑运算)。而如果为“馆藏地”输入“内部”,则检索命中的结果,是那些 998$s 中包含“内部”的书目记录(没有减号,表示执行 AND 逻辑运算)。

cataloging 元素 -- 定义编目参数

cataloging 元素用于定义一些和编目功能有关的参数。

例:

    <cataloging deleteBiblioSubRecords="false" biblioSearchMaxCount="1000" />

deleteBiblioSubRecords 属性定义是否允许删除带有下级记录的书目记录。缺省值为 "true"。如果为 "false",表示不允许删除带有下级记录的书目记录,如果确实要删除这样的书目记录,要先想办法删除它的全部下级记录,然后才能请求删除它。

biblioSearchMaxCount 属性定义书目检索(SearchBiblio() API)允许的最大命中记录数。缺省值为 "-1",表示不限制。如果检索请求的最大命中记录数超过这个定义值,会返回失败。但,具有 searchbiblio_unlimited 权限的用户,可以不受这个参数的限制。

opacServer 元素 -- OPAC 服务器地址

opacServer/@url 属性定义了 OPAC 服务器的 URL。用于内务里面一些和 OPAC 页面有关的功能。注意这个 URL 应该是指向 OPAC 应用的 URL。

例:

    <opacServer url="http://dp2003.com/dp2OPAC/" />
Clone this wiki locally