L02消息模型和 XML 消息的使用.docx
《L02消息模型和 XML 消息的使用.docx》由会员分享,可在线阅读,更多相关《L02消息模型和 XML 消息的使用.docx(14页珍藏版)》请在冰豆网上搜索。
![L02消息模型和 XML 消息的使用.docx](https://file1.bdocx.com/fileroot1/2022-12/16/4918ae28-918f-4be2-8fdb-cd532ef1c932/4918ae28-918f-4be2-8fdb-cd532ef1c9321.gif)
L02消息模型和XML消息的使用
练习2消息模型和XML消息的使用
概述
在此练习中,您将仅修改Intro_MessageFlow以识别用于处理消息的解析器(XMLNSC)。
该步骤非常简单。
将修改输入节点的属性。
测试客户机将用于运行其他测试。
将查看跟踪文件内容以了解差异。
使用XML解析器
__1.返回WebSphereMessageBrokerToolkit。
__2.单击Intro_MessageFlow选项卡,使消息流显示在视图中。
__3.单击XML_Input节点,使其属性显示在视图中。
您需要修改消息流,以便它使用XMLNSC解析器处理输入消息。
__4.在屏幕底部的Properties视图中,单击InputMessageParsing选项卡。
由于添加节点时未指定任何内容,Messagedomain(例如,解析器)将缺省为您在跟踪中看到的BLOB。
__5.单击Messagedomain的下拉菜单。
这样会列出带有简短描述的各种解析器。
根据Messagedomain中的选择,可能会启用或禁用其他字段。
__6.选择XMLNSC解析器。
XMLNSC解析器支持名称空间(NS部分),并将构建更加有效或简洁的树(C部分)。
该简洁树使用更少的内存。
__7.
保存消息流。
关键概念:
解析器和消息域
WebSphere®MessageBroker提供一系列解析器,以解析并编写不同格式的消息。
当必须将表示输入消息的位流转换为代理程序内部使用的格式时,将调用解析器;此过程称为解析。
输入为位流,输出为消息的逻辑树表示。
当必须将逻辑树结构转换为(例如输出节点上的)位流时,将调用串行器。
此过程称为序列化。
每个解析器都适用于特定的消息类,称为消息域。
以下列表包含WebSphereMessageBroker中使用的一些消息域示例:
∙XMLNSC-针对XML文档
∙DFDL-针对常规文本或二进制数据流,包括行业标准
∙JSON-针对JSON文档
∙DataObject-针对不带流表示的数据(由适配器使用)
现在,让我们重新运行测试客户机。
__8.切换回测试客户机,右键单击InvokeMessageFlow,并选择Re-run。
__9.您将再次看到测试客户机中相同的输出消息。
这只是输出消息到达输出队列之后显示的情形。
让我们看看消息经过消息流时的情形。
__10.返回Windows资源管理器,并浏览至C:
\XML_Input_Trace.txt文件。
__11.双击XML_Input_trace.txt文件,并滚动至该文件末尾(或者按下Ctrl+End)。
跟踪输出位于文件中任何现有内容的末尾,所以向下滚动至该文件的底部,并查看结果。
更棒的是,这是一个很好地格式化的消息树,允许您方便地按照名称访问XML消息中的字段。
注意:
∙XMLNSC域名(这就是我们在输入节点上设置的内容)。
∙所有元素类型都是由(CHARACTER)所表示的字符串!
为什么这样?
要知道答案,就需要了解解析器和消息模型。
__12.关闭记事本窗口并最小化Windows资源管理器。
从XSD创建消息模型
在本部分练习中,您将使用消息模型来解析XML消息。
关键概念:
消息模型
大部分业务环境都依赖应用程序间的信息交换。
此信息包含在具有已定义结构的消息中,而发送方和接收方都了解并同意该结构。
应用程序通常结合使用多种消息格式,包括由以下结构或标准定义的那些消息格式:
∙逗号分隔的值(CSV)
∙COBOL、C、PL1和其他语言数据结构
∙行业标准,例如SWIFT、X12或HL7
∙XML,包括SOAP
您可以对各种各样的消息格式进行建模,这样WebSphereMessageBroker消息流就可以理解这些格式。
当消息格式已知时,代理程序就可以解析入局消息位流,并将其转换到逻辑消息树中,供消息流操作。
有些消息格式是自定义的,并可以在无需引用模型的情况下进行解析。
然而,大部分消息格式都不是自定义的,如果解析器要正确解析消息,那么它必须可以访问对消息进行描述的预定义的模型。
XML就是自定义消息格式的一个示例。
在XML中,消息本身除包含数据值之外还包含元数据,而且该元数据使XML解析器在即使没有可用模型的情况下也能理解XML消息。
自定义格式的另一个示例是JSON。
没有自定义消息格式的消息示例是CSV文本消息、从COBOL程序生成的二进制消息,以及SWIFT格式化文本消息。
这些消息格式中的任何一个都没有包含足够的信息以使解析器能完全理解消息。
在这些情况下,需要使用模型对它们进行描述。
即使您的消息是自定义的,而且不需要建模,消息建模仍然具有以下优点:
∙消息的运行时验证。
没有消息模型,解析器就无法检查输入消息和输出消息是否具有正确的结构和数据值。
∙增强的XML消息解析。
尽管XML是自定义的,但是如果不使用消息模型,那么所有数据值都会被视为字符串。
如果使用消息模型,那么会为解析器提供数据值的数据类型,并可以相应地对数据执行强制类型转换。
∙对转换进行编码时帮助完成代码。
在为消息流创建ESQL程序时,ESQL编辑器可以使用消息模型帮助完成代码。
∙图形映射。
如果没有消息模型,那么您将无法使用消息映射编辑器。
∙消息模型复用,通过创建基于现有消息的其他消息来完整或部分复用消息模型。
∙文档生成。
∙提供对消息模型的版本控制和访问控制,通过将它们存储在中央存储库中来实现。
要充分使用WebSphereMessageBroker提供的功能,请为您的消息格式建模。
为加快创建消息模型,提供了导入器来读取元数据,例如C头文件、COBOL副本和EIS元数据,并根据该元数据创建消息模型。
此外,预定义的模型可用于常用行业标准消息格式,例如SWIFT、EDIFACT、X12、FIX、HL7和TLOG。
所以,XML解析器以前是以编程方式运行的,该方式通过假设所有内容都是字符串来解析XML消息。
通过用模型来解析,我们可以得到具有已归类元素的消息和受制于一些约束的消息(例如必填字段和最大字段长度等)。
幸运的是,Toolkit提供了多个向导以导入您的现有模型(例如WSDL、XSD和副本等)。
__13.在左侧的MessageBrokerToolkitBrokerDevelopment视图中,右键单击空白处并选择NewMessageModel…
__14.
在XML下,选择OtherXML单选按钮。
查看其他一些具有导入向导的选项。
单击Next。
__15.选择IalreadyhaveanXMLschemaformydata单选按钮。
单击Next。
__16.
在第一个对话框中,对于ApplicationorLibrary,单击New..按钮。
__17.在弹出对话框中,选择Library并单击OK
__18.在弹出对话框中,输入IntroLabLib,并单击Finish。
__19.
回到MessageModel向导,选中单选按钮Selectfilefromoutsideworkspace并单击Browse…
__20.浏览至C:
\Student\Intro_XML_Message,并选择JKE_IN_Request.xsd。
单击Open。
__21.
回到MessageModel向导,单击Finish。
__22.您现在已拥有一个库项目。
关键概念:
库项目
应用程序和库是资源的可部署容器,例如消息流、消息定义(DFDL、XSD文件)、JAR文件、XSL样式表和WebSphereAdapters文件。
库是相关代码和/或数据的逻辑分组。
库包含对可复用资源(例如消息模型或映射)的引用。
库可以引用包含在另一个库中的资源。
库是可选的;如果您要复用资源,请创建一个。
库可以嵌入到应用程序中(私有),也可以由(不是应用程序一部分的)消息流在运行时(执行组级别)动态获得。
可使用多个库来对相关资源进行分组(例如,按类型或功能)。
如果您要在多个团队、项目或代理程序间共享例程和定义,请考虑使用库。
如果您需要使用不同版本的一致的例程和定义集,那么库也很有用。
如果您不需要经常复用WebSphereMessageBroker例程或定义,那么通常没必要使用库。
__23.请注意,XSD在导入之后将为您打开,且可使用XML模式编辑器查看,该编辑器位于Toolkit中,可向您显示XML模式的GUI表示以及源。
JKE_In_Request是唯一的全局元素。
如果双击该元素,您可以向下钻取到它的结构。
__24.如果您随后双击JKE_In_RequestType,那么可以看到完整的消息对象。
__25.
请注意,某些元素(例如customerNumber和customerCreditScore)是整数,而不是字符串。
现在,让我们来更新消息流,以便在解析入局消息时使用消息模型。
__26.在左侧的项目视图中,右键单击IntroLab应用程序并选择ManageLibraryReferences。
__27.
选中IntroLabLib并单击OK。
我们需要告知解析器以模式驱动的方式运行,而不是编程方式。
__28.关闭JKE_Request_In.xsd选项卡。
__29.单击Intro_MessageFlow.msgflow选项卡以返回至消息流编辑器。
__30.单击XML_Input节点,以便编辑其属性。
__31.
在Properties视图中,单击Validation选项卡,并在Validate下拉菜单中选择Content。
__32.切换至ParseOptions选项卡,并选中BuildtreeusingXMLschemadatatypes框。
__33.
保存消息流。
重新运行测试客户机
我们现在将重新运行流,然后检查跟踪输出。
__34.在编辑器中,切换至(或从导航器的App中重新打开)IntroLab.mbtest,右键单击InvokeMessageFlow,然后单击Re-run。
工具将自动重新构建并重新部署包含了新的从属库的应用程序。
__35.浏览回C:
\XML_Input_Trace.txt,打开文件,向下滚动到结尾处(或使用Ctl-End),然后查看新的跟踪输出。
请注意,元素现在已根据模式归类。
__36.关闭记事本窗口并最小化Windows资源管理器。
练习2到此结束。