在 WebSphere Message Broker V8 中使用 Microsoft .NET: 第 2 部分:与 Microsoft Word 集成

本系列共四篇教程,演示了 WebSphere Message Broker V8 中对 Microsoft .NET 的新的支持。第 2 部分将介绍与 Microsoft Word 的集成。读者应当熟悉 Microsoft .NET 或 WebSphere Message Broker,但是不需要同时熟悉两者。

Ben Thompson, 高级 IT 专家, IBM

Ben Thompson 是位于英国 Hursley 的 IBM Software Group EMEA Laboratory Services 的高级 IT 专家。他已从事了七年分布式事务中间件相关工作,并具有广泛的使用 WebSphere 产品投资组合为全球 IBM 客户设计和实现解决方案的经验。


developerWorks 投稿作者

Matthew Golby-Kirk, 软件开发人员, IBM

Matthew Golby-Kirk 是位于英国的 IBM Hursley Software Lab 的 WebSphere Message Broker 开发团队的一名软件开发人员。他致力于 WebSphere Message Broker 中的 HTTP 和 Web 服务支持以及 ESQL 语言运行时的设计和实现。



2012 年 5 月 03 日

开始之前

IBM® WebSphere® Message Broker V8(以下称为 Message Broker)提供了与现有的 Microsoft® .NET® Framework(以下称为 .NET)应用程序进行集成的能力。您可以通过将新的 Message Broker .NETCompute 节点连接到消息流,或通过从 ESQL Compute 节点调用 .NET 应用程序来实现这种集成。本系列教程将展示如何使用 .NETCompute 节点集成技术。

WebSphere Message Broker and Microsoft .NET

关于本系列教程

本系列教程将展示如何使用 WebSphere Message Broker Toolkit 提供的内置模板在 Microsoft Visual Studio 2010(简易版或专业版)中编写和构建 C# 代码。这四篇教程将探讨以下主题:

  1. 使用 .NETCompute 节点样例
  2. 使用 .NETCompute 节点集成 Microsoft Word
  3. 使用 .NETCompute 节点集成 Microsoft Excel
  4. 使用 .NETCompute 节点进行异常处理

关于本教程

此 .NETCompute 节点样例通过用 C# 语言编写的代码来过滤、修改和转换消息。您可以在 Microsoft Windows® 代理上使用 .NETCompute 节点构造消息,并与 Microsoft .NET framework (.NET) 或 Component Object Model (COM) 应用程序进行交互。

WebSphere Message Broker 使您能够在执行组的内部托管和运行 .NET 代码。新的 .NETCompute 节点通过使用与 Common Language Runtime (CLR) 兼容的 .NET 编程语言来传递或转换消息,这些语言包括 C#、Visual Basic (VB)、F# 或 C++/Common Language Infrastructure (CLI)。该教程将介绍 WebSphere Message Broker 提供的新的 .NET API,该 API 使 .NET 开发人员能够与 Message Broker 的逻辑树进行交互。

先决条件和系统要求

本教程面向的读者为希望了解新的 .NETCompute 节点的 WebSphere Message Broker 编程人员,以及希望使用 WebSphere Message Broker 的 .NET 编程人员。如果您具有 C# 或 Message Broker 的一般知识,那么您会发现本教程相对容易学习。

要构建并执行本教程中的示例,您将需要:

  • 一个 Windows 版本,包括 Microsoft .NET Framework V4
  • WebSphere Message Broker(Toolkit 和 Runtime)V8
  • Microsoft Visual Studio 2010(Express Edition 或 Professional Edition),用于编写和构建所需的 C# 代码

本教程中的 C# 代码将从 Message Broker 逻辑树中获取数据,并使用这些数据创建一个 Microsoft Word 文档。该代码使用了 Open XML Format SDK(版本 2),这是一种面向 .NET Framework 的 API,使客户端和服务器环境中的开发人员都能够与 Microsoft Word 进行交互。在开始学习本教程之前,您需要做以下准备工作:

  1. 下载 Microsoft Open XML SDK V2
  2. 启动 OpenXMLSDKv2.msi,单击 splash 面板上的 Next,然后接受许可协议。
  3. 选择一个安装位置,或接受默认安装位置:C:\Program Files\Open XML SDK\V2.0\
  4. 确认设置,等待安装完成,然后单击 Close

