国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

新一代圖書館開放服務(wù)平臺(tái)FOLIO應(yīng)用實(shí)踐研究

2020-05-13 14:31葉仁杰吳元業(yè)
新世紀(jì)圖書館 2020年2期
關(guān)鍵詞:微服務(wù)

葉仁杰?吳元業(yè)

摘 要 FOLIO是一個(gè)具有發(fā)展前景的新一代圖書館服務(wù)平臺(tái)。本文以深圳大學(xué)圖書館對(duì)FOLIO的應(yīng)用實(shí)踐為例,介紹FOLIO平臺(tái)架構(gòu)、核心網(wǎng)關(guān)OKAPI架構(gòu)及運(yùn)作流程、FOLIO應(yīng)用程式開發(fā)實(shí)踐,致力于為其他高校圖書館提供相關(guān)FOLIO的研究及實(shí)踐經(jīng)驗(yàn)。

關(guān)鍵詞 圖書館開放平臺(tái) FOLIO OKAPI 微服務(wù)

分類號(hào) G250.7

DOI 10.16810/j.cnki.1672-514X.2020.02.007

Research on Application Practice of New Generation Library Service Platform FOLIO

Ye Renjie, Wu Yuanye

Abstract FOLIO is a new generation library service platform with development prospect. Taking the application of FOLIO in Shenzhen University Library as an example, this paper introduces the framework of FOLIO platform, the framework and operation process of OKAPI core gateway, and the development practice of FOLIO application program, aiming to provide other university libraries with relevant researching and practical experience of FOLIO.

Keywords Library service platform. FOLIO. OKAPI. Micro-services.

0 引言

隨著信息技術(shù)在圖書館領(lǐng)域的深化應(yīng)用,信息化建設(shè)的重要性日益凸顯。目前,電子資源在館藏中占據(jù)的比例急劇增長(zhǎng),而傳統(tǒng)的圖書館集成管理系統(tǒng)往往是基于紙本資源設(shè)計(jì)的,無法勝任電子資源采集、加工、保存、發(fā)現(xiàn)及獲取等工作[1]。同時(shí),越來越多的讀者通過圖書館外的機(jī)構(gòu)來獲取信息,圖書館的紙本書流通率與咨詢量越來越低,傳統(tǒng)的圖書館集成管理系統(tǒng)無法滿足讀者的需求和行為方式的變化。圖書館管理系統(tǒng)應(yīng)重新梳理并整合現(xiàn)有資源及業(yè)務(wù),做好讀者及圖書館管理人員的需求調(diào)研工作,利用好信息技術(shù)的發(fā)展,以滿足讀者個(gè)性化的閱讀需求[2]。再者,傳統(tǒng)的圖書館自動(dòng)化集成系統(tǒng)由于系統(tǒng)結(jié)構(gòu)老化、資源分散、孤島系統(tǒng)多及升級(jí)維護(hù)難度高等原因,已無法滿足圖書館管理和服務(wù)的要求變化,理應(yīng)升級(jí)轉(zhuǎn)型成具備資源管理、流程管理及資源發(fā)現(xiàn)功能的新一代圖書館管理系統(tǒng)[3]。平臺(tái)化轉(zhuǎn)型是新一代圖書館管理系統(tǒng)的發(fā)展趨勢(shì)[4],目前,國(guó)內(nèi)暫無產(chǎn)品化的新一代圖書館服務(wù)平臺(tái),而供應(yīng)商開發(fā)的產(chǎn)品封閉且單一,無法滿足圖書館的復(fù)雜業(yè)務(wù)迭代,且國(guó)內(nèi)圖書館的創(chuàng)新驅(qū)動(dòng)力不足,研發(fā)新一代的圖書館開放平臺(tái)需要大規(guī)模的人力、物力投入,因而可從技術(shù)架構(gòu)、產(chǎn)品特點(diǎn)、業(yè)務(wù)功能等多個(gè)方面,對(duì)國(guó)外產(chǎn)品進(jìn)行借鑒[5]。

FOLIO是EBSCO公司在2016年推出的開源圖書館服務(wù)平臺(tái)項(xiàng)目,是一個(gè)以微服務(wù)架構(gòu)為核心、以應(yīng)用程式支持傳統(tǒng)資源管理功能并擴(kuò)展到新領(lǐng)域的創(chuàng)新平臺(tái)。FOLIO具有模塊化、靈活性好、可擴(kuò)展性高及技術(shù)先進(jìn)等特點(diǎn),項(xiàng)目一經(jīng)發(fā)布就受到國(guó)內(nèi)外圖書館界的關(guān)注[6]。本文旨在通過對(duì)FOLIO平臺(tái)應(yīng)用實(shí)踐的研究,為FOLIO平臺(tái)的本地化應(yīng)用,以及符合國(guó)情的新一代圖書館系統(tǒng)的自主研發(fā)提供有益經(jīng)驗(yàn)。

