摘 要:針對企業(yè)信息化建設(shè)中數(shù)據(jù)重復和信息孤島等問題,研究了XML環(huán)境下結(jié)合SOAP、WSDL等Web Services技術(shù)實現(xiàn)企業(yè)異構(gòu)系統(tǒng)/數(shù)據(jù)庫間數(shù)據(jù)交換的方案。通過進行數(shù)據(jù)建模,將企業(yè)異構(gòu)系統(tǒng)信息表述為標準的XML格式,通過SOAP封裝、WSDL描述實現(xiàn)對信息的請求、響應(yīng)和傳輸,解決數(shù)據(jù)格式不一致的難題,實現(xiàn)異構(gòu)系統(tǒng)之間的通信,從而使不同應(yīng)用的系統(tǒng)之間實現(xiàn)協(xié)同,實現(xiàn)企業(yè)分布式環(huán)境下的資源共享。
關(guān)鍵詞:企業(yè);信息系統(tǒng);XML
中圖分類號:F272.7-39 文獻標志碼:A 文章編號:1673-291X(2013)20-0221-03
引言
現(xiàn)階段企業(yè)內(nèi)部辦公、管理、人事、財務(wù)等各方面事務(wù)都逐漸從單純的手工、文檔管理方式向信息化、系統(tǒng)化管理發(fā)展。然而,在實現(xiàn)多個基于本地數(shù)據(jù)庫的信息管理系統(tǒng)的同時,出現(xiàn)了信息重復、資源浪費、交互困難的情況,隨之而來的還有信息不同步、形成資源孤島等問題。
以XML作為信息存儲和交換的格式,可以很好地解決企業(yè)中存在的“信息孤島”問題,實現(xiàn)不同系統(tǒng)之間的集成與交互以及異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)共享。XML不僅提供具有意義的數(shù)據(jù),也提供了驗證的方式(XML Schema),使得程序能輕易地獲得內(nèi)容,并能夠徹底地完成內(nèi)容數(shù)據(jù)和表達方式的分離。將XML作為標準的信息表示格式,同時利用基于XML的開放的數(shù)據(jù)接口和分布式數(shù)據(jù)管理能力,實現(xiàn)對跨平臺、各種異構(gòu)數(shù)據(jù)庫的統(tǒng)一數(shù)據(jù)交換和管理,實現(xiàn)數(shù)據(jù)在企業(yè)各部門之間順暢的流通。數(shù)據(jù)交換的核心問題是信息的標準化,主要解決信息的可理解性問題,包括人和機器對信息的理解,最重要的是機器對信息的識別,并能根據(jù)數(shù)據(jù)進行自動處理。XML為信息的標準化提供了有力的工具。在企業(yè)信息平臺中,各部門、學院之間使用XML作為數(shù)據(jù)交換的統(tǒng)一格式,用XML統(tǒng)一表示來自不同數(shù)據(jù)源的數(shù)據(jù),可以實現(xiàn)系統(tǒng)間的數(shù)據(jù)交換,實現(xiàn)信息共享。
此外,還必須有一種方法來進行消息的傳遞?;赬ML的簡單對象訪問協(xié)議SOAP可以和任何的傳輸協(xié)議聯(lián)合使用,可以方便地穿越防火墻,面向服務(wù)體系結(jié)構(gòu)中的發(fā)布、查找和綁定操作都可以得到SOAP的支持。將SOAP+HTTP應(yīng)用于企業(yè)分布式信息平臺中,實現(xiàn)對企業(yè)分布式環(huán)境中XML格式的數(shù)據(jù)的封裝和傳輸,進而實現(xiàn)部門之間的便利信息交互。另外,使用WSDL來描述Web服務(wù),對服務(wù)的實現(xiàn)和接口進行標準化的定義,為各部門之間的服務(wù)調(diào)用提供具體的方法。
一、數(shù)據(jù)建模
在XML的項目中,首先應(yīng)該創(chuàng)建標準的數(shù)據(jù)格式。為此我們首先要考慮在本企業(yè)分布式信息平臺的開發(fā)模塊中涉及到哪些數(shù)據(jù),定義描述數(shù)據(jù)交換中所涉及事實的數(shù)據(jù)模型。具有高置信度的模型一旦被創(chuàng)建,數(shù)據(jù)模型便可以轉(zhuǎn)換成為schema,然后才能繼續(xù)開展以后的工作。
在此,讓我們對企業(yè)信息化建設(shè)中的“黨建”、“人事”信息進行數(shù)據(jù)分析。企業(yè)的“黨建”管理工作的目的在于管理企業(yè)黨員的黨建信息,而其中的黨建信息涉及到很多數(shù)據(jù)項。筆者通過走訪和調(diào)查,經(jīng)過分析和整理,得到“黨建”管理模塊的數(shù)據(jù)邏輯結(jié)構(gòu),其中包括姓名、所在支部、申請入黨時間、黨校學習情況、入黨時間、轉(zhuǎn)正時間等數(shù)據(jù)項。同理,“人事”管理模塊的數(shù)據(jù)邏輯結(jié)構(gòu)包括編號、姓名、性別、出生年月、參加工作時間、職稱、學歷等數(shù)據(jù)項,如圖1所示。
接下來,為了可以結(jié)構(gòu)化地定義有關(guān)數(shù)據(jù),需要對以上兩個模塊進行數(shù)據(jù)建模。一般來說,就是定義Schema文件。在定義了Schema后,所有的數(shù)據(jù)都將按照這個Schema來組織和檢查。XML Schema是一種控制文檔結(jié)構(gòu)的方法,使用XML 語法,具有 XML 的特點。作為 XML 語言的主要模塊,Schema 對標識的標準化模式起著極其重要的作用。因為模式在發(fā)送者和接收者之間規(guī)定了強制性的協(xié)議,有利于文檔之間的信息交流,而且可以在不同的群體之間共享,使得在不同的應(yīng)用程序間創(chuàng)建、管理和處理相同的文件變得容易,共享數(shù)據(jù)模式極大地簡化了XML詞匯的創(chuàng)建和維護,提高了數(shù)據(jù)的可靠性。
在開發(fā)過程中,我們采用Axis這個Soap引擎來實現(xiàn)對數(shù)據(jù)的建模。
首先,在服務(wù)提供方開發(fā)Java接口和類,然后使用Axis中的Java2WSDL工具從Java接口和類創(chuàng)建WSDL,WSDL中的types元素描述了數(shù)據(jù)的Schema。數(shù)據(jù)項信息體現(xiàn)在定義的Java類中,該類的編寫符合JavaBean的規(guī)范,簡單地說就是通過get/set方法來定義數(shù)據(jù)項。例如,組織部定義“黨建”模塊的Java類:
public class Dangjian implements java.io.Serializable {
private java.lang.String JPTime;//定義“入黨時間”
……
public java.lang.String getJPTime() {
return JPTime;}
public void setJPTime(java.lang.String JPTime) {
this.JPTime = JPTime;}
……}
同時,把方法的參數(shù)和返回值數(shù)據(jù)類型設(shè)為對象。比如提供一個接口用來發(fā)送短信息,那么希望接口的參數(shù)是一個消息對象,這個消息對象封裝了一條信息的所有內(nèi)容包括發(fā)送者、接收者、發(fā)送時間、信息內(nèi)容等等。因為如果把每個內(nèi)容都做成一個參數(shù),那這個接口的參數(shù)可能會非常的多,因此封裝成對象是很有必要的。Axis要求復雜類型對象的編寫必須符合JavaBean的規(guī)范,就是對象的屬性是通過get/set方法來訪問的。
創(chuàng)建的Java接口部分代碼如下:
public interface DangjianService extends java.rmi.Remote {
public dj7.Dangjian getDangjianInfo(java.lang.String in0);//查詢單條記錄的方法
public boolean deleteDangjianInfo(java.lang.String in0);//刪除記錄的方法
public dj7.Dangjian[] getAllDangjianInfo(java.lang.String in0);//查詢多條記錄的方法
public boolean addDangjianInfo(java.lang.String[] in0);//添加記錄的方法
public boolean modifyDangjianInfo(java.lang.String[] in0);//修改記錄的方法
public int getRowCount(java.lang.String in0);//返回記錄條數(shù)
}
用Java2WSDL工具從上述接口、類創(chuàng)建WSDL文件。生成的WSDL文檔的types元素是Dangjian這個JavaBean到WSDL的映射,它描述了Web服務(wù)與用戶之間交換的消息的所有數(shù)據(jù)類型,XML Schema是默認的類型系統(tǒng)。部分WSDL文檔:
http://www.w3.org/2001/XMLSchema\"> 上述Schema文件分別定義了Web Services環(huán)境中傳輸“黨建信息”“人事信息”時所要遵守的的格式。如:人事處的“人事信息”包含“姓名”、“職稱”、“學歷”等項,元素ZhiChen為string類型,可以為空……組織部的“黨員信息”包含“入黨時間”、“共青團推優(yōu)時間”、“入黨證書編號”等項,元素JPTime為string類型,可以為空……人事處、組織部服務(wù)器端將包含調(diào)用結(jié)果的實例對象按照這個Schema文件的格式要求轉(zhuǎn)換成客戶端所要求的XML文檔,進而構(gòu)造返回給客戶端的SOAP消息,完成服務(wù)的請求;客戶端可以根據(jù)這個Schema文件完成對響應(yīng)SOAP消息的解析(具體通過WSDL中types元素映射生成的類來實現(xiàn),該類實現(xiàn)了序列化接口)。 二、信息的傳輸 其次,是要實現(xiàn)將XML格式的數(shù)據(jù)通過SOAP進行傳輸。采用Axis引擎實現(xiàn)數(shù)據(jù)的SOAP傳輸,主要通過jaxrpc來實現(xiàn)。對于客戶端,主要使用Call類來完成調(diào)用Web服務(wù),在客戶端的stub類中設(shè)置一個org.apache.axis.client.Call對象來調(diào)用服務(wù),實際上,服務(wù)的請求和響應(yīng)都是靠Call類中的invoke()方法來實現(xiàn)的,在調(diào)用invoke()方法前,需要對Call的屬性進行設(shè)置,其中,setTargetEndpointAddress()方法設(shè)置了服務(wù)的endpoint,這個標志著服務(wù)地址的參數(shù)是從Locator類中傳來的,在本系統(tǒng)中的值為:http://222.196.35.143:8080/axis/services/DangjianService7,setOperationName()方法設(shè)置了服務(wù)操作名稱及其方法。invoke()方法把Call對象轉(zhuǎn)換成XML SOAP請求,并把請求發(fā)送給endpoint,當返回應(yīng)答后,invoke()方法返回一個java.lang.Object對象,這個對象中包含的或者是客戶端需要得到的服務(wù)器應(yīng)答,或者是錯誤信息。 在Axis處理SOAP消息時,會涉及到序列化或反序列化問題。序列化指的是把一個Java對象寫到一個XML文檔上的過程;反序列化則指從一個XML文檔中讀取一個對象定義并基于該定義創(chuàng)建一個Java對象的過程。Axis提供了許多類來實現(xiàn)內(nèi)建支持類型的序列化和反序列化,用Java的基本數(shù)據(jù)類型及其對象形式作為方法參數(shù)時是無縫的,不需要考慮序列化和反序列化的問題。Call對象的registerTypeMapping()方法起到為序列化/反序列化器注冊類型映射信息的作用。 實現(xiàn)了SOAP封裝后,信息以一個標準的xml格式在企業(yè)分布式環(huán)境中進行傳輸。同理,其他部門如財務(wù)部門等也能制訂自己的模式文件,以XML格式表述信息,解決數(shù)據(jù)格式不一致的難題和異構(gòu)系統(tǒng)之間的通訊,從而使不同應(yīng)用系統(tǒng)之間交換數(shù)據(jù)變得容易,實現(xiàn)企業(yè)分布式環(huán)境下的資源共享。符合模式文件、含有黨員信息的XML示例文件如下: <?xml version=\"1.0\"……> 三、服務(wù)的發(fā)布和發(fā)現(xiàn) 最后,我們需要讓所設(shè)計的Web服務(wù)能夠讓其他部門找到,所以用一些方法來讓服務(wù)開發(fā)者發(fā)布服務(wù),讓服務(wù)的使用者發(fā)現(xiàn)Web服務(wù)。UDDI確定了一種機制,使得企業(yè)分布式環(huán)境下的Web服務(wù)提供者可以為其Web服務(wù)作廣告,也使得Web服務(wù)調(diào)用者能找到其感興趣的Web服務(wù)。 參考文獻: [1] 彭濤,張力.基于本體和XML的數(shù)據(jù)交換研究[J].計算機工程,2006,32(1):90-92. [2] 沈海波,洪帆.面向Web服務(wù)的基于屬性的訪問控制研究[J].計算機科學,2006,33(4):92-96. [3] Fu X,Bultan T,Su J.WSAT:A Tool for Formal Analysis of Web Services[C].Proceedings of the 16th International Conference on Computer Aided Verification,2004-07. [4] 孫霞.基于XML的數(shù)字化校園信息發(fā)布與交換技術(shù)研究[D].武漢:武漢理工大學,2008. [5] 李益紅,王娟.XML及其在電子商務(wù)中的應(yīng)用[J].福建電腦,2004,(3):34. [責任編輯 王 莉]