龔永罡 吳 萌* 廉小親 田潤(rùn)琳 夏 天
1(北京工商大學(xué)計(jì)算機(jī)與信息工程學(xué)院食品安全大數(shù)據(jù)技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室 北京 100048)2(中國(guó)人民大學(xué)信息資源管理學(xué)院 北京 100872)
繼國(guó)務(wù)院2009年發(fā)布《政府信息公開目錄系統(tǒng)實(shí)施指引》后,2016年國(guó)務(wù)院更進(jìn)一步推進(jìn)了決策、執(zhí)行、管理、服務(wù)、結(jié)果公開,加強(qiáng)政策解讀、回應(yīng)社會(huì)關(guān)切、公開平臺(tái)建設(shè)等工作[1],要求在2018年底前,國(guó)務(wù)院各部門應(yīng)全面完成本部門本系統(tǒng)主動(dòng)公開基本目錄的編制工作,并動(dòng)態(tài)更新,每年要對(duì)未公開的信息以及依申請(qǐng)公開較為集中的信息進(jìn)行全面自查,各級(jí)政府辦公廳要定期抽查,對(duì)發(fā)現(xiàn)的應(yīng)公開未公開等問題要及時(shí)督促整改,嚴(yán)格落實(shí)公開前保密審查機(jī)制,妥善處理好政務(wù)公開與保守國(guó)家秘密的關(guān)系,不斷提升主動(dòng)公開的標(biāo)準(zhǔn)化和規(guī)范化水平[2]。因此,開發(fā)一個(gè)規(guī)范標(biāo)準(zhǔn),便于維護(hù)的政府信息公開系統(tǒng),是各級(jí)政府網(wǎng)站宣傳部門的一個(gè)很重要的工作。
公開信息大多是公文和附件等非結(jié)構(gòu)化文檔,傳統(tǒng)基于數(shù)據(jù)庫(kù)與文件系統(tǒng)的開發(fā)方式工作量大、開發(fā)周期長(zhǎng)、過程復(fù)雜、維護(hù)困難。針對(duì)這一難題,本文提出了一種基于內(nèi)容庫(kù)來(lái)開發(fā)政府信息公開系統(tǒng)的新方案。信息公開的非結(jié)構(gòu)化文檔存儲(chǔ)在內(nèi)容庫(kù)中,由內(nèi)容庫(kù)負(fù)責(zé)它的存儲(chǔ)和管理。公開系統(tǒng)依據(jù)功能要求,通過內(nèi)容庫(kù)的標(biāo)準(zhǔn)CMIS接口來(lái)實(shí)現(xiàn)公開系統(tǒng)的各項(xiàng)功能。新方案降低了文檔管理和文檔使用之間的耦合度,減小了開發(fā)難度,降低了開發(fā)周期和維護(hù)成本。
關(guān)系型數(shù)據(jù)庫(kù)中存儲(chǔ)和管理的是二維結(jié)構(gòu)的表對(duì)象。不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),內(nèi)容庫(kù)(Content Repository,CR)[3]存儲(chǔ)和管理對(duì)象是被稱為非結(jié)構(gòu)化的數(shù)據(jù),各種文件,視音頻數(shù)據(jù)、圖像數(shù)據(jù)、大文本數(shù)據(jù)是這類數(shù)據(jù)對(duì)象的典型代表[4-5]。內(nèi)容庫(kù)對(duì)內(nèi)容提供統(tǒng)一的訪問控制、鎖定、事務(wù)、版本控制以及搜索,允許應(yīng)用程序獨(dú)立地通過標(biāo)準(zhǔn)接口訪問,其中一個(gè)關(guān)鍵特性是:它不關(guān)注數(shù)據(jù)是如何存放的,不管數(shù)據(jù)存放在數(shù)據(jù)庫(kù)、文件系統(tǒng)、還是XML文件,應(yīng)用程序都可以對(duì)數(shù)據(jù)文件進(jìn)行訪問控制、查詢、版本控制、鎖定等[6-7]。
隨著內(nèi)容管理應(yīng)用程序的日益普及,遵循內(nèi)容倉(cāng)庫(kù)標(biāo)準(zhǔn),提供標(biāo)準(zhǔn)化API的內(nèi)容庫(kù)需求已凸顯出來(lái)。早在2005年,Java聯(lián)盟機(jī)構(gòu)就提出了一套操作內(nèi)容庫(kù)的Java標(biāo)準(zhǔn)API,即JCR(Java Content Repository)標(biāo)準(zhǔn)[8-9]。JCR的提出降低了內(nèi)容管理系統(tǒng)實(shí)現(xiàn)的復(fù)雜度,提高了系統(tǒng)的可維護(hù)性[10-11]。但JCR只能在Java環(huán)境中使用,開發(fā)語(yǔ)言和平臺(tái)受到了很大的限制。2010年10月,由IBM、Oracle、EMC、Microsoft、Alfresco等公司共同參與制定了新一代內(nèi)容庫(kù)標(biāo)準(zhǔn)——CMIS(Content Management Interoperability Services)[12]。CMIS的設(shè)計(jì)目的是定義一個(gè)完全和語(yǔ)言、平臺(tái)無(wú)關(guān)的,通過Web直接訪問的調(diào)用接口[13]。CMIS標(biāo)準(zhǔn)規(guī)范定義了一個(gè)核心域模型,持久性的信息實(shí)體對(duì)象構(gòu)成了一個(gè)典型的CMIS的域,包括文檔、文件夾、關(guān)系和策略[14]。CMIS指定了一套基本的服務(wù),應(yīng)用程序可以使用它來(lái)訪問和操縱這些實(shí)體。由于其中涵蓋了大多數(shù)的內(nèi)容,所以文檔、文件夾兩個(gè)類型最為重要。CMIS文檔和文件類似,它含有保持文檔元數(shù)據(jù)的屬性,例如:文檔作者、類型和專有自定義屬性等。如圖1所示,CMIS文件夾是CMIS文檔和其他CMIS文件夾的容器。文件夾可以決定它們能包含何種類型的文檔[15-16]。文檔可以被放在多個(gè)文件夾中,或者不在任意文件夾中。