如果没有完整的 Microsoft Word 副本,您可以下载并安装 Microsoft Word Viewer 和 Microsoft Office Compatibility Pack:

  1. 下载 Microsoft Word Viewer
  2. 启动 wordview_en-us.exe,接受协议条款,单击 Continue,接受其他协议条款,然后单击 Next
  3. 选择安装位置或接受默认值:C:\Program Files\Microsoft Office\
  4. 等待安装完成,然后单击 OK 两次退出安装程序。
  5. 下载 Microsoft Office Compatibility Pack
  6. 启动 FileFormatConverter.exe,接受许可条款,并单击 Continue
  7. 等待安装完成,然后单击 OK

简介

本教程提供了一个简单的使用 WSDL 文件的 Web 服务定义,您可以将该文件拖放到 Message Broker 流中来创建 Message Broker Web service facade。Web 服务客户端可以使用 SOAP over HTTP 调用 Message Broker 流。发送给流的请求消息代表某个商店内各种商品的销售订单。

接收到数据后,消息流会在 .NETCompute 节点中使用 C# 代码来创建一个简短的 Microsoft Word 文档,其中包含表格中销售订单的详细信息。然后将该 Word 文档写入文件系统的目录中,消息流随后会向 Web 服务客户端发送一条确认消息。

应用场景


创建消息流

在本文底部下载 zip 文件,并将内容解压缩到目录 C:\student\DOTNET\lab_msword 中。

  1. 假设 WebSphere Message Broker Toolkit 尚未启动,从 Start 菜单中选择 Start => Programs => IBM WebSphere Message Broker Toolkit => IBM WebSphere Message Broker Toolkit 8.0 => WebSphere Message Broker Toolkit 8.0。系统会要求您提供工作空间的位置,本文假设您使用的是 C:\student\DOTNET\lab_msword\workspace
  2. 关闭 Welcome 屏幕,从空工作空间中启动 Quick Start 向导:单击 Start from WSDL and/or XSD,如下面的红框所示。如果选择使用现有的工作空间,则可以启动 Quick Start 菜单,方法是单击窗口左侧的 Broker Development 视图顶部的 New 链接:

    Quick Start 菜单
  3. Quick Start 向导要求提供将在其中加载消息流和 Web 服务定义的应用程序的名称。指定名称 App_DotNet_MSWord 并单击 Next

    Quick Start 向导
  4. 在下个面板中,选择 Use external resources 并导航到下载文件附带的工件。如果目前为止您一直遵循前面的步骤,那么会在 C:\student\DOTNET\lab_msword 目录中找到这些工件。请选择 Order.wsdl 文件,其中包含 Web 服务定义,然后单击 Next

    Quick Start 向导
  5. 在最后的 Binding Selection 面板中,接受默认设置,这将导入 OrderSoapHttpBinding(WSDL 文件只包含一个绑定)。单击 Finish

    绑定选择
  6. 完成向导后,您会看到一个新的应用程序,其中包含导入的 WSDL 文件和引用的 XML 模式文件。在下一步中,您将使用 WSDL 文件生成消息流内容,如完成向导时 Message Broker Toolkit 中显示的弹出框所示:

    拖放结果
  7. 消息流文件 MyFlow.msgflow 应当已经在 WebSphere Message Broker Toolkit 中打开。将 WSDL 文件 Order.wsdl 拖放到消息流 canvas 中,这会打开 Configure New Web Service Usage 向导。WSDL 文件用于描述与消息流的接口并将其公开为一个 Web 服务。保留所有默认设置并单击 Finish

    配置 nNew Web 服务的使用
  8. Broker Toolkit 生成一个消息流,其中填充了一个 SOAP Input 节点,一个 SOAP Reply 节点和一个名为 Order 的子流。子流会提取 SOAP 消息的消息体并放到 XMLNSC 消息域中,然后返回到主流中。在当前的状态下,消息流在子流和 SOAP Reply 节点之间保留一处空白 (gap)。在该空白中,将置入一个生成 Microsoft Word 文档的转换,还将放入一个具有适当格式的回复消息,然后将该消息发送给 SOAP Reply 节点,以便将它发送回 Web 服务客户端:

    创建时的 MyFlow.msgflow
  9. 从流面板的 Transformation drawer 中将 .NETCompute node 放到 Order subflow 节点SOAPReply 节点 之间的消息流中。按照如下方式将节点终端连接起来:

    添加了 .NETCompute 节点的 MyFlow.msgflow
  10. 右键单击 .NETCompute node 并选择 Open Microsoft Visual Studio 以启动 Microsoft Visual Studio,您将用它开发 C# 代码,.NETCompute 节点将使用这些代码集成逻辑消息树并创建 Microsoft Word 文档:

    打开 Microsoft Visual Studio 菜单选项

