2008年8月22日

Sakai 2.5.2 課程資料同步

Sakai本身沒有提供課程資料管理(CourseManagement)的Web介面,僅有一組API實作(CourseManagement API,簡稱CM API)與兩種資料同步範例,其中比較有用的範例是ClassPathCMSyncJob,這支程式從附帶的XML檔案讀取範例的課程資料,然後呼叫Course Management API進行同步作業。

在實際的案例中,我們將這支範例程式動了點手腳,讓它支援的XML比較完整一些,並且可以透過URL讀取外部伺服器的XML檔案。

餵給Sakai作CM資料同步的XML,實作則是以PHP/SOAP呼叫校務行政系統所提供的Web Services,進行一些資料篩選過濾與加工處理,轉換成既定的CMSync XML格式,PHP預設的記憶體上線無法處理大量的資料,因此必須手動設定一個夠大的數值及允許執行時間,使PHP程式能夠順利處理完成。

使用PHP程式當作資料來源,獲得很容易撰寫及修改維護的好處,包含非常容易測試、呼叫Web Services的便利性、產生XML格式簡單且有效率,日後的修改不必再重新打包佈署Java程式以及重新啟動Sakai,這省下相當多的維護時間。

在2.5.2的Sakai版本中,CM API並沒有太大異動,舊有的課程資料同步程式不用太多修改就能適用。

若要用更好的手段來處理課程同步這件事情,導入Groovy應該是個不錯的選擇,透過Groovy簡單易寫、易測試的特性,應該能夠更直接地控制CM API做事,例如在加退選之後的名單人員增減等,也適合局部的課程資料修改、查詢。

事實上Sakai已經有Groovy Shell這個外掛的工具,可以在Web上直接執行Groovy程式碼片段並取得結果,也可以透過Telnet連入進行console的互動,面對龐大到像怪物一般的Java專案,適時抹上一點Groovy似乎是個讓專案變得可口的技巧。

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!