圖1 CMIS文件夾
在編制政府信息公開目錄中,有幾個(gè)比較重要的概念,即:核心元數(shù)據(jù)、索引碼、索引號(hào)編碼、內(nèi)容概述、信息分類體系等。核心元數(shù)據(jù)是描述政府信息的關(guān)鍵屬性,每條政府信息起碼應(yīng)該有四個(gè)核心元數(shù)據(jù),分別為索引號(hào)、名稱、生成日期、內(nèi)容概述。編制政府信息公開目錄最重要的工作是編制核心元數(shù)據(jù),需要制定既適合國(guó)辦需要,又能擴(kuò)展的核心元數(shù)據(jù)定義方案,最后一共設(shè)定了12個(gè)元數(shù)據(jù),其中有8個(gè)必選項(xiàng)、3個(gè)可選項(xiàng)、1個(gè)條件可選項(xiàng)。這12個(gè)元數(shù)據(jù)包括索引號(hào)、標(biāo)題、內(nèi)容概述、發(fā)布日期、有效期、文號(hào)、相關(guān)信息、發(fā)布機(jī)構(gòu)、關(guān)鍵詞、信息分類、獲取方式、著錄日期。12個(gè)元數(shù)據(jù)從多個(gè)角度對(duì)數(shù)據(jù)進(jìn)行了刻畫,有了這些元數(shù)據(jù)會(huì)使政府信息檢索、使用的效率大大提高[17]。
展示目錄的形式就是目錄格式,一般分為三級(jí),即一級(jí)目錄、二級(jí)目錄、三級(jí)目錄。在一級(jí)目錄中,每條政府信息的主要核心元數(shù)據(jù)占一行,可以同時(shí)看到很多政府信息的基本內(nèi)容,通常應(yīng)包括標(biāo)題、發(fā)布日期、文號(hào)等主要核心元數(shù)據(jù)。其突出優(yōu)點(diǎn)是顯示清楚、一目了然。二級(jí)目錄,即預(yù)覽簡(jiǎn)要模式,包含的核心元數(shù)據(jù)比一級(jí)目錄多一些,可同時(shí)包括索引號(hào)、內(nèi)容概述、相關(guān)信息、獲取方式、主題關(guān)鍵詞等。二級(jí)目錄可以幫助公眾更多地了解政府信息的詳細(xì)情況。三級(jí)目錄是政府信息的全面展示。
根據(jù)這個(gè)思路,政府信息公開系統(tǒng)主要由管理子系統(tǒng)和服務(wù)子系統(tǒng)這兩個(gè)部分構(gòu)成。其中管理子系統(tǒng)是對(duì)政府即將公開的信息文件進(jìn)行匯總、整理、加工。從原始文件中提取出要公開文件的主要屬性,即核心元數(shù)據(jù)和擬公開的全文,并以json的格式發(fā)送給服務(wù)子系統(tǒng)并通過瀏覽器進(jìn)行解析。服務(wù)子系統(tǒng)的主體是公眾,通過瀏覽器和互聯(lián)網(wǎng)向公眾提供信息檢索,在線瀏覽政府的公開信息以及相應(yīng)的文件與附件的下載與打印服務(wù)。服務(wù)子系統(tǒng)主要提供檢索、分類和導(dǎo)航等服務(wù)。通過互聯(lián)網(wǎng)下載和打印政府信息,使公眾能夠快速、方便地訪問和獲取政府信息。其總體框架如圖2所示。