1 FOLIO平臺(tái)國(guó)內(nèi)外研究與應(yīng)用實(shí)踐

FOLIO的建設(shè)理念是圖書館和服務(wù)供應(yīng)商共同研究圖書館的未來發(fā)展及新技術(shù)的應(yīng)用,以社區(qū)協(xié)作為導(dǎo)向,自2016年3月份開源LSP(Library Service Platform,圖書館服務(wù)平臺(tái)) 項(xiàng)目以來,已有來自數(shù)十個(gè)國(guó)家的1000多名成員加入FOLIO社區(qū)。美國(guó)德克薩斯A&M大學(xué)圖書館院長(zhǎng)David Carlson表示,F(xiàn)OLIO不僅改變了圖書館系統(tǒng)的市場(chǎng)環(huán)境,同時(shí)也改變了圖書館與供應(yīng)商之間的關(guān)系,是圖書館系統(tǒng)開發(fā)的一項(xiàng)非凡創(chuàng)舉[7]。目前,芝加哥大學(xué)、杜克大學(xué)、康奈爾大學(xué)等高校圖書館參與FOLIO社區(qū)討論,共同研究新一代圖書館服務(wù)平臺(tái)的發(fā)展方向;Index Data公司致力于電子資源模塊的研發(fā)以及FOLIO架構(gòu)的設(shè)計(jì),為FOLIO平臺(tái)提供技術(shù)支持;Ebsco公司為FOLIO平臺(tái)的發(fā)展提供資金支持,保證項(xiàng)目的有序發(fā)展,同時(shí)還對(duì)項(xiàng)目進(jìn)行計(jì)劃指導(dǎo)和推廣。此外,還有其他社會(huì)組織為FOLIO公司提供技術(shù)支持、托管服務(wù)、軟件開發(fā)等,各界組織協(xié)作構(gòu)建FOLIO平臺(tái),共同打造一個(gè)可持續(xù)、開放的生態(tài)系統(tǒng)。

在國(guó)內(nèi),亦有不少高校圖書館開啟了對(duì)新一代圖書館服務(wù)平臺(tái)的研究及實(shí)踐。重慶大學(xué)圖書館楊新崖等以重慶大學(xué)圖書館為實(shí)證研究案例,提出平臺(tái)化轉(zhuǎn)型是新一代圖書館管理系統(tǒng)的發(fā)展趨勢(shì),其應(yīng)具備平臺(tái)化結(jié)構(gòu)、資源整合及新技術(shù)應(yīng)用的基本特征[4]。北京大學(xué)圖書館劉素清提出,國(guó)外產(chǎn)品的本地化應(yīng)用實(shí)證分析及我國(guó)新一代圖書館系統(tǒng)的研發(fā)實(shí)踐探索,是新一代圖書館系統(tǒng)研究的重要方向,新一代的圖書館系統(tǒng)需要圖書館界攜手系統(tǒng)提供商、信息技術(shù)服務(wù)商等多方共同研發(fā)[5]。廈門大學(xué)圖書館肖錚等對(duì)FOLIO平臺(tái)的系統(tǒng)設(shè)計(jì)及技術(shù)架構(gòu)進(jìn)行研究,認(rèn)為國(guó)內(nèi)圖書館有必要關(guān)注FOLIO、嘗試搭建并進(jìn)行實(shí)踐探索[8-9]。上海圖書館正在搭建基于FOLIO的下一代圖書館服務(wù)平臺(tái)FOLIO項(xiàng)目,并制定了2019、2020的相應(yīng)開發(fā)計(jì)劃。深圳大學(xué)圖書館亦在深入研究FOLIO平臺(tái)與深大圖書館新一代管理系統(tǒng)的整合,目前已完成FOLIO平臺(tái)的本地化構(gòu)建,并與新一代管理系統(tǒng)完成應(yīng)用對(duì)接。CALIS從2017年3月便已開始對(duì)FOLIO的架構(gòu)及核心模塊進(jìn)行研究,目前以FOLIO架構(gòu)為基礎(chǔ)的新一代圖書館服務(wù)平臺(tái)CLSP正在不斷發(fā)展,并組織成立了CLSP建設(shè)聯(lián)盟。CLSP平臺(tái)已于2018年10月發(fā)布,倡導(dǎo)“大”館藏下的“大平臺(tái)”與“大聯(lián)盟”的建設(shè),力求打造符合國(guó)情的開放平臺(tái)和生態(tài)系統(tǒng)[10]。

