Skip to content

dp2library 增加了新的读者同步接口 #1198

@DigitalPlatform

Description

@DigitalPlatform

dp2library 目前版本中,已经提供了一种向卡中心请求读者数据的接口,要求第三方提供一个 .NET Remoting 服务器,然后 dp2library 在 library.xml 通过配置 patronReplication 元素,让 dp2library 在需要的时候调用这个 .NET Remoting 接口(每轮一次或多次请求),获得卡中心的全部当前读者数据。

这个接口对第三方要求较高:首先要熟悉 .NET Remoting 概念,另外也限制了能使用的编程语言;并且要组织好每轮 API 前后次之间的分页。另外 dp2library 这一端请求的时候也比较复杂,要处理分页。

最新版增加了一种新的读者同步接口,要求第三方提供一个 Console 程序即可,按照调用参数约定,在一个 XML 文件中返回全部读者数据即可。对第三方的要求降低了,dp2library 这一端也不需要处理分页问题。

这种新型接口在 library.xml 的配置方法如下:

    <patronReplication exePath="c:\interface\interface.exe" patronDbName="同步读者" idElementName="barcode" idFromName="证条码号" />

注意 exePath 属性取代了旧的接口方式的 interfaceUrl 属性。

(patronReplication 元素还增加了一个属性 mergeStyle,属性值为空或者 "simple")

接口调试的一种方法

把 interface.exe 获取成功的 XML 文件,比如名叫 test.xml 文件,拷贝到 dp2library 数据目录下的 patronReplication 子目录下。
然后配置 library.xml:

    <patronReplication exePath="!copy %datadir%/patronReplication/test.xml" patronDbName="同步读者" idElementName="barcode" idFromName="证条码号" />

这样当 dp2library 有关模块请求同步数据的时候,不会真正调用 interface.exe 接口程序,而是利用上述 test.xml 文件里面的内容,进行同步写入相关读者库的操作。这个方法用于验证 test.xml 文件中的内容被程序正常理解和处理。

第三方在开发接口程序 interface.exe 的过程中,首先应当确认它需要输出的确切数据格式,可以用上述方法来验证确认。

XML 数据文件中的特殊属性

dprms:missing 属性表示这个元素卡中心原本没有提供。dp2library 在遇到有这样属性的元素时,会对当前读者库内对应的记录,做删除此元素的操作。

dprms:default 属性表示当同步过来的数据用于第一次创建一条新读者记录的时候,使用这个元素的内容(需去掉 dprms:default 属性再用到记录中)。然而当读者库中已经有一条这样的记录(打算从卡中心获得的数据中更新某些字段)时,带有 dprms:default 属性的元素会被弃用,不会更新到读者库中对应的记录里。

(注: 上述两个属性,都是用“存在此属性”表达一种状态。有没有属性值、属性值是什么,dp2library 不会在意。也就是说最好的用法是只有属性名,不要有属性值)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions