1、L02消息模型和XML消息的使用资料练习2 消息模型和 XML 消息的使用概述在此练习中,您将仅修改 Intro_MessageFlow 以识别用于处理消息的解析器 (XMLNSC)。该步骤非常简单。将修改输入节点的属性。测试客户机将用于运行其他测试。将查看跟踪文件内容以了解差异。使用 XML 解析器_1. 返回 WebSphere Message Broker Toolkit。_2. 单击 Intro_MessageFlow 选项卡,使消息流显示在视图中。_3. 单击 XML_Input 节点,使其属性显示在视图中。您需要修改消息流,以便它使用 XMLNSC 解析器处理输入消息。_4. 在屏
2、幕底部的 Properties 视图中,单击 Input Message Parsing 选项卡。由于添加节点时未指定任何内容,Message domain(例如,解析器)将缺省为您在跟踪中看到的 BLOB。_5. 单击 Message domain 的下拉菜单。这样会列出带有简短描述的各种解析器。根据 Message domain 中的选择,可能会启用或禁用其他字段。_6. 选择 XMLNSC 解析器。XMLNSC 解析器支持名称空间(NS 部分),并将构建更加有效或简洁的树(C 部分)。该简洁树使用更少的内存。_7. 保存消息流 。关键概念:解析器和消息域WebSphere Message
3、 Broker 提供一系列解析器,以解析并编写不同格式的消息。当必须将表示输入消息的位流转换为代理程序内部使用的格式时,将调用解析器;此过程称为解析。 输入为位流,输出为消息的逻辑树表示。当必须将逻辑树结构转换为(例如输出节点上的)位流时,将调用串行器。此过程称为序列化。每个解析器都适用于特定的消息类,称为消息域。 以下列表包含 WebSphere Message Broker 中使用的一些消息域示例: XMLNSC - 针对 XML 文档 DFDL - 针对常规文本或二进制数据流,包括行业标准 JSON - 针对 JSON 文档 DataObject - 针对不带流表示的数据(由适配器使用)
4、现在,让我们重新运行测试客户机。_8. 切换回测试客户机,右键单击 Invoke Message Flow,并选择 Re-run。_9. 您将再次看到测试客户机中相同的输出消息。这只是输出消息到达输出队列之后显示的情形。让我们看看消息经过消息流时的情形。_10. 返回 Windows 资源管理器,并浏览至 C:XML_Input_Trace.txt 文件。_11. 双击 XML_Input_trace.txt 文件,并滚动至该文件末尾(或者按下 Ctrl + End)。跟踪输出位于文件中任何现有内容的末尾,所以向下滚动至该文件的底部,并查看结果。更棒的是,这是一个很好地格式化的消息树,允许您方
5、便地按照名称访问 XML 消息中的字段。注意: XMLNSC 域名(这就是我们在输入节点上设置的内容)。 所有元素类型都是由 (CHARACTER) 所表示的字符串!为什么这样?要知道答案,就需要了解解析器和消息模型。_12. 关闭记事本窗口并最小化 Windows 资源管理器。 从 XSD 创建消息模型在本部分练习中,您将使用消息模型来解析 XML 消息。关键概念:消息模型大部分业务环境都依赖应用程序间的信息交换。 此信息包含在具有已定义结构的消息中,而发送方和接收方都了解并同意该结构。应用程序通常结合使用多种消息格式,包括由以下结构或标准定义的那些消息格式: 逗号分隔的值 (CSV) CO
6、BOL、C、PL1 和其他语言数据结构 行业标准,例如 SWIFT、X12 或 HL7 XML,包括 SOAP您可以对各种各样的消息格式进行建模,这样 WebSphere Message Broker 消息流就可以理解这些格式。当消息格式已知时,代理程序就可以解析入局消息位流,并将其转换到逻辑消息树中,供消息流操作。有些消息格式是自定义的,并可以在无需引用模型的情况下进行解析。然而,大部分消息格式都不是自定义的,如果解析器要正确解析消息,那么它必须可以访问对消息进行描述的预定义的模型。XML 就是自定义消息格式的一个示例。 在 XML 中,消息本身除包含数据值之外还包含元数据,而且该元数据使
7、XML 解析器在即使没有可用模型的情况下也能理解 XML 消息。 自定义格式的另一个示例是 JSON。没有自定义消息格式的消息示例是 CSV 文本消息、从 COBOL 程序生成的二进制消息,以及 SWIFT 格式化文本消息。 这些消息格式中的任何一个都没有包含足够的信息以使解析器能完全理解消息。在这些情况下,需要使用模型对它们进行描述。即使您的消息是自定义的,而且不需要建模,消息建模仍然具有以下优点: 消息的运行时验证。 没有消息模型,解析器就无法检查输入消息和输出消息是否具有正确的结构和数据值。 增强的 XML 消息解析。 尽管 XML 是自定义的,但是如果不使用消息模型,那么所有数据值都会
8、被视为字符串。 如果使用消息模型,那么会为解析器提供数据值的数据类型,并可以相应地对数据执行强制类型转换。 对转换进行编码时帮助完成代码。 在为消息流创建 ESQL 程序时,ESQL 编辑器可以使用消息模型帮助完成代码。 图形映射。如果没有消息模型,那么您将无法使用消息映射编辑器。 消息模型复用,通过创建基于现有消息的其他消息来完整或部分复用消息模型。 文档生成。 提供对消息模型的版本控制和访问控制,通过将它们存储在中央存储库中来实现。要充分使用 WebSphere Message Broker 提供的功能,请为您的消息格式建模。为加快创建消息模型,提供了导入器来读取元数据,例如 C 头文件、
9、COBOL 副本和 EIS 元数据,并根据该元数据创建消息模型。 此外,预定义的模型可用于常用行业标准消息格式,例如 SWIFT、EDIFACT、X12、FIX、HL7 和 TLOG。所以,XML 解析器以前是以编程方式运行的,该方式通过假设所有内容都是字符串来解析 XML 消息。通过用模型来解析,我们可以得到具有已归类元素的消息和受制于一些约束的消息(例如必填字段和最大字段长度等)。幸运的是,Toolkit 提供了多个向导以导入您的现有模型(例如 WSDL、XSD 和副本等)。_13. 在左侧的 Message Broker Toolkit Broker Development 视图中,右键
10、单击空白处并选择 NewMessage Model_14. 在 XML 下,选择 Other XML 单选按钮。 查看其他一些具有导入向导的选项。单击 Next。_15. 选择 I already have an XML schema for my data 单选按钮。单击 Next。_16. 在第一个对话框中,对于 Application or Library,单击 New. 按钮。_17. 在弹出对话框中,选择 Library 并单击 OK_18. 在弹出对话框中,输入 IntroLabLib,并单击 Finish。_19. 回到 Message Model 向导,选中单选按钮 Selec
11、t file from outside workspace 并单击 Browse_20. 浏览至 C:StudentIntro_XML_Message,并选择 JKE_IN_Request.xsd。 单击 Open。_21. 回到 Message Model 向导,单击 Finish。_22. 您现在已拥有一个库项目。关键概念:库项目应用程序和库是资源的可部署容器,例如消息流、消息定义(DFDL、XSD 文件)、JAR 文件、XSL 样式表和 WebSphere Adapters 文件。库是相关代码和/或数据的逻辑分组。库包含对可复用资源(例如消息模型或映射)的引用。库可以引用包含在另一个库中
12、的资源。库是可选的;如果您要复用资源,请创建一个。库可以嵌入到应用程序中(私有),也可以由(不是应用程序一部分的)消息流在运行时(执行组级别)动态获得。可使用多个库来对相关资源进行分组(例如,按类型或功能)。如果您要在多个团队、项目或代理程序间共享例程和定义,请考虑使用库。如果您需要使用不同版本的一致的例程和定义集,那么库也很有用。如果您不需要经常复用 WebSphere Message Broker 例程或定义,那么通常没必要使用库。_23. 请注意,XSD 在导入之后将为您打开,且可使用 XML 模式编辑器查看,该编辑器位于 Toolkit 中,可向您显示 XML 模式的 GUI 表示以及
13、源。JKE_In_Request 是唯一的全局元素。如果双击该元素,您可以向下钻取到它的结构。_24. 如果您随后双击 JKE_In_RequestType,那么可以看到完整的消息对象。_25. 请注意,某些元素(例如 customerNumber 和 customerCreditScore)是整数,而不是字符串。现在,让我们来更新消息流,以便在解析入局消息时使用消息模型。_26. 在左侧的项目视图中,右键单击 IntroLab 应用程序并选择 Manage Library References。_27. 选中 IntroLabLib 并单击 OK。我们需要告知解析器以模式驱动的方式运行,而不
14、是编程方式。_28. 关闭 JKE_Request_In.xsd 选项卡。_29. 单击 Intro_MessageFlow.msgflow 选项卡以返回至消息流编辑器。_30. 单击 XML_Input 节点,以便编辑其属性。_31. 在 Properties 视图中,单击 Validation 选项卡,并在 Validate 下拉菜单中选择 Content。_32. 切换至 Parse Options 选项卡,并选中 Build tree using XML schema data types 框。_33. 保存消息流 。重新运行测试客户机我们现在将重新运行流,然后检查跟踪输出。_34. 在编辑器中,切换至(或从导航器的 App 中重新打开)IntroLab.mbtest,右键单击 Invoke Message Flow,然后单击 Re-run。工具将自动重新构建并重新部署包含了新的从属库的应用程序。_35. 浏览回 C:XML_Input_Trace.txt,打开文件,向下滚动到结尾处(或使用 Ctl-End),然后查看新的跟踪输出。请注意,元素现在已根据模式归类。_36. 关闭记事本窗口并最小化 Windows 资源管理器。 练习 2 到此结束。