-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dp2library 操作日志记录格式详释 #1184
Comments
Borrowaction动作,有两个值borrow和renew(续借) 改进点:
注: 1) confirmItemRecPath 元素里面是前端认为的,可以在册条码号发生重复的情况下辅助程序进行取舍的一个册记录路径。如果册条码号检索发现并没有遇到重复现象,这个路径就根本用不上。而且,即便发生了重复,也有可能这个路径并不和重复的记录的任何一个路径相同。不得不说这个路径给出相当随意,日志记录中这个元素仅仅是把它记载下来,建议服务器处理的时候,如果可能直接看 itemRecord 元素的 recPath 属性,这个路径更靠谱。 详细样例借书日志示例
readerRecord表示读者信息,内容样例如下:看到borrow元素中,增加了refID属性
itemRecord 表示册信息,内容样例如下:看到borrow元素的内容是@refid:xxx形态
续借日志示例
|
Returnaction动作有 return/lost/inventory/read/boxing 几种。恢复动作目前仅恢复 return 和 lost 两种,其余会忽略
还书日志示例
验证还书与普通 还书一模一样 丢失以下是丢失相关的字段内容,其它同还书字段。
|
todo |
交费相关操作 amerce日志格式说明当读者有违约信息时,就需要走交费手续,才能再借书。 action有5种值:modifyprice,modifycomment,amerce,undo,expire,下面分别说明: 2024改进点:
各操作样例修改价格 modifyprice
修改注释 modifycomment
交费 amerce
日志中amerceRecord 元素存的违约金记录,样例如下:* 2024改进点:
撤消交费 undo
以停代金到期 expire
|
读者记录 setReaderInfosetReaderInfo日志关于读者记录的变更,除了调setReaderInfo() api会产生此日志,调writeRes()接口如果操作的是读者记录,也是产生此类型日志。 action:值有 new/change/delete/move style:风格,值可能为ignorechecktimestamp/checkcreatingtimestamp/delete/force一个或多个,例如action=delete, 调setReaderInfo()时,action=forcenew/forcechange/forcedelete时,写到日志中是拆开的,action=new/change/delete,style=force。
日志样例new
读者记录本身,2024增加了refid,password,operations
change
注意新的读者记录体里,确保有refid,并且可能还会有borrows,reservations,outofReservations,overdues,borrowHistory 。
delete
changedEntityRecord 元素根元素下可能会有若干 changeEntityRecord 元素。表示需要对相关册记录进行修改。 itemBarcode 属性:册条码号 一个带changedEntityRecord元素的例子
move注:目前日志中record元素内容为空,因为MoveReaderInfo() 接口比较简单,如果两个路径参数,以后会参加CopyBiblioInfo增强一些,增加提交的xml参数。这样就可以把提交的信息写到record内容里。
|
册记录setEntity日志格式setEntity日志关于册记录的变更,除了调setEntities() api会产生此日志,调writeRes()接口如果操作的是册记录,也是产生此类型日志。 action元素action有4种动作:new/change/delete/move record与oldRecord元素new/change/move时,必有record元素。 style元素style元素会记录调接口writeRes()或setEntites()时传的style参数,值有ignorechecktimestamp/checkcreatingtimestamp/delete,其中ignorechecktimestamp和delete可组合使用,中间以逗号分隔。
各操作具体样例new
注意记录体本身,要确保有refid
change
delete
move
|
数据库管理manageDatabasecreateDatabase系统初始化时,创建多个数据库的日志
创建一个书目数据库的日志
创建一个读者数据库的日志
创建一个子库
deleteDatabase删除逻辑大库
删除一个子库
changeDatabase修改逻辑大数据库名称
是通过oldName来对应数据库名称。 修改子库名称
== initializeDatabase
期刊库,多一个期子库。
|
setSystemParameteropac/database
value内容,注意没有根元素
opac/browseformats
value内容
circulation/locationTypes
value
circulation/callNumber
value
circulation/barcodeValidation
value
circulation/valueTables
value
circulation/rightsTable
value
|
setBiblioInfoSetBiblioInfo() 和 CopyBiblioInfo() 这两个API均是产生此类型的操作日志,但action不同。所以同一个元素如record,理解的时候,要根据是哪个API调的,来理解其含义。 record:在SetBiblioInfo()相关日志里,表示新记录;在CopyBiblioInfo()相关日志里,表示目标记录。 oldRecord:在SetBiblioInfo()相关日志里,表示老记录;在CopyBiblioInfo()相关日志里,表示源记录。 在SetBiblioInfo()相关日志里,record与oldRecord的recPath一定相同。在CopyBiblioInfo()相关日志里,record与oldRecord的recPath是不同的路径。 new、change、delete、onlydeletebiblio、onlydeletesubrecordSetBiblioInfo() API 产生的日志action有:new、change、delete、onlydeletebiblio、onlydeletesubrecord。 move、copy、onlymovebiblio、onlycopybiblioCopyBiblioInfo() API 产生的日志action有:move、copy、onlymovebiblio、onlycopybiblio record 元素中是目标位置记录的实际写入的 XML 内容(注意已经经过了权限过滤处理); record 元素可以使用 newBiblioParam 属性,如果其值为 "(null)" 表示 API 当时请求的时候,strNewBiblioParam 参数值为空。注意即使是这种情况下,record 元素的文本值依然可以包含一个 XML 记录内容,这是目标位置实际写入的内容。 mergeStyle元素 此API产生的日志中,有一个关键的mergeStyle元素,表示当时操作时选择的合并方式: 书目style分为两种(其一,不能同时存在,缺省认为reserve_source): 下级(册/订购/期/评注)style分成3种(其一,不能同时存在,缺省认为combine_subrecord): 当mergeStyle为空时,表示书目采用源reserve_source,下级记录采用源和目标合并方式combine_subrecord,即等同reserve_source,combine_subrecord 关于file_reserve_xxx参数 overwritedRecord 各个元素介绍moveEntityRecords 元素和 copyEntityRecords 元素这是一个容器元素。其下有一个或多个 record 元素。record 元素内文本内容目前为空。
deletedXXXRecords当操作过程中有连带删除了下级记录时,日志会有这些元素。
日志格式总览
各类日志样例new 新建书目
change 修改书目
delete 删除书目
delete 删除书目带下级记录
onlydeletebiblio 仅删除书目,不删除下级记录
onlydeletesubrecord 仅删除下级记录,不删除书目记录
目标没有记录的情况-move 移动书目
目标没有记录的情况-onlymovebiblio 仅移动书目,不移动下级记录
目标没有记录的情况-copy 拷贝书目
目标没有记录的情况-onlycopybiblio 仅拷贝书目,不copy下级记录
move时,目标位置已有记录,进行合并的日志1)move,书目=reserve_source,下级记录=combine_subrecord
2)move,书目=reserve_source,下级记录=missing_source_subrecord(todo)是否直接用deletedEntityRecords元素?而不是改变moveEntityRecords的含义,让moveEntityRecords元素始终保持两个属性。
3)move,书目=reserve_source,下级记录=overwrite_target_subrecord(目前不支持) 4)move,书目=reserve_target,下级记录=combine_subrecord
5)move,书目=reserve_target,下级记录=missing_source_subrecord
6)move,书目=reserve_target,下级记录=overwrite_target_subrecord(目前未实现) copy时,目标位置已有记录,进行合并的日志1)copy,mergeStyle=reserve_source,combine_subrecord
2)copy,mergeStyle=reserve_source,missing_source_subrecord
3)copy,mergeStyle=reserve_source,overwrite_target_subrecord目前不支持 4)copy,mergeStyle=reserve_target,combine_subrecord
5)copy,mergeStyle=reserve_target,missing_source_subrecord
6)copy,mergeStyle=reserve_target,overwrite_target_subrecord目前不支持 |
writeRes说明requestResPath 元素是 API 请求当时的参数值。有可能路径中的记录 ID 部分为问号。 通过writeRes接口增删改违约金记录时,会写writeRes类型的日志,根据路径是否带?号,决定是新增还是修改。删除时,style=delete。 但通过writeRes接口写以下数据时,是产生对应数据的日志,不会产生writeRes日志。 用WriteRes写数据库中记录新增记录
修改记录
删除 style=delete
style说明strStyle的值为ignorechecktimestamp/ createdir/ autocreatedir/checkcreatingtimestamp/delete中一个和多个的组合。 “ignorechecktimestamp” 表示本API不检查baInputTimestamp参数中的时间戳和当前资源的时间戳是否吻合。 (todo目前版本还有会检查)。 下面两个功能是创建配置文件和目录有关 配置文件与目录相关写配置文件
创建目录 style=createdir
创建配置文件时,自动创建目录 style=autocreatedir
写对象注:如果对象文件比较大,会产生多个writeRes写对象的日志。
写大对象的日志样例
|
预约操作reservation读者预约图书,有这几种操作:new创建预约,delete取消预约,merge合并预约,split拆分预约,对应日志不同的动作action。 注:后台系统还有一个任务检查预约到期未取,自动消失预约,这种情况没法日志,后面也需要加一下。 另外目前针对预约日志,恢复日志的时候不处理,因为预约到书有时效性(默认是2天),到书不取超过有效期就自动取消了。在恢复 setReaderInfo 和 setEntity 时,也注意不恢复reservations元素。(todo检查一下) 改进点: 格式样例
merge或split特殊点itemBarcodeList和itemRefIdList是多册,中间以逗号分隔。注itemBarcodeList这里是以接口参数的值,所以也是直接写成@refid:xxx形态。
|
changeReaderPassword
2024/5 日志记录中增加了一个 type 元素。注意不是 password 元素的 type 属性。另外,先前版本本来就有可能在日志记录中写入 exipre 属性,对应于读者记录中的 password 元素的 expire 属性内容,表示密码失效期。注意用能够体现密码失效期的案例进行一下测试验证。 |
setUsernew
change
delete
|
repairBorrowInfo
readerRecord 元素和 itemRecord 元素的各个属性recPath 属性这是读者记录或者册记录的路径。如果读者记录或者册记录原本就不存在,recPath 属性不存在或者属性值为空。 existing 属性表示读者记录或者册记录是否存在。缺省为 "true"。"false" 表示不存在。 (注1: 为啥(对应的读者和册)记录不存在,日志记录中 readerRecord 元素和 itemRecord 元素还存在呢?这是因为需要用元素的 existing 属性来表示记录不存在) changed 属性表示读者记录或者册记录是否在执行 API 的过程中被修改了。缺省为 "true"。"false" 表示不存在。 (注3: 在快照恢复方式下,只要 readerRecord 和 itemRecord 元素中的内容(代表记录 XML)不为空,同时 recPath 属性不为空,都要覆盖写入一次记录。这样可以增强恢复过程的健壮性和适应性) readerKey 属性当读者记录不存在时,操作日志记录中的 readerRecord 元素存在,并具有一个 readerKey 属性,记载了 API 中 strReaderKey 参数的值。 (注: 当读者记录不存在时,操作日志记录中的 readerBarcode 和 readerRefID 元素都不存在) itemKey 属性当册记录不存在时,操作日志记录中的 itemRecord 元素存在,并具有一个 itemKey 属性,记载了 API 中 strItemKey 参数的值。 (注: 当册记录不存在时,操作日志记录中的 itemBarcode 和 itemRefID 元素都不存在) 读者一侧修复读者记录会被修改,册记录可能会被修改。 对读者记录的修改,是去掉相关的 borrow 元素。对册记录的修改,是去掉 borrower 和其它相关元素。 册一侧修复只会修改册记录,不会修改读者记录。 对册记录的修改,是去掉 borrower 和其它相关元素。 读者借一册,然后把册记录删除,然后从读者一侧恢复。
|
setOrder/setIssue/setComment日志格式这3类日志类似。 setOrder日志关于"订购"记录的变更,除了调setOrders() api会产生此日志,调writeRes()接口如果操作的是"订购"记录,也是产生此类型日志。 action元素action有4种动作:new/change/delete/move record与oldRecord元素new/change/move时,必有record元素。 style元素(todo这3种未记录)style元素会记录调接口writeRes()或setEntites()时传的style参数,值有ignorechecktimestamp/checkcreatingtimestamp/delete,其中ignorechecktimestamp和delete可组合使用,中间以逗号分隔。
new
record内容,确保有refID
change
delete
move
|
setIssuenew
检查期刊记录内容,确保有refID。
change
delete
move
|
setCommentnew
检查record内容,确保有refid。
change
delete
move
|
刷新数据库结构 manageDatabase/refreshDatabase结论:三种不同方式的刷新日志xml,刷新的数据库记录在databases元素里,刷新方式记录在refreshStyle元素里。 结构,仅刷新keys与browse
附件: 全部,但不包括新记录模板文件
附件: 全部
附件: 选中重建检索点
实际没有发生配置文件修改时,没有附件。 keys使用容错日志恢复版
附件: |
开馆日历 setCalendarnew
change
delete
|
devolveReaderInfo
一个完整的日志例子,有2册在借
在借册超过10册时,changedEntityRecord元素没有内容,将册xml存储在附件中。
快照方式,移交借阅信息,不会关心源记录是否有在借,仅根据日志中的源记录和目标记录xml进行快照恢复,覆盖系统里的读者记录。 |
hire
hirelate 租金起始日期取当前日期和上次租金失效期之中靠后的一个。
|
foregift
交押金,一条完整样例
退押金样例
|
settlement结算是读者交费后,对违约金记录的进一步处理,只涉及到违约金库的记录,与读者记录没有关系。 action有3种值: 日志格式说明
各操作日志样例结算 settlement
撤消结算 undosettlement
删除结算 delete
|
configChanged修改library.xml配置文件。 action=change这类日志,一般是在内务中调接口修改服务器的library.xml配置文件。目前在恢复日志时,不会被兑现。(todo确认)
action=memory这类日志,一般是没有调接口的情况下,修改了library.xml,然后dp2library自动感应到被修改,产生的日志,目前在恢复时不会兑现。
|
本文介绍 dp2library 中各类型操作日志记录的 XML 格式。
The text was updated successfully, but these errors were encountered: