dp2
dp2 copied to clipboard
dp2ssl 自动感知 library.xml 中 rfid 元素变化
最新版 dp2ssl 增加了自动感知 dp2library 一端 library.xml 文件变化的功能,当感知到文件中 rfid 元素变化时,会触发一次读者记录和册记录的全量下载同步。这种感知是通过拉取 dp2library 操作日志实现的。
最新版 dp2library 为此增加了一种操作日志动作 configChanged。
测试要点:
- dp2ssl 的配置画面应该有菜单可以手动触发读者记录或者册记录的全量下载同步。
- dp2ssl 会把获得的 library.xml 文件中的 rfid 内容保存到本地 settings.xml 文件内,当从拉取的操作日志中得知 rfid 元素内容可能发生变化后,会用 GetSystemParameter() API 获得一次 rfid 元素内容,把最新得到的内容和上次保存到本地的内容进行比较,当发现真的发生了改变,才会触发一次读者和册记录的全量下载同步。 也就是说,当 dp2ssl 退出以后,再重新启动,它能记住上一次获取的 rfid 元素内容,并可以随时用于和更新的内容比较。
- dp2library 会在两种情况下产生 configChanged 操作日志记录。第一种是 dp2library 启动的时候。注意此时 rfid 元素等内容可能并没有发生改变。第二种是当 library.xml 文件内容被修改的时候(不一定是通过 API 修改,也有可能是被 Windows 记事本这样的文本编辑器直接修改)
- dp2ssl 触发全量同步的时候,可能正在有一次读者或册记录全量同步正在进行中。触发同步,会自动打断前一次同步,并启动新一次从头同步。 册记录全量同步功能,原本有个能力就是,已经同步了几个实体库,但中断了,剩下另外几个实体库没有来得及同步。那么下次自动继续全量同步,会只做剩下的几个实体库的同步。注意,当触发全量同步的时候,程序故意压制了这种能力,重做同步的时候是从头做全部实体库的同步,不管上次是否有剩下的实体库名字列表。
- dp2ssl 在全量同步的时候,会有语音播报过程。但语音念得较慢,有可能实际上已经做完了但语音还在播报。另外还可以直接从 dp2ssl 的当日错误日志文件中查看全量同步的进程。
- 除了通过拉取 dp2library 操作日志自动感知 rfid 元素变化外,dp2ssl 每次进入参数配置对话框并结束退出的时刻,也会自动检查一次 rfid 元素是否有变化。如果觉得等待自动拉取 dp2library 操作日志的过程间隔太长,可以用参数配置对话框打开关闭来进行触发测试。 另外,全量同步和拉取 dp2library 操作日志是在同一个线程中线性先后执行的,所以当正在进行全量同步的时候,(拉取操作日志)是不会探测到 rfid 变化的。但上述打开关闭参数配置对话框能探测。可以组合起来,观察上一次全量同步被后一次打断的效果,看看是不是真的打断和重新开始了。
- dp2ssl 利用点对点消息敏感获取 dp2library 操作日志变化的情况下可以立刻感知到操作日志动作;但非敏感情况下,是 10 分钟主动去拉取一次 dp2library 操作日志。
- 内务的日志窗可以观察 configChanged 操作日志动作。注意日志中 changedElements 元素列出了发生变化的一级元素名,注意核对一下是否正确。