摘要:對管理信息系統數據共享和互操作的實現方式進行了討論,介紹了EMIF框架模型,對實現EMIF數據共享的關鍵組件——通信agent的需求模型、功能模型和實現方法進行了系統分析和討論,對該agent關鍵功能——報文處理及傳輸、代理接口等進行了詳盡的設計。
關鍵詞:教育管理信息系統互操作框架; 代理; 報文處理; 數據共享; 互操作
中圖分類號:TP302.1文獻標志碼:A
文章編號:1001-3695(2007)12-0257-03
教育管理信息的共享和互操作對促進整個國家教育信息化和現代化有著重要的意義。迄今為止,我國各級各類教育行政管理部門及學校開發了各種類型的教育管理信息系統(EMIS)。由于歷史的原因,這些系統采用的開發平臺、數據結構、數據定義等均存在較大的差異,使得各個管理信息系統之間缺乏兼容性,難以實現數據共享和互操作。
目前實現軟件互操作的架構方式主要有三類,即P2P架構方式(基于點對點技術)、Web service架構方式(基于端到端技術)和基于中間件技術的架構方式。P2P采用的是兩個應用軟件之間直接進行信息交換,不通過第三方軟件或組件,該方式只適合于在互操作軟件數量不多的情況下使用;Web service是一種新的Web應用程序分支,它們是自包含、自描述、模塊化的應用,可以在網絡(通常為Web)中被描述、發布、查找以及通過Web來調用,該架構方式實現互操作需依賴于Web服務的調用,即需要通過服務注冊中心;使用中間件技術實現信息共享,信息發送方與信息接收方必須通過中間件的轉發來間接實現數據交換。該架構方式的最大優點就是通信雙方可以是異步通信,中間件可暫存信息。
為了在我國實現各類EMIS信息共享和互操作,中國教育部教育信息化技術標準委員會制定和發布了EMIF。當前其最新版本為EMIF CD1.1。EMIF規范是CELTS(China e-learning technology standards,中國教育技術標準與規范)中的重要組成部分,其架構源于美國SIF(schools interoperability framework,學校互操作框架)。SIF是由美國一些軟件公司和教育機構為幫助克服數據共享的技術障礙而發起的。SIF致力于創建一套規則和定義,以允許不同公司的軟件程序能快速、無縫、安全地共享信息。EMIF或說SIF采用中間件技術實現數據的共享和互操作。
1EMIF架構
EMIF結構示意圖如圖1所示。它是一個分布式系統,由一個或多個EMIF區域組成,每個區域均由一臺區域集成服務器(ZIS)和多個應用程序(EMIS)及其agent構成。
1.1單區域結構
單區域 EMIF結構是指一臺區域集成服務器連接一個或多個應用程序及其代理的結構,如圖2所示。
1.2多區域結構
EMIF可以有多個區域,各個區域的ZIS互連可以使不同區域間實現互操作,各區域的ZIS通過代理進行通信。
通信代理是EMIS的延伸,是EMIS與ZIS的通信接口。Agent的主要作用是把EMIS的數據綁定成符合EMIF規范的XML報文,或者把收到的XML報文解讀成EMIS能理解的格式,并與EMIS及ZIS接口。Agent與ZIS之間使用異步通信方式。Agent具有兩種數據傳輸模式,即請求—應答與發布—預約模式,分別用于實現EMIF內各個子系統之間下列數據交換的功能:一個EMIS獲取另一個EMIS的數據;一個EMIS的數據變化時,其他共享其數據的EMIS的相應數據也得到更新。
2EMIF中agent的需求分析
根據EMIF框架中對agent功能的定義,agent運行于EMIS的后臺,它主要負責與ZIS和EMIS進行交互,包括提取EMIS中的數據,根據互操作協議將其封裝打包成標準報文格式;同時也能將ZIS接收的報文解析成EMIS需要的數據。因此,符合EMIF規范的agent應具備以下功能:
a)與ZIS建立連接。基于HTTP或其他網絡傳輸協議建立與ZIS的通信機制,并生成符合要求的注冊報文(EMIF_register message),發送給ZIS,將agent信息注冊到ZIS。
b)向ZIS發布數據更新。對其他agent預約的數據對象,在屬于EMIF數據對象變更時,通過ZIS向其他agent發布數據對象更新信息。
c)數據請求與應答。生成數據查詢條件和請求報文,或在收到應答報文后解析檢索到的信息為EMIS可辨識的數據,包括報文合法性驗證功能。
d)應用程序的必要修改。主要通過調用agent的應用程序接口和數據處理接口,實現agent與應用程序的融合,以及對數據庫作必要的修改。
e)報文生成與解析。通過調用不同的類接口,實現報文簡便生成與解析,也包括數據庫數據與XML間的轉換功能。
f)報文隊列處理。類似ZIS的隊列處理機制,將不能立即處理的報文在本地暫存,放入報文隊列等待處理,并處理死鎖問題,清理無效報文。
當agent接收到報文后,首先進行報文預處理過程(即有效性驗證、身份驗證、報文分類過程),對符合EMIF規范的有效報文,依據報文類別調用不同的報文處理過程。若需生成應答報文,則將報文處理信息反饋給報文制作模塊,生成符合要求的應答報文。若與EMIS有數據交互,則通過數據提取功能導入、導出和指令提取功能,實現EMIS數據庫數據與報文信息之間的轉換。Agent的詳細功能結構如圖3所示。
依據EMIF框架中規定的報文規范、報文處理方法和報文通信機制,本文設計了報文處理模塊。同時實現了以“推”模式為主的報文處理方式,以及“拉”模式的報文傳輸功能。報文處理模塊中的報文服務和傳輸流程及模型如圖4所示。
3EMIF中agent的實現
EMIF中agent的實現包括報文處理與傳輸功能模塊、通信接口功能模塊以及數據對象處理模塊等功能模塊的實現。其中數據對象處理模塊實現數據對象權限設置、數據對象命名標準化、數據結構標準化轉換功能。限于篇幅,下面僅對前兩個功能模塊(特別是報文處理模塊)的實現作一些論述。
3.1報文處理與傳輸機制
報文的處理及傳輸是agent實現的重點和難點。該功能模塊主要實現報文的生成與解析、報文傳輸、報文隊列的處理機制等關鍵問題。本文設計實現的agent通過生成各種報文的通用接口類,調用這些接口實現對EMIF框架報文規范中11種報文的生成和解析功能;用ASP技術和HTTP,基于Web服務器機制實現了報文的傳輸功能;用選擇性報文阻塞解決死鎖問題,實現了類似ZIS的報文隊列處理機制,從而保證報文隊列高效處理。
3.1.1報文生成
Agent利用Delphi提供的XML data binding向導,為固定格式的XML文件(如DTD、XML schema等)生成專門的文件接口。Agent通過調用這些接口可方便地訪問XML文件,實現報文的生成和解析。實現的agent共生成了11種報文類樣式。文中的agent共設計了11種報文類單元,如EMIF_Request報文類如下:
type
IXMLEMIF_EMIFRequestType=interface(IXMLNode)
[′{5C2AEEB9-DFE4-4CDB-B600-EA3719D38297}′]
{Property Accessors}
function Get_Xmlns: WideString;
function Get_Version: WideString;
function Get_EMIF_Request: IXMLEMIF_RequestType;
procedure Set_Xmlns(Value: WideString);
procedure Set_Version(Value: WideString);
{Methods Properties}
property Xmlns: WideString read Get_Xmlns write Set_Xmlns;
property Version: WideString read Get_Version write Set_Version;
property EMIF_Request: IXMLEMIF_RequestType read Get_EMIF_Request;
end;
{Global Functions}
function GetEMIF_Message(Doc: IXMLDocument): IXMLEMIF_EMIFRequestType;
function LoadEMIF_Message(const FileName: WideString): IXMLEMIF_EMIFRequestType;
function NewEMIF_Message: IXMLEMIF_EMIFRequestType;
Agent通過調用request報文類接口NewEMIF_message可方便地在內存中生成request報文XML格式文檔。通過調用其中的LoadEMIF_message,GetEMIF_message接口方便地從XML文件中或內存中的XML節點中讀取數據。
3.1.2報文傳輸
Agent基于HTTP,用ASP實現報文傳輸,并對報文進行簡單的處理。Agent中通過字符串資源文件,存儲報文傳輸ASP文件的基本信息及樣式。報文傳輸文件的部分字符串如下:
{UploadFile.ASP file}
UploadFileASP[13]:=′f2.Copy \"%s\"DatePart(\"yyyy\",Date())\"_\"′+′DatePart(\"m\",Date())\"_\"DatePart(\"d\",Date())\"_\"Hour(Time())′+′\"_\"Minute(Time())\"_\"Second(Time())\".XML\"′;//%s為tempMsg folder
UploadFileASP[20] := ′StrSQL=\"%s\"′;
//%s為數據庫連接字符串
Agent初始化配置過程中,依據用戶及信息管理系統環境,動態生成報文傳輸文件及目錄結構,配置報文傳輸環境。
3.1.3報文隊列處理
Agent收到ZIS發來的新報文時,自動存儲報文,并按時間重命名并寫入報文隊列表中,觸發器發消息給agent處理接收到的報文。假如報文為ACK類報文,則立即處理,處理完畢則清除報文文件及報文隊列中該報文的記錄信息。若為request、response等不能立即處理的報文,則暫存報文,放入報文隊列等待處理。當報文隊列中的未處理報文超過報文有效期限時,則自動清除過期無效報文,從而避免出錯情況造成的報文隊列無限膨脹的可能性。
為解決報文的死鎖問題,本文agent設計了靈活報文隊列處理機制。采用SMB(selective message blocking,選擇性報文阻塞)機制的基本原理解決死鎖問題。報文處理的基本流程如圖5所示。
3.2Agent接口實現
根據EMIF規范,agent需要處理三個基本的接口問題,即agent與ZIS的通信代理接口、agent與EMIS的數據庫代理接口、agent與EMIS的應用代理接口。本文采用COM/COM+組件技術實現以上三個接口的設計,既提供了組件對象之間進行交互的規范,也提供了實現交互的環境。使得EMIS只需調用設計好的接口,即可實現agent功能與EMIS的很好融合。
3.2.1數據庫代理接口實現
不同的教育信息管理系統使用的數據庫也可能不同,因此本agent設計實現了通用數據庫代理接口。其功能是提供agent與數據庫的連接和操作,并建立不同的數據處理機制。采用ODBC、ADO技術使agent適用于各類基于不同數據庫系統的EMIS。
通過選擇不同的數據庫驅動程序,可實現agent與不同數據庫連接。Agent根據所選的數據庫系統,采用不同的SQL語句形式生成所需數據表,并配置相應的觸發機制和存儲過程。
3.2.2應用代理接口實現
本文采用COM/COM+和DCOM技術,實現agent與第三方應用程序的通用接口組件,EMIS只需調用設計好的接口(如agent.dll中的信息獲取界面接口GetInfoForm),即可實現agent功能與EMIS的融合。
3.2.3通信代理接口實現
采用ASP技術、HTTP網絡傳輸協議,基于Web服務器技術設計實現通信代理接口。在使用過程中,agent和ZIS互為服務器,實現了agent與ZIS之間的通信。通信代理接口利用COM/COM+技術做成組件,可方便EMIS調用。
4結束語
教育信息管理互操作框架規范(EMIF)的制定與發布旨在解決目前不同教育管理信息系統之間的互操作問題,從而實現不同EMIS之間信息的交流與共享。目前已有一些教育部門、軟件公司根據此規范著手開發、設計教育管理信息系統信息共享與交流平臺,但還沒有產品推出。筆者已實現了一個EMIF原型系統,本文給出了該原型系統中關鍵組件通信agent的分析、設計和部分實現。本文討論的報文處理方法及流程、接口實現方法等,對EMIF架構的實現及大范圍內教育管理信息系統的數據共享與互操作均有參考價值。
參考文獻:
[1]The schools interoperability framework association(SIFA). Schools interoperability framework implementation specification, version 1.5r1[DB/OL].[2004-10-11].http://www.sifinfo.org/sif-specification.asp.
[2]教育部教育信息化技術標準委員會.教育管理信息系統互操作規范(CELTS-40)[DB/OL].(2002-09-05).http://www.celtsc.edu.cn/680751c665875e93/655980b27ba174067c7b.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”