綜上所述,F(xiàn)OLIO是一個(gè)具有發(fā)展前景的新一代圖書館服務(wù)平臺(tái)。本文以深圳大學(xué)圖書館對(duì)FOLIO的應(yīng)用實(shí)踐為例,介紹FOLIO平臺(tái)架構(gòu)、核心網(wǎng)關(guān)OKAPI架構(gòu)及運(yùn)作流程、FOLIO應(yīng)用程式開發(fā)實(shí)踐,致力于為其他高校圖書館提供相關(guān)FOLIO的研究及實(shí)踐經(jīng)驗(yàn)。

2 FOLIO概述

2.1 FOLIO平臺(tái)簡(jiǎn)介

FOLIO平臺(tái)是一個(gè)供圖書管理員、系統(tǒng)開發(fā)人員及供應(yīng)商協(xié)作的開源平臺(tái),是一個(gè)現(xiàn)代化的技術(shù)生態(tài)系統(tǒng),通過開源應(yīng)用程式建立起可持續(xù)的多方協(xié)作,從而更有效地管理圖書館資源并創(chuàng)造收益。FOLIO項(xiàng)目旨在促進(jìn)可持續(xù)的、以社區(qū)為導(dǎo)向的協(xié)作,積極創(chuàng)建現(xiàn)代技術(shù)生態(tài)系統(tǒng),使圖書館通過開源應(yīng)用程序來管理圖書館資源,發(fā)揮圖書館價(jià)值[6]。

FOLIO平臺(tái)主要具備3大特性。

(1) 模塊化:應(yīng)用之間的交互快速便捷,用戶可以自行選擇所需應(yīng)用,供應(yīng)方和圖書館都可以開源或收費(fèi)共享應(yīng)用。

(2) 靈活性:用戶可以自行選擇平臺(tái)的運(yùn)營(yíng)方式,滿足自己的開發(fā)需求。

(3) 擴(kuò)展性:FOLIO平臺(tái)可輕易拓展各種應(yīng)用系統(tǒng),如校園網(wǎng)、機(jī)構(gòu)庫(kù)、資源發(fā)現(xiàn)等。

2.2 FOLIO平臺(tái)架構(gòu)

FOLIO平臺(tái)架構(gòu)主要由4部分組成。

(1)UI用戶界面層:App的應(yīng)用界面。

(2)APP應(yīng)用層:構(gòu)建、拓展、應(yīng)用各種應(yīng)用程序,如流通、編目等圖書館傳統(tǒng)服務(wù)以及各種個(gè)性化應(yīng)用。

(3)OKAPI網(wǎng)關(guān)層:FOLIO的核心網(wǎng)關(guān),管理和運(yùn)行微服務(wù)。

(4) 系統(tǒng)層:實(shí)現(xiàn)各種基礎(chǔ)業(yè)務(wù)邏輯,包括數(shù)據(jù)庫(kù)配置、數(shù)據(jù)存儲(chǔ)、索引、日志、租戶管理等。

2.3 核心微服務(wù)網(wǎng)關(guān)OKAPI架構(gòu)及運(yùn)作分析

微服務(wù)架構(gòu)是一項(xiàng)在云中部署應(yīng)用和服務(wù)的新技術(shù),是一種將單體應(yīng)用程序作為小型服務(wù)開發(fā)的方法,每個(gè)單體應(yīng)用程式都可以在“自己的程序”中運(yùn)行,并通過“輕量級(jí)設(shè)備與HTTP型API進(jìn)行溝通”[11]。

OKAPI是FOLIO管理和運(yùn)行微服務(wù)的網(wǎng)關(guān),其核心為API網(wǎng)關(guān)模式,由OKAPI代理服務(wù)實(shí)現(xiàn),核心職責(zé)為身份驗(yàn)證、監(jiān)控、負(fù)載平衡、緩存、請(qǐng)求整形和管理及靜態(tài)響應(yīng)處理。OKAPI通過提供具體的Web服務(wù)端點(diǎn)和請(qǐng)求處理的詳細(xì)信息,處理請(qǐng)求和響應(yīng)實(shí)體、狀態(tài)代碼、錯(cuò)誤條件等[12]。OKAPI的架構(gòu)如圖1所示,其核心是3大服務(wù)。

(1) 代理服務(wù) (Proxy Service):管理模塊信息、租戶信息、接口與租戶之間的關(guān)系信息并請(qǐng)求轉(zhuǎn)發(fā)。

(2) 發(fā)現(xiàn)服務(wù)(Discovery Service):管理模塊注冊(cè)及啟動(dòng)信息。

(3) 部署服務(wù) (Deployment Service/Agent):管理模塊運(yùn)行。

其中OKAPI管理模塊分為兩種模式。

(1) 托管模式:OKAPI根據(jù)模塊的描述文件定義的內(nèi)容,啟動(dòng)模塊并通過進(jìn)程ID監(jiān)控模塊的運(yùn)行。

(2) 代理模式:OKAPI僅負(fù)責(zé)請(qǐng)求的轉(zhuǎn)發(fā)。

FOLIO基于描述文件將模塊掛接至OKAPI的代理服務(wù),其描述如下。

(1)ModuleDescriptor.json:描述Module的基本信息(ID,名稱等)、依賴信息、對(duì)外提供的API接口信息、版本信息等。

(2)DeploymentDescriptor.json:描述Module的部署信息。

以應(yīng)用程式(選座日志系統(tǒng)) 為例,一個(gè)完整的OKAPI管理模塊運(yùn)作流程如圖2所示。

(1)通過ModuleDescriptor.json、DeploymentDescriptor.json描述文件配置,使應(yīng)用程式作為一個(gè)獨(dú)立運(yùn)行的模塊托管掛接在OKAPI網(wǎng)關(guān)上。

(2)用戶或模塊之間訪問API時(shí),OKAPI根據(jù)請(qǐng)求者所屬的租客信息驗(yàn)證對(duì)應(yīng)模塊權(quán)限。

(3)OKAPI網(wǎng)關(guān)根據(jù)模塊注冊(cè)的接口信息,向?qū)?yīng)的接口進(jìn)行調(diào)用。

(4)OKAPI網(wǎng)關(guān)接收接口返回的響應(yīng)信息并轉(zhuǎn)發(fā)給發(fā)起請(qǐng)求者。

在應(yīng)用FOLIO前,建議對(duì)OKAPI進(jìn)行部署練習(xí),編譯和運(yùn)行OKAPI提供的測(cè)試示例模塊(如okapi-test-auth-module、okapi-test-module,以及okapi-test-header-module),加深對(duì)OKAPI模塊運(yùn)作流程的理解,并熟悉命令維護(hù)模塊的模式。

3 FOLIO基礎(chǔ)平臺(tái)構(gòu)建

FOLIO基礎(chǔ)平臺(tái)的構(gòu)建需FOLIO自身提供的基礎(chǔ)模塊如下。

OKAPI:API網(wǎng)關(guān),負(fù)責(zé)管理和運(yùn)行微服務(wù)。

mod-authtoken:負(fù)責(zé)過濾所有代理流量并檢查有效令牌模塊。

mod-login:用戶登錄模塊。

mod-permissions:用戶權(quán)限信息模塊。

mod-users:用戶基礎(chǔ)信息管理模塊。

mod-users-bl:以用戶為中心進(jìn)行數(shù)據(jù)簡(jiǎn)單訪問的業(yè)務(wù)邏輯模塊。

通過整合FOLIO平臺(tái)的部署、發(fā)布、配置等命令,配置租戶及用戶的信息描述文件,提取核心命令進(jìn)行封裝,并通過反射機(jī)制,獲取應(yīng)用程式內(nèi)的對(duì)象信息,自動(dòng)生成配置模塊化所需信息描述文件,實(shí)現(xiàn)啟動(dòng)FOLIO平臺(tái)所需命令的深度整合,達(dá)到了“一鍵啟動(dòng)”FOLIO平臺(tái)的效果。其中FOLIO平臺(tái)初始化流程如圖3所示。

在構(gòu)建FOLIO平臺(tái)的過程中,需注意以下幾點(diǎn)。

(1)FOLIO支持使用的數(shù)據(jù)庫(kù)是MongoDB和PostgreSQL,如使用PostgreSQL作為平臺(tái)數(shù)據(jù)庫(kù),其數(shù)據(jù)庫(kù)版本需為9.6.6或以上,否則會(huì)出現(xiàn)pgcrypto插件錯(cuò)誤的問題。

(2) 初始化FOLIO平臺(tái)前,應(yīng)先創(chuàng)建好相應(yīng)的數(shù)據(jù)庫(kù)用戶,并分配其相應(yīng)數(shù)據(jù)庫(kù)權(quán)限,再根據(jù)FOLIO提供的數(shù)據(jù)庫(kù)初始化命令,建立表及相應(yīng)邏輯關(guān)系。

(3) 初始化FOLIO平臺(tái)時(shí),注意在開啟令牌攔截模塊(authtoken)前完成添加租戶及超級(jí)用戶的操作,否則會(huì)出現(xiàn)無法進(jìn)入平臺(tái)的問題。

