步驟三
程序處理每一個外送文檔。使用XML DOM,處理程序檢索文檔的標簽元素,找到分發的方法和分發參數列表。處理程序也讀取數據包并作為分離的XML文檔儲存在內存中(記住這是最終的合作伙伴訂單XML)。
在我們的例子中,一個送往伙伴B的訂單有著以下的標簽:
<FSO_Label> <XMLDelivery Method="POSTXMLASFORM"> <Post2Url type="delivery_param"> http://www.PartnerURL.asp/Orders/AcceptPost_ReturnXML.asp </Post2Url> <FrmVarName type="delivery_param">partner_xml</FrmVarName> <ResponseXPath type="delivery_param"> /partner_salesorder_response/@error_code </ResponseXPath> <ResponseSuccessValue type="delivery_param"> success </ResponseSuccessValue> </XMLDelivery> </FSO_Label>
在這個例子中,第二個標記,XMLDelivery,告訴系統那個方法應該被調用:
POSTXMLASFORM。記的嗎,對于這個伙伴,我們通過HTTP以表單元素發送XML數據, 并且監聽HTTP流的XML回應。因此,當調用此方法時,外送的XML必須指定幾個參數。其中之一是處理程序將發送XML到哪個URL。我們在這兒也指定了合作伙伴要求使用的表單變量名。
由兩個參數我們可以讓處理程序動態的從合作伙伴“讀取”XML回應,來得知他們是否成功的接收了我們的訂單。第一個參數是XML中的路徑,它指示了處理程序在哪兒查找合作伙伴的系統回應。第二是成功標志。在這個案例中當我們完成分發合作伙伴訂單時,是簡單的“success”。如下圖所示:
我們的處理程序會發送訂單XML到指定的URL,這意味什么呢?它會收到XML回應并且發送XML到一個運行進程,此進程將查找/partner_salesorder_response/@error_cod這個選定的節點值。如果此值恰好是ResponseSuccessValue參數,則處理程序知道整個交易成功并復制XML存檔。如果他們不相符,意味著發送失敗并且XML將被復制到出錯目錄中。
考慮到在如下的場景中,一個公司可能要處理幾個合作伙伴的業務,所有的處理都需要不同的訂單分發方法并且制定不同的參數。這是此種解決方案的力量才會變得明顯。這個方案不僅使得一個程序處理各種分發方法,而且也使得此程序動態地決定“聽”到什么來決定給定的交易是否成功。這個示例應用程序監聽合作伙伴的回應。但是一樣的規則也可擴展到與內部系統的通信。
將來的考慮
雖然這個示例應用程序具有完全的功能,這兒還是有許多值得改進的地方。這兒是一些立即引起注意的幾點:
- 使用大綱或是DTD來驗證合作伙伴的XML包是有效的
- 自動化處理在出錯目錄中的文件
文章來源于領測軟件測試網 http://www.kjueaiud.com/