圖2 政府信息公開系統(tǒng)的構(gòu)成
本系統(tǒng)基于內(nèi)容庫(kù)特性與政府信息公開系統(tǒng)的建設(shè)依據(jù)進(jìn)行設(shè)計(jì)。政府信息公開系統(tǒng)發(fā)布的內(nèi)容包括word、excel或PDF等,使用內(nèi)容庫(kù)作為系統(tǒng)的核心可以很好地契合政府信息公開系統(tǒng)的需要,整體設(shè)計(jì)上分為前端服務(wù)子系統(tǒng)和后臺(tái)管理子系統(tǒng),服務(wù)子系統(tǒng)提供公開信息展示和相應(yīng)功能的開發(fā),涵蓋了信息檢索、分類導(dǎo)航、信息展現(xiàn)、公開文件及附件的下載打印等模塊的開發(fā)設(shè)計(jì)。管理子系統(tǒng)的開發(fā),包括了信息管理、類目管理、目錄管理、元數(shù)據(jù)管理等功能的開發(fā)設(shè)計(jì)。管理子系統(tǒng)通過CMIS的Web服務(wù)接口與內(nèi)容庫(kù)進(jìn)行交互。系統(tǒng)整體設(shè)計(jì)架構(gòu)如圖3所示。

圖3 系統(tǒng)的整體架構(gòu)
元數(shù)據(jù)設(shè)計(jì)是基于內(nèi)容庫(kù)的政府信息公開系統(tǒng)的核心部分,這里元數(shù)據(jù)的概念是抽象的,它是數(shù)據(jù)結(jié)構(gòu)和意義的描述,也是非結(jié)構(gòu)化數(shù)據(jù)向結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換的描述,例如一個(gè)文件的名稱、文件類型、大小、創(chuàng)建時(shí)間、創(chuàng)建人等都是對(duì)文件進(jìn)行描述的元數(shù)據(jù),通常使用XML格式標(biāo)記語(yǔ)言來(lái)編寫。XML標(biāo)記語(yǔ)言可以很好地把數(shù)據(jù)結(jié)構(gòu)和其顯示方式通過不同標(biāo)簽分離開,是現(xiàn)在主流編寫元數(shù)據(jù)的主要語(yǔ)言[18]。內(nèi)容庫(kù)支持自定義規(guī)則屬性,其對(duì)政府信息公開系統(tǒng)的元數(shù)據(jù)的開發(fā)提供了極大的便利。最終展示給用戶的公開文件的屬性僅需要通過相關(guān)接口抽取內(nèi)容庫(kù)中其文件的元數(shù)據(jù)進(jìn)行顯示即可。
自定義元數(shù)據(jù)屬性,通過在ContentModel.xml文件中自定義屬性property即可。例如:
針對(duì)政府信息公開系統(tǒng)的特征,及《政府信息公開目錄系統(tǒng)實(shí)施指引》對(duì)政府信息公開系統(tǒng)元數(shù)據(jù)的要求,系統(tǒng)需涵蓋14個(gè)核心元數(shù)據(jù),其中有六個(gè)必選項(xiàng)、三個(gè)條件必選項(xiàng)、五個(gè)非必選項(xiàng)。其公開文件的元數(shù)據(jù)設(shè)計(jì)如表1所示。