(4) 編寫一份平臺(tái)啟動(dòng)的命令文件,每添加一個(gè)應(yīng)用程式后只需在該文件上添加相應(yīng)的啟動(dòng)命令,有助于簡(jiǎn)化應(yīng)用程式的拓展及維護(hù)工作。

FOLIO基礎(chǔ)平臺(tái)構(gòu)建完成之后,除了將原有系統(tǒng)的應(yīng)用對(duì)接之外,還可根據(jù)圖書館界不斷變化的業(yè)務(wù)需求,靈活開發(fā)更多的應(yīng)用程式或?qū)痈嗤獠繎?yīng)用程式,進(jìn)一步完成新一代圖書館服務(wù)平臺(tái)的拓展。

4 FOLIO應(yīng)用程式設(shè)計(jì)與實(shí)現(xiàn)

作為一個(gè)平臺(tái)化的圖書館管理系統(tǒng),F(xiàn)OLIO平臺(tái)會(huì)與其他校園應(yīng)用及各種商業(yè)應(yīng)用有著大量的交互。應(yīng)用的描述準(zhǔn)確度、接口的說明文檔質(zhì)量以及各開發(fā)團(tuán)隊(duì)之間的交流效率極大地影響著應(yīng)用之間的交互效率。為此,F(xiàn)OLIO為應(yīng)用程式開發(fā)設(shè)計(jì)了一套規(guī)范化的開發(fā)流程,其核心技術(shù)為微服務(wù)架構(gòu)Vert.x、接口建模語言RAML和代碼自動(dòng)構(gòu)建框架RMB。

Vert.x是一個(gè)輕量、高性能、支持多語言開發(fā)的基于事件和異步的網(wǎng)絡(luò)框架。它基于全異步j(luò)ava服務(wù)器Netty,用非阻塞的異步模型開發(fā)響應(yīng)式和分布式的系統(tǒng)[13],具備以下特性。

(1) 多語言支持:支持使用JVM的主流語言編寫基于Vert.x的應(yīng)用,如java,Javascrpit,Groovy,Ruby等。

(2) 異步無鎖編程:編寫的代碼完全基于異步事件,所有的程序都異步執(zhí)行且通信無阻,不需要再關(guān)注線程的同步、鎖的概念。

(3) 擴(kuò)展性:所有的程序都獨(dú)立運(yùn)行,通過EventBus事件總線,可以輕松編寫分布式解耦應(yīng)用程序。

(4) 成熟的生態(tài)體系:異步驅(qū)動(dòng)已經(jīng)支持Postgres、MySQL、MongoDB、Redis等常用組件,并且有很多在生產(chǎn)環(huán)境中的應(yīng)用案例。

通過Vert.x框架構(gòu)建Folio應(yīng)用程式,使用Vert.x提供的整套模組構(gòu)建響應(yīng)式微服務(wù),可以確保系統(tǒng)的響應(yīng)性、彈性以及高性能。

以微服務(wù)架構(gòu)為核心的項(xiàng)目,服務(wù)的交互眾多,接口的描述及管理尤為重要。RAML(RESTful API Modeling Language)是一種簡(jiǎn)單的RESTful API描述性語言,也是基于YAML和JSON格式定義的API建模語言[14],具備以下特性。

(1)API設(shè)計(jì)直觀:RAML允許以純文本的格式描述API,RAML內(nèi)容對(duì)API的描述完整、格式簡(jiǎn)單,能直觀地了解API的結(jié)構(gòu)和功能,易于學(xué)習(xí)、使用。

(2)API構(gòu)建快捷:通過特定開發(fā)工具,便可依據(jù)設(shè)計(jì)好的API文檔提供服務(wù)。

(3)API測(cè)試準(zhǔn)確: 使用單元測(cè)試可以有效地保證API的準(zhǔn)確性。

(4)API文檔化:RAML設(shè)計(jì)的API,就是一份標(biāo)準(zhǔn)的接口文檔。

(5)API共享性:共享簡(jiǎn)單、多方交流便捷。

通過RAML標(biāo)準(zhǔn)進(jìn)行應(yīng)用程式維護(hù),利用其直觀、快捷、準(zhǔn)確的特性,描述接口文檔的詳細(xì)信息,可以協(xié)助團(tuán)隊(duì)更好地交流協(xié)作。其中,RAML構(gòu)建的信息結(jié)構(gòu)包括以下三種。

(1) 基本信息:描述API的關(guān)鍵內(nèi)容,如名字、標(biāo)題、路徑。

(2) 用戶文檔:描述便于用戶理解的API技術(shù)文檔。

