欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 119

点击:21410[回复顶层] [树状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 1 楼
文章id: 119
将dt1000流通数据升级到dp2系统 开发进展

作者: xietao


程序名叫做upgradedt1000loan.exe


发表时间: 2006-08-26 22:54:52



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 2 楼
文章id: 120
书目数据转换窗口

作者: xietao


书目数据转换窗口,用于将dt1000的MARC格式书目数据,转换成dp2系统的XML格式数据,进入对应的书目库;同时,把MARC格式书目数据中的906和986字段中的册信息,拆分为若干实体XML记录存入dp2系统的实体库。

===

编程中感到比较不爽的是,dt1000书目数据986字段中,$t子字段为“应还书日期”,而缺乏“借阅日期”信息。而dt1000读者数据的986字段中,除了有“应还书日期”外(在$v子字段中),还有“借阅日期”(在$t子字段中)。这就意味着,在单独一轮升级书目数据的过程中,缺乏足够的信息来创建完整的dp2实体记录,而要等到读者数据也升级后,专门用一轮交叉处理来重写、增补dp2实体记录的某些信息。

从上面也可以看出,在设计dt1000书目数据和读者数据的时候,碰巧两个有关的字段的字段名都设计成了986,但是同样叫$t子字段,含义却不同,容易引起误会,这是一个遗憾。

===

保存书目记录:

MARC书目记录按照UNIMARC或USMARC格式转换为MARCXML格式。全部MARC字段都得到保留。自然,其中的dt1000扩充的906/986等字段,仅仅起到参考的作用,今后dp2软件不会再更新这些字段。保存记录到dp2系统的时候,是追加方式。这就要求批处理前,必须先清空dp2书目库。保存成功后,可以获得实际存入的dp2记录id号。

创建实体记录的步骤:

1) 将MARC数据中的906和986字段按照册条码或登录号合并。如果没有册条码的,按照登录号进行判重。如果某册信息发生重复,以986的信息为准。 

2) 根据MARC数据中的信息,创建实体XML记录。

<parent> -- 父记录id: 根据先前追加存入dp2书目库中获得记录id。

<barcode> -- 册条码:从子字段组中$a获得。

<registerNo> -- 登录号:从子字段组中$h获得。这是本次新增的元素。

<state> -- 状态:暂空白。

<location> -- 馆藏地点:从子字段组中$b获得。

<price> -- 价格:从子字段组中$d获得。如果从$d中获得的价格内容为空,则从982$b中获得。

<bookType> -- 图书册类型:从子字段组中$f获得。如果$f中获得的图书册类型内容为空,则从982$a中获得。

<comment> -- 注释:从子字段组中$z获得。

<borrower> -- 借阅者:从子字段组中$r获得。

<borrowDate> -- 借阅日期:从子字段组中$t获得。长度要求为8字符。转换为RFC1123格式。本来,$t为应还日期,但是由于dt1000书目册信息中缺乏借阅日期,所以只好用此应还日期来充作“借阅日期”,并且把借阅期限设置为1天,相当于应还日期的第二天。

<borrowPeriod> -- 借阅期限:象征性设置为1天,即“1day”。

<mergeComment> -- 增补注释:关于从906字段增补过来的册信息这一情形的注释。属于临时性注释,并未纳入dp2系统的正式信息元素。



发表时间: 2006-08-26 23:01:08
最后修改时间: 2006-08-27 16:09:32



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 3 楼
文章id: 121
读者数据转换窗口

作者: xietao


读者数据转换窗口,用于将dt1000的MARC格式读者数据,转换成dp2系统的XML格式读者数据,进入对应的读者库。 

 

===

根据MARC数据中的读者信息,创建实体XML记录

<barcode> -- 读者证条码:从MARC记录中的100$a获得。

<password> -- 密码:从MARC记录中的080$a获得。dt1000读者数据中的密码为明码,而转换到dp2读者记录中后,需要转换为hash码。

<readerType> -- 读者类型:从MARC记录中的110$a获得。

<createDate> -- 发证日期:dt1000读者信息中缺此项。保持空白。

<expireDate> -- 失效期:从MARC记录中的110$d获得。需要从8字符格式转换为RFC1123格式。

<state> -- 停借原因:从MARC记录中的982$b获得。此元素为本次新增元素。如果读者证状态正常,就不应有此元素或者保持此元素的文本内容为空。

<name> -- 姓名:从MARC记录中的200$a获得。

<namePinyin> -- 姓名拼音:从MARC记录的200$A获得。这是本次新增的元素。

<gender> -- 性别:从MARC记录的200$d获得。

<bornDate> -- 生日:dt1000读者记录中缺乏此信息。保持空白。

