文/姚渺波 彭超云
Drupal如何與“公共數(shù)據(jù)庫”進行數(shù)據(jù)交換?
文/姚渺波 彭超云
Drupal是使用PHP語言編寫的開源內(nèi)容管理系統(tǒng)(CMS)和內(nèi)容管理框架(CMF),曾連續(xù)多年榮獲全球最佳CMS大獎。世界頂尖的前100所大學當中就有71所大學使用Drupal,國內(nèi)也有不少高校在使用它建設網(wǎng)站。然而僅僅只是使用Drupal來建站,實在是有點大材小用,做為CMF的Drupal,有著靈活的架構(gòu)和豐富的模塊,通過它來構(gòu)建業(yè)務系統(tǒng),可以讓Drupal在國內(nèi)高校的“數(shù)字校園”中發(fā)揮出更大的作用,而不僅僅只是個CMS。
國內(nèi)大部分高校都建成了“數(shù)字校園”,“數(shù)字校園”建設的目的是為了消除信息孤島,所做之事簡而言之就是建立公共數(shù)據(jù)交換標準和“公共數(shù)據(jù)庫”,確定權(quán)威源數(shù)據(jù)以及在“公共數(shù)據(jù)庫”與業(yè)務系統(tǒng)之間進行數(shù)據(jù)交換。具體來講,就是通過前期調(diào)研,將“公共數(shù)據(jù)庫”中業(yè)務系統(tǒng)需要的數(shù)據(jù)推到“中間庫”中,然后由業(yè)務系統(tǒng)根據(jù)業(yè)務所需到“中間庫”去抽取相關(guān)的數(shù)據(jù)。如果業(yè)務系統(tǒng)的數(shù)據(jù)被確定為權(quán)威源數(shù)據(jù),那么該業(yè)務系統(tǒng)還要將其他業(yè)務系統(tǒng)所需的數(shù)據(jù)通過“中間庫”推送到“公共數(shù)據(jù)庫”中,供其他業(yè)務系統(tǒng)抽取。
如果想使用Drupal來構(gòu)建業(yè)務系統(tǒng),從而在“數(shù)字校園”中發(fā)揮更大的作用,就需要用它來構(gòu)建業(yè)務系統(tǒng),并使它能夠與“數(shù)字校園”中的“公共數(shù)據(jù)庫”之間進行數(shù)據(jù)交換,從而使其所建系統(tǒng)不至于成為信息孤島。而這也正是Drupal在高校推廣時遇到的最大挑戰(zhàn),因為Drupal并沒有一個現(xiàn)成的解決方案可以完全滿足這一頗具中國高校特色的需求。因此,筆者仔細分析了Drupal一些相關(guān)的模塊,并嘗試利用這些模塊來解決Drupal與“公共數(shù)據(jù)庫”數(shù)據(jù)交換時所遇到的部分問題。
縱觀“數(shù)字校園”中的業(yè)務系統(tǒng),只有少量業(yè)務的數(shù)據(jù)是權(quán)威數(shù)據(jù)源,這也就意味著大多數(shù)業(yè)務系統(tǒng)只需要到“公共數(shù)據(jù)庫”去抽取數(shù)據(jù)。因此,實現(xiàn)Drupal從公共數(shù)據(jù)庫抽取數(shù)據(jù)的功能模塊,是其構(gòu)建數(shù)字校園業(yè)務系統(tǒng)的首要任務。
而實現(xiàn)這一功能,首先需要由Drupal創(chuàng)建業(yè)務所需的內(nèi)容類型(或?qū)嶓w類型),然后通過相關(guān)模塊將業(yè)務所需數(shù)據(jù)(大多部分都是人員和機構(gòu)信息)從“中間庫”取出(“中間庫”中供業(yè)務系統(tǒng)抽取的數(shù)據(jù)是由“公共數(shù)據(jù)庫”通過ODI推送過來的),在此需要注意的一點就是“中間庫”中的表結(jié)構(gòu)與內(nèi)容類型中的字段不盡相同。這很好理解:一個是遵循學校公共的數(shù)據(jù)標準,一個是遵循具體的業(yè)務需求。本文以學生基本信息數(shù)據(jù)為例,介紹Drupal從“中間庫”中抽取數(shù)據(jù)的功能模塊實現(xiàn)方法,具體如下:
1.下載并安裝相關(guān)模塊
使用Drush工具下載和啟用Feeds和Feeds SQL模塊:drush en feeds_ui feeds_sql feeds_tamper_ui -y,這樣Drush工具就會自動下載并啟用Feeds、Feeds SQL和Feeds Tamper模塊,同時還會下載和啟用它們的依賴模塊CTools和JobScheduler。
2.添加“中間庫”連接信息
在Drupal的配置文件sites/default/settings.php中,添加“中間庫”的連接信息,并將其DatabaseKey設置為mid:
... ...
$databases = array (
// 缺省數(shù)據(jù)庫的連接信息
'default' =>
array (
'default' =>
array (
'database' => 'test',
'username' => 'Drupal',
'password' => 'Drupal',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
// “中間庫”連接信息
'mid' =>
array(
'default' =>
array (
'database' => 'mid',
'username' => 'Drupal',
'password' => 'Drupal',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
... ...
3. 設置內(nèi)容類型
在Drupal中創(chuàng)建一個名為學生基本信息的內(nèi)容類型,并根據(jù)需要設置其字段,如學號、姓名、姓名拼音、曾用名、英文名、身份證件類型、身份證件號、身份證件有效期、出生地碼、出生日期、籍貫、血型等,并按照集成方案設置字段類型和長度。一般與“中間庫”相關(guān)表的字段屬性相同,以方便抽取。其中出生日期可以安裝Date模塊,并將其字段類型設為Date(Unix Timestamp),這樣方便用戶界面(UI)展示。
4. 設置Feeds Importer
創(chuàng)建一個Feeds Importer,將其命名為“導入學生基本信息”(機器名:fi_xsjbxx),在編輯界面的Basic settings中將Attach to content type設為“學生基本信息”,并根據(jù)業(yè)務需要設置好Periodic import(一般設為every 1 day);
在Fetcher中將Fetcher從默認的HTTP Fetcher改為SQL fetcher,并將SQL fetcher設置中的Database勾選為“中間庫”的“mid”;
在Parser中將Parser改選為SQL parser,并將SQL parser設置中的Database選為“mid”,在SQL query文本框中填入SQL語句:SELECT * FROM GXXS_XSJBSJZL(其中GXXS_XSJBSJZL為“公共數(shù)據(jù)庫”同步到“中間庫”的學生基本數(shù)據(jù)子類表名,這里為了方便起見,所以使用了通配符*,一般的用法是需要用到什么字段,就填入什么字段),如果SQL語句沒有出現(xiàn)錯誤的話,會在下面顯示測試信息,會顯示執(zhí)行SQL語句后記錄總數(shù)和字段數(shù),并有個表格顯示記錄內(nèi)容,以便判斷在SQL query文本框中所輸入SQL語句是否正確;
在Processor中將Processor設為默認的Node Processor,并將其設置中的Bundle選為“學生基本信息”,將Update existing nodes選為“Update existing nodes”,Text format保持默認的“Plain Text”,Expire nodes保持默認的“after 1 day”;接下來就是最關(guān)鍵的一步了,在Processor中點擊Node Processor中的Mapping,將“中間庫”數(shù)據(jù)表中的字段與內(nèi)容類型的字段一一對應起來,如圖1所示。
圖1 “中間庫”數(shù)據(jù)表中的字段與內(nèi)容類型的字段
5. 設置Feeds Tamper
在完成了上述配置之后,基于Drupal的業(yè)務系統(tǒng)就差不多可以正常地從“中間庫”抽取公共數(shù)據(jù)了,但這之前還需要做一個小處理?!爸虚g庫”的出生日期根據(jù)部標是8位字符,而為了UI展示,在前面Drupal內(nèi)容類型的字段類型的設置時,是建議安裝Date模塊并將字段類型設為Date(Unix Timestamp)的,這就意味著在抽取過來的數(shù)據(jù)需要在做“一個字符串到時間戳”的轉(zhuǎn)換之后,才能夠保存到Drupal中,因此需要用到Feeds Tamper模塊,可以選擇TAMPER標簽頁,并找到出生日期這個Mapping,然后點擊Add Plugin,將The plugin to add標簽下的單選框選為“String to Unix Timestamp”,這樣就可以在抽取出生日期時將部標的8位字符串轉(zhuǎn)換成Date(Unix Timestamp)類型保存在Drupal中。而且由于Feeds Tamper是插件式的,還可以自行開發(fā)轉(zhuǎn)換代碼用以擴展Feeds Tamper的功能。其設置如圖2所示。
圖2 自行開發(fā)轉(zhuǎn)換代碼用以擴展Feeds Tamper的功能
通過上面的配置,基于Drupal構(gòu)建的業(yè)務系統(tǒng)就可以從外庫“中間庫”抽取所需的數(shù)據(jù)了,上述三個模塊相互配合就很方便地完成了數(shù)據(jù)抽取功能,而這么復雜的功能,需要用戶做的事情卻并不多,不得不讓人感嘆Drupal及其模塊的強大。
然而,由于目前國內(nèi)高校“公共數(shù)據(jù)庫”從業(yè)務系統(tǒng)抽取數(shù)據(jù)的方式比較單一,基本都是基于數(shù)據(jù)庫層面來進行的。因此Drupal要融入數(shù)字校園就還必須要有一套比較成熟的將數(shù)據(jù)輸出到外部數(shù)據(jù)庫的解決方案。令人遺憾的是,Drupal雖然有著一套較為成熟的數(shù)據(jù)輸出解決方案,但卻是基于WebService的。基于數(shù)據(jù)庫層面上的數(shù)據(jù)輸出,雖然也有一些模塊支持,但還不能形成一個比較成熟的解決方案。
綜上所述,要想進一步推動Drupal在我國高校的發(fā)展,就需要解決其與“公共數(shù)據(jù)庫”的數(shù)據(jù)交換問題。好在Drupal不僅是一個CMS,還是一個CMF,可以很靈活地通過編寫一些功能模塊,來滿足某些功能需求。筆者和高教學會信息化分會Drupal推進組的同仁們,正在著手編寫DataHub數(shù)據(jù)交換模塊,嘗試通過這個模塊來實現(xiàn)符合國人思維習慣,并能在數(shù)據(jù)庫層面進行數(shù)據(jù)交換,以期解決Drupal與外部數(shù)據(jù)庫的數(shù)據(jù)雙向交換問題,從而進一步加快Drupal在我國高校的推廣。
(作者單位為溫州大學現(xiàn)代教育技術(shù)中心)
華為北京ICT巡展:未來將是全聯(lián)接的世界
本刊訊近日,“華為企業(yè)業(yè)務2015炫動ICT中國行巡展·北京站”落下帷幕。
華為中國區(qū)副總裁董明表示,在過去的2014年,華為公司實現(xiàn)全球銷售收入約2880億人民幣,同比增長約20%。目前,華為的產(chǎn)品和解決方案已經(jīng)應用于170多個國家和地區(qū),服務全球超過1/3的人口。中國市場作為華為全球化業(yè)務的重要組成部分,企業(yè)業(yè)務領(lǐng)域、消費者業(yè)務領(lǐng)域、運營商業(yè)務領(lǐng)域均實現(xiàn)了持續(xù)高速增長。
會上,華為提出“全聯(lián)接”的概念。董明表示,未來將是一個全聯(lián)接的世界。萬物互聯(lián)、隨時在線將成為新常態(tài)。“我們預測,到2025年,全球?qū)⒂谐^1000億的聯(lián)接,這將是一個規(guī)模空前的市場,如何存儲與處理、傳送與分發(fā)、獲取與呈現(xiàn)這些龐大的數(shù)據(jù)流量,既是一個巨大的挑戰(zhàn),也是我們面臨的戰(zhàn)略機遇?!?/p>
在巡展大會上,他表示,華為企業(yè)業(yè)務近幾年在北京大規(guī)模發(fā)展,ICT解決方案在北京各行業(yè)已廣泛應用。在教育領(lǐng)域,華為與北京理工大學、北京交通大學、北京郵電大學等高校都有合作,“我們借助智慧校園和三通兩平臺解決方案,為高等教育和基礎教育信息化建設提供了完整的解決方案?!?/p>
“教育市場是華為極其關(guān)注的一個領(lǐng)域。”華為北京代表處業(yè)務解決方案部部長苗實表達了華為對未來教育信息化的理解:“未來的校園將是智慧校園,在校園中,會融合大數(shù)據(jù),云服務,在此基礎上給校園提供智慧的服務和管理,讓整個校園校務管理變得更高效透明?!贝送猓J為,未來,許多校園將會把自己的優(yōu)質(zhì)教學資源擴展到整個社會中去,那么如何更好更方便地進行資源的分享,這是整個行業(yè)值得思考的問題。
苗實表示,今后,在教育領(lǐng)域內(nèi),華為的規(guī)劃是按照“三通兩平臺”的思路,一是為學校提供良好的無線網(wǎng)絡連接,這是智慧校園的基礎;二是通過桌面云為師生帶來便利,三是重點推廣敏捷網(wǎng)絡的解決方案和理念,四是推動大型數(shù)據(jù)中心進校園。