(3) 資源:描述規(guī)范RESTful資源、方法和標(biāo)準(zhǔn)。

微服務(wù)架構(gòu)應(yīng)用RAML建模語言,利用其完整的API設(shè)計(jì)生命周期,能高效便捷地管理應(yīng)用程式。同時(shí)RAML建模語言引入了支持結(jié)構(gòu)化文件和繼承的語言功能,提高了代碼的重用率,解決了跨領(lǐng)域的問題。

RMB框架(Raml-Module-Builder)以RAML標(biāo)準(zhǔn)為驅(qū)動(dòng),自動(dòng)生成接口代碼、接口參數(shù)的實(shí)體類及可視化API說明文檔[15],包含以下工具。

(1)domain-models-api-interfaces:根據(jù)RAML、JSON文件生成Java實(shí)體類和Java接口。

(2)domain-models-api-aspects:驗(yàn)證RAML定義的API規(guī)則。

(3)domain-models-runtime:基于Vert.x的工具庫(kù)。將RAML中定義的接口URL映射到正確的實(shí)現(xiàn)函數(shù),抽象出所有樣板功能,專注于實(shí)現(xiàn)業(yè)務(wù)功能,提供實(shí)現(xiàn)一次性作業(yè)、計(jì)劃任務(wù)的功能。提供工具的(PostgresSQL客戶端等) 使用。

(4)rules:提供Basic Drools功能,模塊開發(fā)人員通過*.drl對(duì)象文件(JSON模式) 創(chuàng)建驗(yàn)證規(guī)則。

通過RMB自動(dòng)構(gòu)建框架,不僅能極大地提高開發(fā)人員的開發(fā)效率,免去繁瑣且重復(fù)的代碼撰寫,規(guī)范的構(gòu)建框架更能保證代碼架構(gòu)及代碼規(guī)范的統(tǒng)一,大大提高開發(fā)團(tuán)隊(duì)人員之間的協(xié)作效率。

5 選座日志應(yīng)用程式的設(shè)計(jì)與實(shí)現(xiàn)

目前深圳大學(xué)圖書館有兩套選座系統(tǒng)。一是由廠商開發(fā)的刷卡系統(tǒng),數(shù)據(jù)存儲(chǔ)在SQL Server 2008上,二是由深圳大學(xué)圖書館自主研發(fā)的微信選座系統(tǒng),數(shù)據(jù)存儲(chǔ)在MySQL上。為了將兩部分的日志數(shù)據(jù)進(jìn)行匯總并實(shí)現(xiàn)查詢和統(tǒng)計(jì)功能,保證數(shù)據(jù)的準(zhǔn)確性及完整性,特以選座日志應(yīng)用程式為例,進(jìn)行基于FOLIO的App設(shè)計(jì)與實(shí)現(xiàn)。

應(yīng)用程式設(shè)計(jì)思路為通過Apache sqoop合并SQL Server和MySQL內(nèi)廠商及深圳大學(xué)圖書館的選座數(shù)據(jù),傳遞至Hadoop的HDFS中,由選座日志應(yīng)用程式對(duì)HDFS中的數(shù)據(jù)進(jìn)行交互,并將返回結(jié)果與LAS4或圖書館應(yīng)用進(jìn)行交互,如圖4所示。應(yīng)用程式的實(shí)現(xiàn)包括以下流程。

(1) 構(gòu)建實(shí)體類schemas。FOLIO實(shí)體類schemas采用JSON格式,以文件名為實(shí)體類名稱,實(shí)體類屬性內(nèi)容包括屬性名、是否必備、屬性類型,屬性的類型可以是Java的。schemas定義了具體的對(duì)象實(shí)體字段,用作返回界面展示結(jié)果。

(2) 通過RAML構(gòu)造API。FOLIO要求文檔按照頭部聲明、文檔描述、實(shí)體類schemas和API路由描述的順序描述API。其中,API路由描述是RAML的核心,路由的內(nèi)容包括API的URI、接口調(diào)用方法、請(qǐng)求參數(shù)和返回結(jié)果。接口請(qǐng)求路徑、請(qǐng)求參數(shù)以及返回參數(shù)等信息由配置文件定義。

(3) 實(shí)現(xiàn)接口邏輯。通過RMB工具對(duì)RAML文件配置的信息進(jìn)行構(gòu)建,生成API接口和參數(shù)實(shí)體,根據(jù)具體業(yè)務(wù)需求,實(shí)現(xiàn)接口邏輯。

(4) 完成配置。通過將“選座日志系統(tǒng)”的模塊描述文件發(fā)送至已在運(yùn)行的FOLIO平臺(tái),完成應(yīng)用程式向FOLIO平臺(tái)的配置。

