DigitalPlatform / dp2

Integrated Library System / 图书馆集成系统
http://digitalplatform.github.io/dp2
Apache License 2.0
107 stars 54 forks source link

dp2library 最新版针对“当前位置”的改进 #937

Open DigitalPlatform opened 2 years ago

DigitalPlatform commented 2 years ago

最新版 dp2library 中,针对还书时自动设置册记录中 currentLocation(当前位置) 字段进行修改,进行了较大幅度改进。

Return() API 会根据一定的规则,还书的同时修改册记录的 currentLocation 元素。 规则是: 1) Return() API strStyle 参数中的 currentLocation:xxx 优先;2) 内务前端登录对话框里面的工作台号次之(也就是说最近一次 Login() API 的 parameters 参数中的 location 子参数);3) (进行还书操作的)工作人员账户里面“位置”字段最次。按照这个顺序扫描,遇到第一个非空的值会自动写入册记录的 currentLocation 元素内容。如果全部值都是空,则不写入册记录 currentLocation 元素

还书操作会产生操作日志,操作日志记录的 operator 元素会有一个 location 属性,写入上述规则扫描遇到的第一个非空的值。如果都是空,则不写入 location 属性。

(注意日志恢复动作也要兑现,对于册记录 currentLocation 的改变)

SIP2 协议相关

dp2capo (里面的 SIP2 服务器)进行还书操作的时候,实际上是调用了 dp2library 的 Return() API。最新版 dp2capo 在调用 dp2library Return() API 的时候,strStyle 参数里面会包含 currentLocation:xxx 子参数,其中 xxx 从 SIP return 请求的 AP 字段中来。这样 SIP 前端是可以控制还书时册记录的 currentLocation 元素如何修改的。

dp2capo (里面的 SIP2 服务器)的登录功能,实际上是调用了 dp2library 的 Login() API。最新版 dp2capo 在调用 dp2library Login() API 的时候,parameters 参数里面视情况可能会包含 location=xxxx 子参数,其中 xxxx 从 SIP login 请求中的 CP 字段中来,并且限制了,仅当 CP 字段内容为感叹号开头的情况下才会被用到 parameters 参数中。注意用到 parameters 参数中的时候,CP 字段内容的第一个字符也就是感叹号会被去掉。

DigitalPlatform commented 2 years ago

测试建议

以下都是用内务针对 dp2library 进行测试。

1) 为工作人员账户的 location 字段设置一个便于识别的字符串。启动内务前端,注意登录对话框里面工作台号为空。然后进行一次借书操作。观察操作完成后册记录的 currentLocation 内容是否改变,改变是否符合预期;还书动作操作日志里面 operator/@location 属性值是否符合预期。注意为了便于观察改变,在借书操作前准备册记录的时候,currentLocation 元素内容要合理(意思就是说不要故意弄成改变和没改变分不清的样子)

2) 同 1)。工作人员账户的 location 字段为空

3) 总之,工作人员账户的 location 字段、内务登录对话框的工作台号,这两个因素,充分排列组合。比如全部为空;其中一个为空;全部都不为空,等。

以下用 dp2sipclient 前端配合 dp2capo + dp2library 进行测试。

1) 还书操作时,组合测试发出的 AP 字段为空、不为空。观察借书操作完成后,dp2library 里面的操作日志的 operator/@location 属性是否符合预期,并观察涉及到的册记录的 currentLocation 元素是否被自动修改、修改是否符合预期。

2) 还书前的登录动作,组合测试发出的 CP 字段为空、不为空。不为空的情况下,内容第一字符为感叹含、不为感叹号。 另外还要和还书操作是否发出 AP 字段组合起来测试。观察两者对于册记录 currentLocation 元素影响的优先级,是否符合预期。