<idCardNumber> -- 身份证号:dt1000读者记录中缺乏此信息。保持空白。

<department> -- 单位:从MARC记录的300$a中获得。

<address> -- 通信地址:从MARC记录的400$b中获得。

<zipcode> -- 邮政编码:从MARC记录的400$a中获得。

<tel> -- 电话:从MARC记录的300$b中获得。

<email> -- Email地址:dt1000读者记录中缺乏此信息。保持空白。

---

<borrows> -- 借阅信息(集合)。该元素下可有若干<borrow>元素,每个<borrow>元素表示一册图书的借阅信息。

<borrow> -- 借阅信息(单册):从MARC记录的986字段中的一个子字段组获得。该元素有若干属性:

barcode属性 -- 册条码:从子字段组$a中获得。

borrowDate属性 -- 借阅日期:从子字段组$t中获得。需要从8字符格式转换为RFC1123格式。

no属性 -- 续借次数:从子字段组$y中获得。表示续借次数。1表示?

borrowPeriod属性 -- 借阅期限:子字段组中$v为应还日期,根据它和借阅日期$t计算出借阅期限。也许这个借阅期限不是很准确,因为可能dt1000的应还日期是按照还书日越过了非工作日计算出来的,而dp2的借阅期限是不考虑工作日和非工作日的。 这个计算出来的借阅期限可能偏长。

---

<overdues> -- 超期罚款信息(集合)。该元素下可有若干<overdue>元素,每个<overdue>元素表示一册图书的超期罚款信息。

<overdue> -- 超期罚款信息(单册):从MARC记录的988字段中的一个子字段组获得。该元素有若干属性:

barcode属性 -- 册条码:从子字段组中$a获得。

borrowDate属性 -- 借阅日期:从子字段组中$e获得。需要从8字符格式转换为RFC1123格式。

returnDate属性 -- 应还日期:从子字段组中$t获得。需要从8字符格式转换为RFC1123格式。这里设计放应还日期,而不是放借阅期限,是因为超期罚款字段处理的是已经还回的、有超期情况的册,而尚未还回的、已处于超期状态的册,不在超期罚款字段处理之列。

borrowPeriod属性 -- 借阅期限:这是dp2系统中应有的信息。但是在dt1000的读者记录988字段中缺乏这个信息。所以只好空缺。好在缺乏这个信息,并不影响超期罚款字段的主要功能:收缴罚款、阻止缴罚款前读者后续的借阅,只是少了有关借阅期限的参考信息。

price属性 -- 罚款额:从子字段组中$c获得。这是为dt1000数据升级而专门增补的属性。而在dp2系统中,一般采用的是通过over属性(超期时间)和罚款政策动态计算款额的办法。这样,dp2系统的罚款款额获得办法,就变成了两个:如果有price属性,就用它;如果没有,就用over属性结合其他信息计算出来。

type属性 -- 罚款类型:从子字段组中$b获得。其值有“罚金”“租金”“赔偿”等等。这是因为升级dt1000数据而则增补的属性。

---

<reservations> -- 预约信息(集合)。该元素下可有若干<request>元素,每个<request>元素表示一个独立的预约请求。

<request> -- 预约请求:从MARC记录的984字段中的一个子字段组获得。该元素有若干属性:

items属性 -- 预约的册条码列表:从子字段组中$a获得。dt1000的984字段中每个子字段组只是表示了对一册的预约,当作一个独立的预约请求;而dp2中,可以把多个册条码组合为一个独立的预约请求,当其中任何一个册到达时,预约请求就算满足了,该请求就会被整体处理,多余的其他册条码也即将被一同消除,不再发生作用。所以,从dt1000升级上来的数据,只是用到了dp2系统的一种可能:预约的册条码列表中只有一个条码。

requestDate -- 请求的日期:从子字段组中$b获得。需要从8字符格式转换为RFC1123格式。

注:子字段组中的$c为到书日期。升级软件如果发现一个子字段组有这个子字段,就会跳过这个子字段组,不把其升级到dp2系统中。这样就避免了对已到预约册的升级处理,软件会简单一些。

在后面的交叉处理过程中,需要根据读者记录中的预约请求信息,对相关的实体记录进行信息增补处理。



发表时间: 2006-08-27 22:27:53
最后修改时间: 2006-08-28 12:01:59



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 4 楼
文章id: 257
dt1000到dt2000数据升级过程中的问题

作者: (访客)www


从dt1000到dt2000数据升级过程中,如果停止了,下次能不能从上次倒入的数据接着倒数据?

如这次读者数据只倒了5000条,下次能不能重5001条开始?



发表时间: 2008-06-03 21:05:10
页 1 / 1
 

在线用户
(无) 
当前栏目在线用户数 0, 总在线用户数 0