在 Microsoft Visual Studio 中编写并构建 C# 代码之后,返回到消息流中。


在 Microsoft Visual Studio 中编写 C# 代码

以下图像可从 Microsoft Visual Studio Professional Edition 中获得,您也可以通过 Microsoft Visual Studio Express Edition 完成本教程。

  1. 启动 Microsoft Visual Studio 后,它将显示如下所示的 Start 页面。请选择 New project,如下面红框所示:

    Microsoft Visual Studio New Project
  2. New Project 向导为您提供了三种类型的项目模板。选择名为 Project to create a Message Broker message 的模板,按如下所示在窗口底部指定属性,然后单击 OK

    Name = MSWordDotNetProject
    Location = C:\student\DOTNET\lab_msword\visual studio 2010\Projects
    Solution Name = MSWordDotNetProject

    New Project 对话框

    如果 WebSphere Message Broker Toolkit 是在 Microsoft Visual Studio 之后安装的,那么 Message Broker 项目模板会自动完成安装。然而,如果首先安装的是 Broker Toolkit,那么您需要通过执行文件 IBM.Broker.DotNet.vsix 并完成向导来手动安装模板。如果采用默认的安装位置,您会在
    C:\Program Files (x86)\IBM\WMBT800\wmbt 中找到该文件。

  3. 创建完项目后,展开 Solution Explorer 视图。您应当看到已经创建好的 CreateNode.cs 文件,其中包含 C# 类。还需要注意的是,这里添加了一个对 IBM.Broker.Plugin 的引用。该集合中包含 Message Broker 提供的 API,可以使用它在 .NETCompute 节点中转换消息。您还将与另外两个 .NET Framework 集合进行交互:一个集合由 Open XML SDK 2.0 API 提供,另一个包含在 Windows .NET 框架中。右键单击 Solution Explorer 结构中的 References 层,选择 Add Reference

    Solution Explorer
  4. 在 Add Reference 对话框中,切换到 .NET 选项卡并找到组件 DocumentFormat.OpenXml。如果无法找到该条目,则应首先确保您已经按字母顺序对组件进行了排序。如果该条目确实不在列表中,则返回到前面的 System requirements 部分,并根据指示下载和安装 Open XML SDK 2.0 API。找到 DocumentFormat.OpenXml 组件后,请单击 OK

    添加 DocumentFormat.OpenXml 的引用
  5. 重复最后两个步骤,向项目添加第二个引用。这一次要在 .NET 选项卡中寻找名为 WindowsBase 的引用,如下所示,然后单击 OK

    添加对 WindowsBase 的引用
  6. Solution Explorer 现在应该显示集合引用已经成功添加:

    Solution Explorer 引用
  7. 模板类文件 CreateNode.cs 应当已打开并准备进行编辑。在文件的顶端,添加一些 using 指令,以便能够使用刚刚添加的集合引用中包含的类和方法,而不需要使用 C# 代码进行规范。该技巧使您能够编写更简明、更可读的代码。下图展示了要插入语句的位置,随后的清单提供了应当添加的语句:

    使用语句执行插入
    清单 1. 使用将放置在 CreateNode.cs 顶部的语句
    using DocumentFormat.OpenXml;
    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Wordprocessing;
    using SOAP = IBM.Broker.Plugin.NBParsers.SOAP;
  8. CreateNode 类中创建两个新方法,将它们分别命名为 AddParagraphAddCellToTable。这些方法将从 Evaluate 方法中调用(.NETCompute 节点执行的 C# 代码的入口点)。将这两个方法作为 CopyMessageHeaders 方法的同级方法插入到 CreateNode.cs 类文件的分层结构中,如下面的红色箭头所示:

    CreateNode.cs 中方法的位置

    下面的两个代码清单提供了这两个方法的 C# 代码。AddParagraph 方法的签名收到一个 Body 对象和一个文本字符串。该方法的目的是创建一个新的段落,并将它附加到文档正文的末尾。传递给方法的字符串将提供该段落的内容:

    清单 2. AddParagraph 方法的样例代码
    private static void AddParagraph(Body body, String wording)
         {
              Paragraph paragraph = new Paragraph();
              Run run = new Run();
              Text text = new Text(wording);
              run.Append(text);
              paragraph. Append(run);
              body.Append(paragraph);
         }

    AddCellToTable 方法的签名会接收一个 TableRow 对象和一个文本串。该方法的目的是创建一个新 cell 并附加到文档中表行的末尾。传递给该方法的字符串将提供该 cell 的内容:

    清单 3. AddCellToTable 方法的样例代码
    private static void AddCellToTable(TableRow tableRow, String wording)
         {
              var tableCell = new TableCell();
              tableCell.Append(new Paragraph(new Run(new Text(wording))));
              tableCell.Append(new TableCellProperties(new TableCellWidth()
                   {
                        Type = TableWidthUnitValues.Dxa,
                        Width = "2400"
                   }
              ));
              tableRow.Append(tableCell);
         }

    接下来,填充 Evaluate 方法的 UserCode 部分。该部分的代码被分为以下四个独立的清单,这样我们就可以逐一解释每个部分的功用。

  9. Evaluate 方法的第一个部分的代码的用途是创建一个 WordprocessingDocument 对象,表示将要生成的 Microsoft Word 文档文件的内容和结构。输出文件的静态路径是在 C:\student\DOTNET\lab_msword\Test.docx 中定义的。将要生成的文档是一封信件。它首先是一些文本行,通过调用早先创建的 AddParagraph 方法中的逻辑,将每个段落附加到输出文档的正文中。
    清单 4. Evaluate 方法的 UserCode 区的示例代码的第一部分
    #region UserCode
         // Add user code in this region to create a new output message
         string filename = "Test.docx";
         string path = @"C:\student\DOTNET\lab_msword\";
         string srcFile = System.IO.Path.Combine(path, filename);
         WordprocessingDocument wpDoc = 
              WordprocessingDocument.Create(srcFile,WordprocessingDocumentType.Document);
         MainDocumentPart DocPart = wpDoc.AddMainDocumentPart();
         DocPart.Document = new Document();
         Body body = new Body();
         AddParagraph(body, "Dear Sir,");
         AddParagraph(body, "");
         string text = "Thank you very much for your recent correspondence. ";
         text = text + "Your invoice is displayed in the table below:";
         AddParagraph(body, text);
         AddParagraph(body, "");
  10. 添加到 Evaluate 方法的样例代码的第二个部分会在文档中建立一个表。Table 对象与 TableRow 对象是同时创建的。对 AddCellToTable 方法执行 7 次调用,每次向 TableRow 添加一个包含静态文本的额外 cell。该行会出现在表的第一行中。该标题行的用途是保存每个数据列的标题名。代码的下一个部分将向表的其余行填充数据值。
    清单 5. Evaluate 方法的 UserCode 区的示例代码的第 2 部分
         Table table = new Table();
         var HeaderRow = new TableRow();
         AddCellToTable(HeaderRow, "Code(1)");
         AddCellToTable(HeaderRow, "Code(2)");
         AddCellToTable(HeaderRow, "Code(3)");
         AddCellToTable(HeaderRow, "Description");
         AddCellToTable(HeaderRow, "Category");
         AddCellToTable(HeaderRow, "Price");
         AddCellToTable(HeaderRow, "Quantity");
         table.Append(HeaderRow);
  11. C# 代码的下一个部分会导航到入站消息的 Invoice 部分,并使用 Itemlist 变量保存名为 named 的子元素集合。每一次循环迭代都会向表中添加一个行,其中包含每个 Item 的属性的输入消息的值,比如 Code、Description 和 Price。完成循环后,表会附加到文档正文中,随后会对 AddParagraph 方法执行一些调用来完成这封信件。最后,对于这部分代码,body 对象会附加到文档中,然后被保存并关闭文档:
    清单 6. Evaluate 方法的 UserCode 区的示例代码的第 3 部分
    NBElement Invoice = 
              inputMessage.RootElement["XMLNSC"]["SaleEnvelope"]["SaleList"]["Invoice"];
         var Itemlist = Invoice.Children("Item");
         foreach (NBElement element in Itemlist)
         {
              var NewRow = new TableRow();
              AddCellToTable(NewRow, (string)element["Code", 0]);
              AddCellToTable(NewRow, (string)element["Code", 1]);
              AddCellToTable(NewRow, (string)element["Code", 2]);
              AddCellToTable(NewRow, (string)element["Description"]);
              AddCellToTable(NewRow, (string)element["Category"]);
              AddCellToTable(NewRow, ((decimal)element["Price"]).ToString());
              AddCellToTable(NewRow, (string)element["Quantity"]);
              table.Append(NewRow);
         }
    body.Append(table);
    AddParagraph(body, "");
    AddParagraph(body, "Yours faithfully,");
    AddParagraph(body, "");
    AddParagraph(body, "The WebSphere Message Broker");
    AddParagraph(body, "IBM UK Ltd, Hursley Park, Winchester SO21 2JN, UK.");
    DocPart.Document.Append(body);
    DocPart.Document.Save();
    wpDoc.Close();
  12. UserCode 区中的 C# 代码的最后一部分的用途是为消息流将返回给 Web 服务客户端的回复消息构建逻辑树。输出逻辑树是在 XMLNSC 域下构建的。XMLNSC 树的根元素命名为 SaleAcknowledge,在将该元素写入连接之后,它将成为消息的 SOAP Body 元素的根元素。CreateDoubleNamespaceDeclaration 方法是一种有用的 helper 方法,由 WebSphere Message Broker .NET API 提供,在树中创建名称空间前缀/对映射,从而使您能够创建消息,并在对输出排序时使用选定的前缀。CreateFirstChild 消息用于创建 ResponseMessage 元素,后者仅包含字符串 Message received!,向 Web 服务客户端指示已经成功完成对代理流的调用:
    清单 7. Evaluate 方法的 UserCode 区的示例代码的第 4 部分
         NBElement soap = outputRoot.CreateLastChildUsingNewParser(SOAP.ParserName);
         string ns = "http://www.acmeorders.com/Order";
         string soapNs = "http://schemas.xmlsoap.org/soap/envelope/";
         NBElement ctx = soap.CreateLastChild("Context").CreateLastChild("Namespace");
         ctx.CreateLastChild(SOAP.DoubleNamespaceDeclaration, 
              "xmlns", "soapenv", soapNs);
         NBElement soapBody = soap.CreateLastChild("Body");
         NBElement saleAck = soapBody.CreateLastChild(ns, "SaleAcknowledge");
         saleAck.CreateLastChild(SOAP.DoubleNamespaceDeclaration, "xmlns", "order", ns);
         saleAck.CreateLastChild(null, "ResponseMessage", "Message received!");
    #endregion UserCode
  13. 现在开发工作已经完成了,您可以构建一个集合文件,并从 .NETCompute 节点中引用该文件。在 Solution Explorer 中,右键单击 Solution 并选择 Build Solution

    构建解决方案

    在 Microsoft Visual Studio 中打开 Output 窗口

    如果没有看到 Output 窗口,并且您使用的是 Microsoft Visual Studio Professional Edition,那么可以通过选择 Debug => Windows => Output 打开它。如果您使用的是 Microsoft Visual Studio Express Edition,那么可以通过选择 View => Output 打开它。

  14. Output 窗口向您显示构建的集合文件在您的文件系统中的保存位置。根据您配置 Microsoft Visual Studio 的方式,Build Output 窗口有可能不会立即显示。如果没有出现该窗口的话,请遵循侧栏中的步骤打开 Output 窗口。

    Build output

    如果在整个教程中使用了默认的命名方式,那么集合文件将保存在以下位置:

    C:\student\DOTNET\lab_msword\visual studio 2010\Projects\MSWordDotNetProject\
    MSWordDotNetProject\bin\Debug\MSWordDotNetProject.dll

在本教程的下一小节中,将展示如何将消息流开发与构建的 C# 集合结合在一起,并部署到 Message Broker 中。


准备并部署到 Message Broker

从 C# 代码中构建集合文件后,您可以将该集合文件从 Windows Explorer 窗口直接拖放到消息流中的 .NETCompute 节点,从而将该节点与代码关联起来。该技巧将为集合文件生成一个硬编码的绝对位置。在开发、测试和热交换 Broker 正在执行的 .NET 代码时,该方法可以节省时间。对于生产情景,一种更典型的做法是定义一个 Message Broker Configurable Service,它指定了查找集合文件的 .NETCompute 节点。如果使用了 Configurable Service,它将覆盖集合的硬编码绝对位置。下面提供了一个用于配置当前场景的拖放技巧:

  1. 要执行拖放操作,返回到 WebSphere Message Broker Toolkit,之前创建的消息流 MyFlow.msgflow 应当仍然处于打开状态。打开 Toolkit 前端的 Windows Explorer 窗口,导航到在前面小节中构建集合文件的位置。如果一直采用默认的命名,那么该位置应为:
    C:\student\DOTNET\lab_msword\visual studio 2010\Projects\MSWordDotNetProject\
    MSWordDotNetProject\bin\Debug\MSWordDotNetProject.dll

    在流中的 .NETCompute 节点 的顶部拖放集合,如红色箭头所示:



    拖放集合以配置 .NETCompute 节点
  2. 检查 .NETCompute node 属性,应当会看到 Assembly 名称属性现在已经进行了配置,如下所示。按 Ctrl-S,保存消息流:

    .NETCompute 节点的 Assembly 名称属性
  3. 要所创建的部署应用程序(包含消息流和 Web 服务定义),只需要将其拖放到一个运行时执行组中,比如下面所示的默认配置。红色箭头显示了拖放操作:

    通过拖放进行应用程序部署

本教程的下一小节将展示如何对场景进行测试。


场景测试

本教程的最后小节将展示如何在 Message Broker Toolkit 中使用内置的 Test Client 对整个场景进行测试。

  1. 消息流的测试数据被保存到消息流测试客户端文件中,文件扩展名为 .mbtest。测试数据文件被包含在本文的下载文件中。从 Message Broker Toolkit 中选择 File => Import。在出现的向导中,展开 General 部分,突出显示下面所示的 File system import,然后单击 Next

    导入向导
  2. 在向导的下一个面板中,导航到您在文件系统中解压缩下载文件的位置。下图假设该位置为 C:\student\DOTNET\lab_msword。选择名为 App_DotNet_MSWord.mbtest 的测试客户端文件。使用 Browse 按钮,指定文件夹 App_DotNet_MSWord 作为导入目的地,然后单击 Finish

    导入向导 -- 文件系统面板
  3. 找到导入的文件,即应用程序 App_DotNet_MSWord 中的 App_DotNet_MSWord.mbtest,然后双击打开该文件:

    打开测试客户端文件 App_DotNet_MSWord.mbtest
  4. 本教程假设您已经使用默认配置建立了一个运行时代理,它提供了一个名为 MB8BROKER 的消息代理。有关默认配置的更多信息,请参见 Message Broker 信息中心内的 Creating the Default Configuration。如果您使用了不同的运行时配置,您可以通过切换到 Configuration 选项卡来编辑测试客户端文件,如下面的红色框所示:

    App_DotNet_MSWord.mbtest 的 Configuration 选项卡
  5. 测试客户端文件中提供的样例测试输入消息如以下清单所示:
    清单 8. 样例测试消息输入数据
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                      xmlns:ord="http://www.acmeorders.com/Order">
     <soapenv:Body>
      <ord:SaleEnvelope>
         <Header>
         <SaleListCount>1</SaleListCount>
        </Header>
        <SaleList>
         <Invoice>
          <Initial>K</Initial>
          <Initial>A</Initial>
          <Surname>Braithwaite</Surname>
          <Item>
           <Code>00</Code>
           <Code>01</Code>
           <Code>02</Code>
           <Description>Twister</Description>
           <Category>Games</Category>
           <Price>00.30</Price>
           <Quantity>01</Quantity>
          </Item>
          <Item>
           <Code>02</Code>
           <Code>03</Code>
           <Code>01</Code>
           <Description>The Times Newspaper</Description>
           <Category>Books and Media</Category>
           <Price>00.20</Price>
           <Quantity>01</Quantity>
          </Item>
          <Balance>00.50</Balance>
          <Currency>Sterling</Currency>
         </Invoice>
        </SaleList>
        <Trailer>
         <CompletionTime>12.00.00</CompletionTime>
        </Trailer>
       </ord:SaleEnvelope>
     </soapenv:Body>
    </soapenv:Envelope>

    要测试消息流,单击 Send Message 按钮,如下面的红色框所示:

    App_DotNet_MSWord.mbtest 的 Send message 按钮
  6. 测试开始后,您应当看到如下所示的输出确认消息:

    测试结果
    下面是一个输出消息的列表:
    清单 9. SaleEnvelope 消息样例输出数据
    <?xml version="1.0" encoding="utf-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
     <soapenv:Body>
      <order:SaleAcknowledge xmlns:order="http://www.acmeorders.com/Order">
       <ResponseMessage>Message received!</ResponseMessage>
      </order:SaleAcknowledge>
     </soapenv:Body>
    </soapenv:Envelope>
  7. 最后,通过 Windows Explorer 窗口导航到文件系统中 Word 文档的输出位置:C:\student\DOTNET\lab_msword\Test.docx。打开 Word 文档,您应当看到表中所示的发票的内容:

    测试结果

下载

描述名字大小
代码样例dotnet_msword_resources.zip3 KB

参考资料

  • 您可以参阅本文在 developerWorks 全球网站上的 英文原文
  • WebSphere Message Broker 资源
  • WebSphere 资源
  • developerWorks 资源
    • IBM 软件产品试用版下载
      免费下载 IBM® DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 产品试用版。
    • developerWorks 博客
      加入 developerWorks 用户和作者、IBM 编辑和开发人员的会谈。
    • developerWorks 云计算资源
      访问 IBM 或 Amazon EC2 云,在沙盒中对 IBM 云计算产品进行测试,观看云计算产品和服务的演示,阅读有关云的文章,并访问其他云资源。
    • developerWorks 技术加油站
      由 IBM 专家主持的免费技术活动可以帮助您加快学习进度,从最困难的软件项目中取得成功。这些在世界各地举行的活动包括一小时的虚拟简报、半天到全天的真实活动等。
    • developerWorks 播客
      收听新颖有趣的软件创新者访谈和讨论。
    • IBM Education Assistant
      多媒体教育模块集合,帮助您更好地理解 IBM 软件产品,更高效地使用它们来满足您的业务需求。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=812856
ArticleTitle=在 WebSphere Message Broker V8 中使用 Microsoft .NET: 第 2 部分:与 Microsoft Word 集成
publish-date=05032012