表1 系統(tǒng)元數(shù)據(jù)設(shè)計(jì)表

續(xù)表1
基于內(nèi)容庫(kù)的CMIS接口均是以Web服務(wù)技術(shù)開發(fā)。提供兩種調(diào)用方式:一種是傳統(tǒng)的Web Service,一種是RESTful風(fēng)格的Web調(diào)用。本系統(tǒng)的接口設(shè)計(jì)采用更加簡(jiǎn)單輕量的RESTful方法設(shè)計(jì)和實(shí)現(xiàn)。每一個(gè)接口都是一個(gè)綁定到URI的服務(wù),它響應(yīng)GET、POST、PUT和DELETE等HTTP方法,并且提供了對(duì)內(nèi)容庫(kù)中內(nèi)容的REST式訪問。借助RESTful接口,可以很容易將內(nèi)容庫(kù)中的任意內(nèi)容映射到Web上的資源。開發(fā)一個(gè)內(nèi)容庫(kù)與管理子系統(tǒng)相互訪問的接口需要三步,在Web Scripts Extensions文件夾下創(chuàng)建XML格式的描述文件、相應(yīng)的ftl格式的模板文件和一個(gè)控制器文件,用于接收參數(shù)并通過Lucence檢索內(nèi)容庫(kù)中的數(shù)據(jù)。主要的接口功能說(shuō)明、請(qǐng)求方式、所需參數(shù)以及返回結(jié)果如表2所示。

表2 系統(tǒng)主要的接口設(shè)計(jì)
管理子系統(tǒng)的實(shí)現(xiàn)包括原始信息的采集、元數(shù)據(jù)的抽取和標(biāo)引、公開文件的校對(duì)審核。管理子系統(tǒng)應(yīng)當(dāng)實(shí)現(xiàn)對(duì)政府公開信息采集、加工、編審、入庫(kù)的全程控制。同時(shí)還應(yīng)該具有整體的流程管理、用戶權(quán)限管理、信息公開系統(tǒng)的元數(shù)據(jù)管理等輔助功能。其實(shí)現(xiàn)流程如圖4所示。

