close
進公司前三個月主要是在寫web service程式
不過是規範好用來讀取數位學習資料的SQI
因為被要求對自己之前做的東西寫一份報告
反正都寫了就順便貼上
******************
不過是規範好用來讀取數位學習資料的SQI
因為被要求對自己之前做的東西寫一份報告
反正都寫了就順便貼上
******************
引言
有天老鄭在同學的聚會中看到小五愁眉滿面,一問之下才知道原來小五正在困腦一件公司的案子,最近公司引進數位學習跟許多家數位學習廠商結盟,但是學習的教材分散在各家數位學習廠商的網站上,當員工要查詢學習資料都要一家一家網站登入去尋找而耗費許多時間,使得公司的數位學習成效不彰,因此老闆希望小五可以寫一個搜尋網頁就能夠找到各家的學習資源。無奈各家廠商的資料庫格式與搜尋方法都不同,要全連結起來是一件煩人的大工程。聽完小五的訴苦後,老鄭笑笑說那就引進SQI吧,可以讓你透過網路輕鬆取得各家廠商的資料…,在聽完老鄭的講解後,小五也開的笑了出來。到底SQI有什麼魔力可以解決小五困擾已久的問題?
什麼是SQI
SQI主要是用在查詢網路上的學習資源庫的學習資源,它的全名是Simple Query Interface,就如同它全名所代表的意思,他是一個簡單的查詢介面讓你可以查到分布在網路各地的學習資源。
如上圖所表示,如果使用者想經由A廠商的網頁查詢A廠商與B廠商的學習資源,A廠商無須把B廠商的資源庫整個拿過來架在自己的資源庫內,光資料整合就需要耗費大量人力與心力,此時只需要請B廠商提供他們的SQI介面給我們來呼叫使用就可以了。
因為SQI的技術架構在web service上,因此我們必須先來簡單談談什麼是web service,web service可以想像成一個提供透過網路呼叫函式的技術。寫過程式的人都知道,為了讓程式有再使用性,通常會把完成特定功能的程式碼集合在一起寫成一個函式,方便以後用來時就呼叫來用,假使我們寫了一個得知現在電腦(A電腦)CPU溫度的函式getTemperature (), 可當我們在其他台電腦上想知道A電腦的CPU溫度該怎麼辦?此時我們可以透過web service的技術讓getTemperature函式透過網路來呼叫,又因為web service是透過HTTP協定傳送資料,完全不用擔心傳送的資料會被防火牆檔下來。
因為web service的技術發展,使得企業只要將自己的服務(也就是之前提的函式)提供出來,使用者就可以透過網路去使用企業的服務,不用費心去處理系統整合,資料隱私等等的問題。
SQI的函式
之前提過SQI是架構在web service上,而web service可以洗像成一個提供透過網路呼叫函式的技術,我們現在來看看SQI提供哪些函式服務:SQI提供了數個函式分成管理、設定、非同步查詢與同步查詢四大類,讓使用者可以簡單的呼叫使用,我們一一來看:
分類
|
函式
|
功能
|
管理
|
createAnonymousSession()
|
告訴對方說要建立匿名的連線,請對方提供sessionID
|
createSession(String userID, String password)
|
告訴對方說要建立連線,輸入帳號與密碼,請對方提供sessionID
|
|
destorySession(String sessionID)
|
刪除sessionID
|
|
設定
|
setResultsFormat(String sessionID, String resultFormat)
|
設定回傳的資料型態,大多使用LOM格式
|
setMaxQueryResults(String sessionID, int maxQueryResults)
|
設定回傳資料的最大筆數,maxQueryResults要大於等於0,若maxQueryResults設成0表示取全部比數
|
|
setMaxDuration(String sessionID, int maxDuration)
|
設定最久查詢時間
|
|
setQueryLanguage(String sessionID, String QueryLanguageID)
|
設定最久查詢語法
|
|
同步查詢
|
synchronousQuery(String sessionID, String Query, int startResult)
|
輸入SessionID,查詢字串,資料起始位置回傳所找到的資料
|
setResultsSetSize(String sessionID, int resultsSetSize)
|
設定單一回傳資料的筆數
|
|
getTotalResultsCount(String sessionID, String Query)
|
輸入SessionID,查詢字串,回傳總資料比數
|
|
分同步查詢
|
setSourceLocation(String sessionID, String sourceLocation)
|
設定傳送回去的所要呼叫的SQI
|
asynchronousQuery(String sessionID, String Query, String QueryID)
|
輸入SessionID,查詢字串,queryID後會回傳資料到所設定SQL上的queryResultsListener
|
|
queryResultsListener(String QueryID, String QueryReault)
|
這函式位在來源端的SQI上主要用來接收分同步查詢的回傳結果結果
|
呼叫SQI的流程
想必很多人都想知道怎麼使用這幾個函式就能夠呼叫學習資源庫資料,一個簡單的SQI呼叫流程大致可分幾個步驟如下:
1. 選擇所要查詢的資源庫的SQI
2. 利用匿名(createAnonymousSession)或非匿名(createSession)的方式取得通行帳號sessionID,這個動作就像網站的登入
3. 設定查詢的變數,像是setMaxQueryResults設定回傳的總數、setResultsSetSize設定用同步查詢時單一次回傳的比數
4. 選擇所要查詢的模式,是同步查詢還是非同步查詢來接收資料
5. 輸入查詢的字串來得到資料
6. 執行destorySession,這個動作就像是登出
SQI傳送資料的方式分成兩種—同步與分同步,在SQI上同步的定義是把資料直接回傳給你,但是不是一次回傳全部所有資料,而是回傳一定的筆數,這個筆數預設是25,但你也可以自己用setResultsSetSize作設定。而非同步則是把全部資料傳送到一個接收的SQI上,為了接收資料必須實做一個queryResultsListener。分這兩種方式傳送資料可以讓開發者選擇最適合的顯示資料的方式,同步查詢會一個接著一個去不同資源庫查資料,每次給一定筆數方便開發者寫分頁程式用,但如果你不想讓使用者查詢數個不同資料庫時等待太久,可以給它一個QueryID讓他之後再上來看全部資料,這時就可以使用非同步查詢的方式。
SQI目前所回傳的資源庫資訊都用XML格式儲存,用LOM的規範紀錄每筆學習元件的標題,描述與教材的網址,
由此我們可知SQI只是幫我們做查詢資料的動作,並沒有把教材傳過來的能力,想看教材還是得連回去原網站觀看。
SQI應用
寫到此大家已經知道SQI基本的功能與用法了,現在網路上也有網站應用此技術連結各個學習資源庫,比如說是日本的資源庫網站NIME便提供了應用SQI技術的聯盟搜尋功能(http://nime-glad.nime.ac.jp/en/program/federated_search/index.php),可以查到NIME、MERLOT、LORNET、edna與ARIADNE等資源庫網站的資料。在國內比較著名的就是數位學習國家資源庫(http://www.lort.org.tw/),在數位學習國家資源庫內並沒有教育部與數位典藏聯合目錄的資料,但是只要輸入想查詢的字串,就能獲的教育部與數位典藏聯合目錄的資料,無須自己分別跑到各網站查詢所需的資料。下圖我在國家資源庫內輸查詢CAT資料,並勾取全部所連結的4個資源庫,網站會一一幫我去找資料後顯示出來。
結論
SQI技術的出現讓世界資源可以連接在一起,我們無須花費時間去各個資源庫取得我們想要的資料,只要滑鼠一按,網站可以自動去蒐集全部的資源來,只要國內做數位學習資源庫的公司願意提供SQI出來,讓數位教材與素材教材共享出來,相對未來不管學生或是老師在學習或教學上都能獲得相當大幫助。
全站熱搜
留言列表