廣州大學圖書館與廣州大學城一卡通系統應用集成的實現
文章出處:http://www.nyfzw.net 作者: 人氣: 發表時間:2011年09月16日
摘要:以廣州大學圖書館與廣州大學城一卡通的系統應用集成為例,介紹在不修改圖書館現有系統的前提下,如何實現與一卡通系統進行集成。簡單介紹要解決的問題,重點對所采取的解決方案、在實現過程中所用到的主要技術及關鍵問題如何實現等幾方面進行介紹。
隨著信息技術的發展,計算機技術在圖書館中的應用從廣度和深度上都有了很大的提高,從深度上來說,圖書館應用從以前單純的采、編、流、檢的集成管理系統,發展成為數字圖書館、門禁、機房管理、網上參考咨詢、外采管理等多種系統;從廣度來說,圖書館的內部各系統間有關聯,并且和館外系統(如財務報賬、一卡通等)也有著密切的關系。但目前的各種系統都是各自開發、購買,沒有統一的接口、標準,這就造成了各系統間不能做到互通、互聯,實現資源共享。如何將這些系統有機地聯系起來,充分發揮它們的功能,是目前圖書館現代化進一步發展所要解決的重要問題之一。本文實現了廣州大學圖書館的ILAS Ⅱ圖書館集成管理系統、北京圣安機房管理系統、上海華銘門禁管理系統與廣州大學城一卡通系統的應用集成。
1 需要解決的問題
1.1 身份識別號的讀取
廣州大學圖書館有兩萬多讀者,讀者主要是本校教職員工和學生。目前教職員工以工作證號(一卡通卡上是“編號”)作為在圖書館的讀者號,學生以學號(一卡通卡上是“編號”)作為在圖書館的讀者號。在進行借還、查詢借還情況及使用電子閱覽室計算機等服務時,系統都要求讀入讀者號,而ILASⅡ及機房管理等現有系統都不具備直接讀取一卡通卡上信息的功能。所以要實現廣州大學圖書館系統與一卡通集成,要解決的首要問題就是從一卡通卡中讀出該讀者的讀者號,即卡上的“編號”內容;同時還要進行該卡的有效性驗證。
1.2 數據同步更新
廣州大學圖書館管理系統的數據要根據一卡通系統及時進行數據同步,主要是ILASⅡ、機房管理及門禁等系統的讀者數據與一卡通系統中的廣州大學用戶數據進行同步。當學校師生在一卡通系統中有新辦卡、掛失、停用等數據變動時,要求在廣州大學圖書館對應的系統中進行相應的數據變動。例如:新生辦卡后,在ILASⅡ系統中要新增該新生的讀者記錄;卡信息發生變動(如修改編號、姓名等)后,要在ILASⅡ系統中修改相應的讀者記錄對應內容;卡掛失后,要在ILASⅡ系統中將相應的讀者記錄設置成掛失狀態;以及掛失后的重新開通等。
2 集成解決方案
要解決廣州大學圖書館現有系統與一卡通系統的集成,筆者首先想到的方法是修改廣州大學圖書館的現有系統,使它們可以讀取一卡通數據,并且可以與一卡通系統進行數據同步。但由于ILASⅡ、圣安機房管理等要進行集成的系統都是外購系統,都不提供源程序或擴展編程接口;如要進行以上修改必需請對應公司完成,這樣從費用及時間上都會有一定問題。
筆者對廣州大學圖書館各系統及一卡通系統進行詳細分析后,結合廣州大學圖書館的具體情況,決定不修改現有系統,而采用自行開發附加程序的方案實現這些系統的集成。廣州大學圖書館一卡通集成系統主要由讀卡和數據同步兩個程序組成,這兩個程序都是通過一卡通系統提供的第三方接入子系統從一卡通系統讀取所需數據。各系統之間的結構見圖1,各系統之間的關系見圖2。采用這一方案的優點是節省資金、通用性強。讀卡和數據同步這兩個程序都可以設置成當Windows啟動后自動運行;運行后自動最小化成Windows任務欄右下角的托盤小圖標,以后臺方式運行,不影響其它系統操作;雙擊圖標可以顯示參數設置、操作界面,進行手工操作。這兩個程序都是用Delphi開發完成,用MSSQLServer作為數據庫服務器。
圖1 一卡通集成系統結構圖
圖2 一卡通集成系統關系圖
3 一卡通系統第三方接入子系統API的使用
開始使用時,需要調用TA_Init()函數初始化動態庫,如果不需要對卡內容進行讀寫操作,而只是讀卡片的序列號,則不需要調用TA_Init()函數。
程序調用需要讀寫卡操作的函數時,必須首先調用TA_CRInit()函數對讀卡器進行初始化,當程序不再使用讀卡器時,需要調用TA_CRClose()關閉讀卡器。
調用TA_CRBeep()可使讀卡器發出蜂鳴,作為讀卡出錯等信息提示。
調用TA_ReadCard()可以直接從卡中讀出用戶信息并檢驗白名單,判斷卡片的有效性。
調用TA_InqAcc()根據賬號、卡號、學工號或證件號4個查詢條件中的一個,從服務器中精確查詢用戶信息。
調用TA_HazyInqAcc(),可以根據查詢條件(可以是姓名、部門代碼、性別、學號、身份代碼)模糊查詢賬戶信息,如查詢條件為空,表示查詢全部的賬戶信息;查詢結果返回的文件保存在RecvTemp目錄下。
用戶信息,通過TA_ReadCard()、TA_InqAcc()、TA_HazyInqAcc()可以得到,用戶信息的主要內容結構如下:
其中Flag幾個主要字節代表的意義如下:
Flag[0]:身份信息變更標志:0-沒變更,1-已變更;
Flag[1]:卡狀態:0-正常,1-預開戶,2-預銷戶,3-申請賬號;
Flag[2]:掛失:0-正常卡,1-掛失;
Flag[3]:凍結標志:0-正常,1-凍結。
通過TA_DownControlFile()可以下載控制文件,控制文件以Control.bin為文件名保存在ControlFile目錄中。控制文件包括部門組織表、身份代碼表、校區代碼表等系統編碼信息。
通過TA_ExtractConFile()可以導出控制文件中的內容,將編碼信息導出成各列用“,”號分隔的文本文件。
4 讀卡程序的實現
4.1 讀卡程序的功能及操作流程
可以用讀卡程序解決身份識別號(即讀者號)的讀取。該程序啟動后自動最小化成Windows系統的托盤圖標,以后臺方式運行;雙擊該圖標可顯示它的設置界面(見圖3)。對于要從卡上讀取讀者號的系統就不需作任何修改,只要在該計算機上運行該讀卡程序,接上一卡通USB讀卡器便可。
圖3 讀卡程序界面
該程序的主要功能及操作流程:
(1)初始化:該程序運行后首先讀取系統設置參數,然后初始化一卡通第三方接入動態庫、讀卡器。初始化成功后就進入監測狀態,隨時檢測一卡通讀卡器,如果有卡則進行讀卡處理。
(2)讀卡處理:當讀者將一卡通卡放在讀卡器感應區時,自動讀出該卡上的信息;讀卡成功后,根據設置進行有效性檢測;如果該卡有效,就仿真鍵盤輸入該讀者號,實現將該讀者號輸入到對應系統的輸入框。卡的有效性主要是通過檢測該卡的狀態是否正常、是否已掛失、是否被凍結,該卡是否為已丟失卡等。因有效性檢測一定要讀取一卡通服務器數據,如果一卡通服務器或網絡出現故障,就不能有效讀卡;所以,通過設置可臨時停用該功能,保證在一卡通系統出現故障時,不影響本館業務。該程序還可根據設置,實現在輸入編號之前、之后加上指定的字符,以此實現一些特殊的功能,例如:可以實現輸入讀者號前刪除原來的讀者號、輸入讀者號后自動加回車等功能。
4.2 使用掛鉤(Hook)實現鍵盤仿真函數
鍵盤仿真函數的功能是模仿用戶用鍵盤在當前活動窗口中輸入某一個字符串。在VisualBasis中有SendKeys()函數實現該功能,在Delphi中則沒有直接實現該功能的相應函數,但可以使用掛鉤實現(因無法知道發送消息窗口的句柄,所以不能直接發送wm_KeyDowm、wm_KeyUp消息實現)。程序員使用掛鉤能控制Windows系統事件的發生和處理,它能預演和修改系統事件和消息,并且能在系統范圍內阻止系統事件和消息的發生。鍵盤仿真函數就是使用WH_JOURNALPLAYBACK類型的掛鉤,在系統的消息隊列中插入一系列的按鍵事件[1]。
SendKeys()函數的處理過程如下:將傳入的字符串分解成一系列的系統按鍵消息,組成消息列表;通過SetWindowsHookEx()設置掛鉤;使用掛鉤CallNextHookEx()將生成的消息列表依次發送到Windows的系統消息隊列中,實現鍵盤仿真輸入字符串;結束時用UnHookWindowsHookEx()釋放掛鉤。通過鍵盤輸入一個字符,其實就向系統發送多個系統消息。例如:鍵盤輸入A就對應了“A”鍵的wm_KeyDown、wm_KeyUp兩個系統消息;鍵盤輸入 +A就對應了鍵的wm_SysKeyDown,“A”鍵的wm_KeyDown、wm_KeyUp,鍵的wm_SysKeyUp這4個系統消息。生成系統按鍵消息時要用到對應字符的虛擬碼和鍵盤掃描碼,虛擬碼可以通過KeyDefs單元映射得到,通過Win32API的MapVirtralKey()函數,可將字符的虛擬碼轉換成鍵盤掃描碼。
5 數據同步程序的實現
5.1 數據同步程序的功能及操作流程
用數據同步程序實現廣州大學圖書館的系統,并根據一卡通系統數據進行同步更新。該程序啟動后自動最小化成Windows系統的托盤圖標,以后臺方式運行;雙擊該圖標可顯示它的設置及操作界面,如圖4所示。該程序可手工方式進行數據同步,也可以按照設定的時間自動進行數據同步。該程序的主要功能及操作流程:
(1)初始化:該程序運行后首先讀取系統設置參數,然后初始化一卡通第三方接入動態庫等;初始化參數包括一卡通第三方接入系統地址、數據庫連接信息、是否自動同步、自動同步的時間等信息。初始化成功后該程序就進入監測狀態,當設置了自動同步并到達了指定的時間,就會自動進行數據下載、數據同步等操作。
(2)一卡通用戶數據下載:可以手工下載基礎數據,自動或手工下載用戶數據。
圖4 數據同步程序界面
(3)數據同步:因為ILASⅡ系統使用的是專用數據庫,不向外提供編程接口,所以ILASⅡ系統的數據同步要手工定期參與;而機房和門禁管理系統則是使用MSSQLServer數據庫,可直接對對應的數據庫中的表內容進行操作,所以這兩個系統的數據同步可根據需要,按設置的時間、次數每天自動進行。
第1頁第2頁 |