FOLIO平臺(tái)應(yīng)用拓展后會(huì)有大量的應(yīng)用程式交互,RMB自動(dòng)構(gòu)建代碼程序以RAML文件為驅(qū)動(dòng)生成代碼,應(yīng)用程式接口應(yīng)嚴(yán)格遵循RAML文件的編寫規(guī)范,在命名規(guī)范上建議以項(xiàng)目、模塊以及功能劃分,以防止因?yàn)閼?yīng)用程式接口路徑重復(fù),導(dǎo)致OKAPI服務(wù)崩潰的情況出現(xiàn)。配置模塊時(shí)應(yīng)在該應(yīng)用程式的目錄下保留一份部署命令文件、刪除命令文件,使后期對(duì)應(yīng)用程式的更新維護(hù)工作更加簡(jiǎn)單高效。對(duì)應(yīng)用程式的配置及調(diào)試建議使用網(wǎng)頁調(diào)試工具(如Postman),通過網(wǎng)頁調(diào)試工具進(jìn)行HTTP請(qǐng)求不僅能減少命令語句的編寫,更能直觀獲取OKAPI服務(wù)對(duì)應(yīng)用程式返回的響應(yīng)信息,優(yōu)化應(yīng)用程式的開發(fā)過程。

目前,深圳大學(xué)圖書館新一代圖書館系統(tǒng)LAS4已完成與FOLIO平臺(tái)的對(duì)接,并正式應(yīng)用。原有的圖書館業(yè)務(wù),如編目、流通、期刊、典藏統(tǒng)計(jì)等基礎(chǔ)性功能模塊穩(wěn)定運(yùn)作。其余拓展性功能模塊如統(tǒng)一認(rèn)證、存包柜、門禁、自助借書機(jī)、座位管理及選座日志系統(tǒng)等服務(wù)也已經(jīng)集成應(yīng)用。

其中,選座日志系統(tǒng)是一個(gè)完整的以FOLIO建模流程開發(fā)的應(yīng)用程式。作為一個(gè)對(duì)接到FOLIO平臺(tái)的模塊,選座日志系統(tǒng)將廠商的數(shù)據(jù)以及微信選座系統(tǒng)的數(shù)據(jù)進(jìn)行匯總,并提供接口,LAS4對(duì)注冊(cè)的接口進(jìn)行調(diào)用,OKAPI網(wǎng)關(guān)接收請(qǐng)求并將數(shù)據(jù)返回至LAS4完成交互。數(shù)據(jù)統(tǒng)計(jì)匯總查詢效果如圖5所示。

6 展望及建議

通過對(duì)FOLIO的探索及實(shí)踐,可以為新一代圖書館系統(tǒng)的系統(tǒng)設(shè)計(jì)、技術(shù)架構(gòu)提供有益參考?;贔OLIO設(shè)計(jì)的開發(fā)流程,能夠提高團(tuán)隊(duì)協(xié)作效率,加速團(tuán)隊(duì)與團(tuán)隊(duì)之間的交流,快速準(zhǔn)確地完成應(yīng)用程式的開發(fā)應(yīng)用,滿足圖書館更多的業(yè)務(wù)需求迭代,為將來的拓展打下堅(jiān)實(shí)的基礎(chǔ)。今后,深圳大學(xué)圖書館計(jì)劃繼續(xù)深入研究FOLIO平臺(tái)的底層架構(gòu),優(yōu)化并完善FOLIO平臺(tái)的模塊管理功能,統(tǒng)一基本術(shù)語的描述,重新梳理模塊的功能定義,進(jìn)一步對(duì)需求文檔進(jìn)行完善。

如今,CALIS引導(dǎo)的CLSP聯(lián)盟正在不斷完善CLSP平臺(tái),積極建設(shè)中國(guó)FOLIO/CLSP社區(qū)。深圳大學(xué)圖書館在現(xiàn)有項(xiàng)目成果的基礎(chǔ)上,將不斷探索FOLIO架構(gòu)的更深領(lǐng)域,并繼續(xù)完善現(xiàn)有功能模塊和業(yè)務(wù)。上海圖書館也在積極探索FOLIO架構(gòu),構(gòu)建下一代圖書館服務(wù)平臺(tái)FOLIO項(xiàng)目,同時(shí)也在進(jìn)行FOLIO平臺(tái)的漢化工作。希望在CALIS的引導(dǎo)下,國(guó)內(nèi)更多的高校能抓住這一趨勢(shì)與機(jī)遇,積極參與新一代圖書館系統(tǒng)的建設(shè),加速學(xué)習(xí)FOLIO平臺(tái)并進(jìn)行應(yīng)用實(shí)踐,開發(fā)自身優(yōu)勢(shì)產(chǎn)品,加強(qiáng)技術(shù)交流,合作互補(bǔ),攜手共建中國(guó)高校圖書館自己的開放、個(gè)性、先進(jìn)的新一代圖書館平臺(tái)。

