步骤三
程序处理每一个外送文档。使用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包是有效的
自动化处理在出错目录中的文件
检查SQL Server 2000在这个系统中的合适之处
建立一个SOAP类,通过SOAP来分发订单数据。当与内部其它的系统进行通信时,这很灵活使用XSLT来建立订单表单
文章来源于领测软件测试网 https://www.ltesting.net/