商业问题
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报表的目录。
文章来源于领测软件测试网 https://www.ltesting.net/