參考文獻(xiàn):

周義剛,聶華.新一代圖書館服務(wù)平臺(tái)調(diào)研及思考:基于北京大學(xué)圖書館的需求[J].圖書情報(bào)工作,2019,38(2):9-12.

許天才,楊新涯.新一代圖書館管理系統(tǒng)的發(fā)展現(xiàn)狀與趨勢(shì):2016年教育部高校圖工委信息技術(shù)應(yīng)用工作年會(huì)綜述[J].大學(xué)圖書館學(xué)報(bào),2016(6):5-9.

殷紅,劉煒.新一代圖書館服務(wù)系統(tǒng):功能評(píng)價(jià)與愿景展望[J].中國(guó)圖書館學(xué)報(bào),2013,39(5):26-33.

楊新崖,袁輝,沈敏.向服務(wù)平臺(tái)轉(zhuǎn)型的下一代圖書館管理系統(tǒng)實(shí)踐研究[J].圖書館雜志,2015(9):23-27.

劉素清.基于用戶館體驗(yàn)視角的圖書館服務(wù)平臺(tái)選擇思考[J].圖書情報(bào)工作,2015,62(14):49-53.

FOLIO[EB/OL].[2019-08-24]. https://www.folio.org/.

開源圖書館平臺(tái)FOLIO[EB/OL].[2019-06-24]. https:

//www.edustack.org/2019/04/13/folio/.

肖錚,林俊偉,陳麗娟.下一代圖書館開放服務(wù)平臺(tái)FOLIO初探[J].圖書館學(xué)研究,2018(15):34-38.

肖錚,林俊偉.用微服務(wù)構(gòu)架下一代圖書館服務(wù)平臺(tái):以FOLIO為例[J].圖書館雜志,2018(11):63-69.

CALIS新一代圖書館服務(wù)平臺(tái)建設(shè)聯(lián)盟[EB/OL].[2019-08-24].http://community.calis.edu.cn/index.html.

王磊.微服務(wù)架構(gòu)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2016:37-70.

OKAPI[EB/OL].[2019-08-24].https://github.com/folio-org/okapi/blob/master/doc/guide.md.

Vert.x[EB/OL].[2019-08-24].https://vertx.io.

The simplest way to design APIS[EB/OL].[2019-08-24].https://raml.org.

Raml-Module-Builder[EB/OL].[2019-08-24].https://github.com/folio-org/raml-module-builder.

葉仁杰 深圳大學(xué)圖書館館員。 廣東深圳,518060。

吳元業(yè) 深圳大學(xué)圖書館館員。 廣東深圳,518060。

(收稿日期:2019-09-05 編校:陳安琪,曹曉文)

猜你喜歡
微服務(wù)
數(shù)字文化館建設(shè)中的“微服務(wù)”
基于微服務(wù)架構(gòu)的日志系統(tǒng)
微服務(wù)架構(gòu)及相應(yīng)云平臺(tái)解析
基于供給側(cè)改革理論的圖書館社交網(wǎng)絡(luò)微服務(wù)研究
微信公眾平臺(tái)在醫(yī)院圖書館的應(yīng)用現(xiàn)狀調(diào)查
基于微信企業(yè)號(hào)的校園移動(dòng)服務(wù)
從單一模式系統(tǒng)架構(gòu)往微服務(wù)架構(gòu)遷移轉(zhuǎn)化技術(shù)研究
基于微信公眾平臺(tái)的高校圖書館微服務(wù)現(xiàn)狀及對(duì)策
微媒體時(shí)代高校圖書館閱讀推廣微服務(wù)探析
萬科開啟“微服務(wù)”時(shí)代
高碑店市| 法库县| 涿鹿县| 石狮市| 绥中县| 乌鲁木齐市| 读书| 平远县| 卢氏县| 铜川市| 山阴县| 绍兴市| 南宁市| 米林县| 隆林| 绥芬河市| 蒲城县| 阿坝县| 宜宾市| 仁布县| 昭苏县| 翁牛特旗| 南汇区| 和顺县| 乳源| 潮州市| 广宗县| 眉山市| 尚志市| 千阳县| 连江县| 九龙县| 循化| 登封市| 黎城县| 漳州市| 雅江县| 商南县| 康乐县| 师宗县| 冕宁县|