圖4 管理子系統(tǒng)的實(shí)現(xiàn)流程
管理子系統(tǒng)需先對(duì)公開信息進(jìn)行采集形成原始文件。政府公開信息的采集渠道和方式主要有三種:一是相關(guān)政府或是行政機(jī)關(guān)已在網(wǎng)站上公開的信息,但按照規(guī)定應(yīng)該納入政府信息公開目錄里,對(duì)于這種信息,可以使用從相關(guān)機(jī)構(gòu)或行政機(jī)關(guān)的網(wǎng)站上自動(dòng)爬取信息的方法實(shí)現(xiàn)采集。二是政府行政單位內(nèi)部業(yè)務(wù)系統(tǒng)中已經(jīng)產(chǎn)生應(yīng)公開但還尚未公開的政府信息,這種信息可以使用內(nèi)部業(yè)務(wù)系統(tǒng)中的接口,以數(shù)據(jù)交換的方式實(shí)現(xiàn)采集。三是尚未形成電子數(shù)據(jù)的政府公開信息,這種信息使用以人工的形式進(jìn)行錄入。形成原始文件后需要判斷文件類型,其屬于公開文件還是附件,若是公開文件,則需對(duì)公開文件進(jìn)行元數(shù)據(jù)的抽取,若是附件,則需要綁定其對(duì)應(yīng)的公開文件。對(duì)于公開文件,可以使用元數(shù)據(jù)提取器來(lái)檢查文件,提取元數(shù)據(jù)并將元數(shù)據(jù)保存在節(jié)點(diǎn)的屬性中。元數(shù)據(jù)提取器是配置為Spring bean的Java類,可以在內(nèi)容庫(kù)創(chuàng)建內(nèi)容時(shí)調(diào)用,也可以通過規(guī)則操作調(diào)用提取器。由于元數(shù)據(jù)提取器聲明了它們支持的MIME類型,所以內(nèi)容庫(kù)知道哪個(gè)提取器用于給定的內(nèi)容,通過配置規(guī)則調(diào)用元數(shù)據(jù)提取器,即可對(duì)公開文件的標(biāo)題、文號(hào)、發(fā)布機(jī)構(gòu)等元數(shù)據(jù)實(shí)現(xiàn)自動(dòng)抽取。抽取屬性后需進(jìn)行人為的完善工作,即對(duì)公開文件中未涉及的屬性進(jìn)行人為的完善擴(kuò)充。不管是公開文件還是附件最后都需創(chuàng)建索引才能最終入庫(kù),內(nèi)容庫(kù)內(nèi)置的Lucene引擎會(huì)對(duì)內(nèi)容進(jìn)行索引的創(chuàng)建,并存入索引庫(kù)。Lucene的使用為內(nèi)容庫(kù)提供了高效的數(shù)據(jù)查詢索引,對(duì)系統(tǒng)的搜索服務(wù)提供了巨大的幫助。最后實(shí)現(xiàn)入庫(kù),其中元數(shù)據(jù)保存在關(guān)系型數(shù)據(jù)庫(kù)中,而內(nèi)容文件和Lucene索引則保存在文件系統(tǒng)中。
服務(wù)子系統(tǒng)主要是通過互聯(lián)網(wǎng)為公眾提供政府信息公開的相關(guān)服務(wù),使公眾能快速、便捷地查閱、獲取、申請(qǐng)公開信息,其實(shí)現(xiàn)流程如圖5所示。

圖5 服務(wù)子系統(tǒng)的實(shí)現(xiàn)流程
服務(wù)子系統(tǒng)的受體為廣大的人民群眾,公眾可以在政府網(wǎng)站上瀏覽相關(guān)的公開信息或提交申請(qǐng)以瀏覽其想要看到的公開文件。對(duì)于公眾瀏覽的公開信息應(yīng)有以下服務(wù):用戶可以查看或點(diǎn)擊分類目錄,分類目錄下對(duì)應(yīng)著相關(guān)的公開文件,當(dāng)用戶點(diǎn)開公開文件時(shí),應(yīng)可在線預(yù)覽,并提供公開文件與其附件的下載功能。對(duì)于核心元數(shù)據(jù)應(yīng)在目錄項(xiàng)的基本信息中予以顯示。用戶在瀏覽政府信息公開網(wǎng)站的同時(shí),點(diǎn)擊相應(yīng)主目錄或是子目錄、公開信息、檢索關(guān)鍵詞等即會(huì)調(diào)用后臺(tái)的API進(jìn)行數(shù)據(jù)的傳輸與交換。作為系統(tǒng)前臺(tái)的開發(fā),需要JQuery、AJAX、html等前端技術(shù)。當(dāng)用戶進(jìn)行上述操作時(shí),政府信息公開系統(tǒng)前臺(tái)會(huì)通過AJAX技術(shù)將要傳遞參數(shù)以JSON的格式送入定制好的webscript接口中,在相應(yīng)的接口控制器中調(diào)用lucene引擎檢索出結(jié)果,最后再將要返回的數(shù)據(jù)封裝成JSON的格式返回到政府信息公開系統(tǒng)的前臺(tái),通過JQuery的AJAX方法解析并呈現(xiàn)給用戶。這里用到了前面所設(shè)計(jì)的四個(gè)接口。當(dāng)用戶查看分類目錄時(shí),實(shí)際調(diào)用了檢索“政府信息公開目錄”文件夾下的類型為文件夾的對(duì)象接口。當(dāng)用戶進(jìn)行下載功能時(shí),實(shí)際調(diào)用了下載功能的接口,所需參數(shù)的值為下載的鏈接地址,其為公開文件的一個(gè)屬性。當(dāng)用戶查看一級(jí)目錄或二級(jí)目錄下的所有文章列表時(shí),實(shí)際上調(diào)用了檢索相應(yīng)子文件夾類型為“內(nèi)容”的全部對(duì)象。通過相應(yīng)的接口控制器,與內(nèi)容庫(kù)進(jìn)行數(shù)據(jù)交互。
政府信息公開系統(tǒng)的查詢子系統(tǒng)支持原生的Lucene查詢、XPath查詢、全文查詢,以及CMIS查詢語(yǔ)言,如圖6所示。

