商業問題
XML的力量存在于它的“eXtensibility 可擴展性(譯注:XML的全稱是eXtensible Markup Language)”...但是這也能證明這是很多組織所難于克服的障礙。
在這個案例中,我們的電子商務網站是在兩個不同的伙伴之間外包某種類型訂單的履行業務。一個通常的情況是,這兩者都想要訂單是同一種XML格式,但兩種格式就是有著非常大的不同。此外,伙伴B需要我們將XML訂單文件放在FTP目錄中的同時,伙伴A要求將XML直接發送到他們的服務器上。從那里,他們能獲得數據。
所以就有如下三個挑戰:
- 一、我們不得不自動發送訂單數據到外部的服務器
- 二、我們不得不為每個伙伴準備不同的數據格式
- 三、并且,我們將使用不同的方法傳送數據
這真的不好
不久就會有各種各樣的系統被放置于這個任務中。解決方案 ,諸如BizTalk 、SOAP和SQL 2000會加進許多。BizTalk還不可用。SOAP也不會有什么幫助,而且,使用SOAP需要雙方簽訂協議統一使用它。再有,SQL 2000會使我們很容易生成從訂單數據庫中生成XML.說這些系統會工作在一起只是對將來的承諾,而作為一個開發者,我們今天需要理解一些技巧。
盡管,我們并未準備好使用任何這些解決方案。在以某種方式設計我們的應用時,對我們感覺有能力地方的著手一試,還是值得的。
解決方案
這篇文章將討論使用VB、SQL Server 7.0、XML和XSL(譯注:XSL是可擴展樣式表語言,全稱是 eXtensible Stylesheet Language)建立一個健壯的和靈活的伙伴間訂單處理系統以適應當前的需求,并且自身是可擴展的。
此處理過程包括以下三個獨立的步驟。(為了演示的方便,所有步驟都包括在一個可執行文件中)
- 步驟一:建立內部的XML訂單文檔 在第一步中,系統從 SQL 服務器的數據中建立XML文檔。內部XML文檔位于內部發信信箱中。
- 步驟二:建立待發送的訂單XML文檔 對每一個在第一步中建立的內部的XML訂單文檔,將其與合作伙伴指定XSL表合并來建立待外送的訂單文檔。這個文檔包括兩個主要的部分,標題和數據包。標題包含發送數據包的所有信息。數據包則是跟據合作伙伴指定的規范格式化的XML數據。當第二步完成時,所有的待發送訂單文檔被儲存在合作者輸出目錄。
- 步驟三:分發數據包 對每一個在合作者輸出目錄中的訂單文件,系統讀取標簽中的發送方法和其對應的參數。它將數據包發給知道如何使用指定的方法分發XML文檔的運行進程。當第三步完成,外送的文檔被儲存在合作者檔案目錄中。
這個系統的特性之一是往后加入一個新的合作伙伴到系統中只需做少量的工作。甚至,一個未來的伙伴需要我們發送一個CSV文件到其指定的電子郵件地址時,我們只要寫一個XSL文件就可以解決大多數問題。同樣容易的是,我們能夠分發一個HTML報表,一個Excel電子表格或是一個純文本的Email消息。
開始工作
這個處理程序是一個VB可執行文件,叫做PartnerOrderProcess.exe。在每一步,程序使用Filesystem 對象讀取并移動XML文件。因此為了給應用程序足夠的信息還需要完成這些任務,一個XML文件AppInit.xml 與exe文件在同一個目錄中 ,文件中包括所有的不同種類文件的系統位置。這個例子應用程序中的設置如下:
(說明:雖然在本文包括的例子中這些目錄位置是在AppInit.xml文件中直接給出的,但是還有其它幾種方法。例如,你可以寫一個簡單的VB程序為你生成AppInit.xml文件。另一種增強的AppInit.xml還可包括無DSN的連接字符串。)
這個簡單的應用程序覆蓋兩個例子。為了使之更吸引人和演示一些有趣的例子,第一個案例要求我們的處理程序發送訂單文件到合作者指定的URL地址。但是我們打算從表單中以字符串變量的形式發送XML數據,并且通過HTTP協議監聽回程信息。合作者將通過HTTP流格式返回XML數據。這例給出的例子代碼利用了微軟的XMLHttp對象來發送和監聽回應。
第二個案例要求我們簡單地復制為合作者準備的XML文件到不同的本地目錄。這是很靈巧的,舉例來說,你可能需要將文件放置在FTP目錄中,或者是你想要從中動態地建立Web報表的目錄。
文章來源于領測軟件測試網 http://www.kjueaiud.com/