圖6 信息檢索子系統(tǒng)
默認(rèn)情況下,內(nèi)容庫(kù)會(huì)將節(jié)點(diǎn)存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)中,而內(nèi)容則是存在硬盤的文件系統(tǒng)中。使用一個(gè)數(shù)據(jù)庫(kù)抽象層與數(shù)據(jù)庫(kù)進(jìn)行交互,從而使存儲(chǔ)引擎可以從復(fù)雜的SQL連接語(yǔ)句中獨(dú)立出來(lái),簡(jiǎn)化了數(shù)據(jù)庫(kù)移植工作,使得內(nèi)容庫(kù)可以基于各種主流數(shù)據(jù)庫(kù)實(shí)現(xiàn)。查詢字符串使用了Lucene查詢語(yǔ)法來(lái)查找內(nèi)容基于全文內(nèi)容、屬性值、路徑和內(nèi)容類型。使用Lucene的查詢主要分以下幾步:首先驗(yàn)證啟動(dòng)一個(gè)會(huì)話,之后對(duì)搜索的節(jié)點(diǎn)進(jìn)行參考獲取,然后使用Lucene的查詢字符串建立查詢對(duì)象,最后執(zhí)行查詢并轉(zhuǎn)儲(chǔ)結(jié)果。
定義一個(gè)操作類DataQueries類,這個(gè)類中可以接受文件夾或文件的名稱作為參數(shù)。在類中定義兩個(gè)方法:getQueryResults() 和doExamples()。getQueryResults()是一種通用的方法,執(zhí)行一個(gè)指定的查詢字符串,并返回一個(gè)ContentResult對(duì)象的列表。其中ContentResult是一個(gè)內(nèi)部類,它作為輔助用于管理查詢結(jié)果的屬性。doExamples()方法調(diào)用getQueryResults()多次以顯示不同的搜索字符串的例子。
本文提出并實(shí)現(xiàn)了一種基于內(nèi)容庫(kù)的政府信息公開系統(tǒng),相較于傳統(tǒng)的基于數(shù)據(jù)庫(kù)和文件系統(tǒng)的信息公開系統(tǒng)開發(fā)模式,新方案具有層次清晰、易于實(shí)現(xiàn),耦合度低、便于維護(hù)的優(yōu)點(diǎn),節(jié)省了設(shè)計(jì)與開發(fā)的時(shí)間周期。進(jìn)一步研究可以擴(kuò)展標(biāo)準(zhǔn)的CMIS接口規(guī)范,提供更多的調(diào)用模式,將內(nèi)容庫(kù)作為企業(yè)統(tǒng)一的非結(jié)構(gòu)化資源存儲(chǔ)庫(kù),獨(dú)立存儲(chǔ)和管理非結(jié)構(gòu)化文檔,為眾多的業(yè)務(wù)系統(tǒng)提供內(nèi)容資源支持。