该封装类型决定了 WebSphere Partner Gateway 向后端系统发送消息所使用的格式以及后端系统向 WebSphere Partner Gateway 发送消息所使用的格式。
您可以使用社区控制台来建立与社区参与者之间的连接,并且指定 WebSphere Partner Gateway 和后端系统之间使用的封装。要确定使用何种封装类型,必须了解下列问题:
要获取更多关于如何设置合作伙伴连接的信息,请参阅中心配置指南。
当使用 WebSphere Partner Gateway 进行集成时,不是所有的封装类型都是有效的。表 4 列出了 WebSphere Partner Gateway 与社区管理者的后端应用程序交换文档或消息时,哪些封装类型是有效的。
封装类型 | 描述 |
---|---|
“无”封装 |
发送到后端系统或中心的消息没有任何头数据的原因 |
后端集成封装 |
向消息头添加额外的属性,并且可选地,将消息内容包装到 XML 传输包络中。 |
当封装设为“无”时,WebSphere Partner Gateway 既不在将消息发送给后端系统时添加一个传输级头,也不期望所接收的来自后端系统消息有传输级头。WebSphere Partner Gateway 仅向后端系统发送消息。文档中的信息控制消息传输。
当封装设为“后端集成”时,后端系统收发的消息含有以下组件:
头和有效内容是必需的部分,而附件是可选的。 下面各部分描述了使用“后端集成”所封装文档的每个组件。
传输级头包含 WebSphere Partner Gateway 用来处理消息以及将消息路由到正确目的地的信息。传输级头是双向的,从而 WebSphere Partner Gateway 收发的所有消息都含有必需的字段和任何适用的可选字段。
表 5 列出了传输级头的各字段。
头字段 | 描述 | 是否必需? |
---|---|---|
x-aux-sender-id | 消息发送者的标识,例如 DUNS 号。 | 是 |
x-aux-receiver-id | 消息接收者的标识,例如 DUNS 号。 | 是 |
x-aux-protocol | 消息内容的协议。有效值包括用于 RosettaNet 服务内容的 RNSC、XMLEvent 和二进制。对于 WebSphere Partner Gateway,该字段的值的优先级高于有效内容中任何协议字段的值。 | 是 |
x-aux-protocol-version | 消息内容协议的版本。 | 是 |
x-aux-process-type | 要执行的过程或正被发送消息的类型。对于 RosettaNet 消息,这是 PIP 代码(例如 3A4)。 对于事件消息,这是 XMLEvent,而对于二进制消息,这是“二进制”。对于 WebSphere Partner Gateway,该字段的值的优先级高于有效内容中任何过程字段的值。 | 是 |
x-aux-process-version | 过程版本。对于 RosettaNet 消息,这是 PIP 的版本号。 | 是 |
x-aux-create-datetime | 使用 UTC 时间戳记格式成功发送消息的时间(CCYY-MM-DDThh:mm:ssZ) | |
x-aux-msg-id | 有效内容内容的标识。例如,它可以是 RosettaNet 消息的 RNPIPServiceContent 实例的标识,也可以是专有文档的标识。 为了跟踪目的,这个标识将消息有效内容与消息发送者系统的某些内容相链接。 | |
x-aux-production | 消息的路由。有效值为:Production 和 Test。在请求的两个方向中都应填充该值。请注意,当消息是社区参与者发出的对双向 PIP 的响应时,WebSphere Partner Gateway 在请求中使用 GlobalUsageCode 并忽略传输级头中的值。 | |
x-aux-system-msg-id | 消息的全局唯一标识(GUID),它用于重复检查。 | 是 |
x-aux-payload-root-tag | 有效内容的根标记元素。例如, 对于 3A4 RosettaNet 服务内容,该字段的值为 Pip3A4PurchaseOrderRequest。对于事件通知消息,该字段的值为 EventNotification。 | |
x-aux-process-instance-id | 将多个消息业务流程中的文档链接到唯一过程实例的标识。对于 RosettaNet, 它必须对最近的 30 天内的 RosettaNet 过程是唯一的。 所有交换消息作为 RosettaNet 过程实例的一部分,包括重试,都使用相同的过程实例标识。 | |
x-aux-event-status-code | 事件通知的状态码。请参阅事件消息结构中的 StatusCode 字段。 | |
x-aux-third-party-bus-id | 标识,例如传递消息的一方的 DUNS 号。如果第三方代表社区所有者主管 WebSphere Partner Gateway,则该标识可以不同于 x-aux-sender-id 和 x-aux-receiver-id。 | |
x-aux-transport-retry-count | 在这次尝试前,试图发送消息的不成功次数。如果第一次尝试就成功地发送了消息,则该字段值为 0。 | |
x-out-file-name | 通过 JMS,采用“后端集成”封装所发送消息的原始文件名。(请参阅注释2。) | |
content-type | 消息的内容类型。 | |
content-length | 消息长度(以字节计)。 |
如果将目标指定为 JMS,并将包指定为“后端集成”,则原始文件名将被写为带有其他 x-aux-* 头的 x-out-file-name。
表 5 概述了传输级头信息。下列各部分提供了针对特定业务协议的传输级头信息:
表 6 描述了 WebSphere Partner Gateway 从 RosettaNet 消息获取传输级头字段值的位置。
表 7 描述了 WebSphere Partner Gateway 从 AS2 消息获取传输级头字段值的位置。
表 8 描述了 WebSphere Partner Gateway 从 AS1 消息获取传输级头字段值的位置。
消息的有效内容包含消息的实际内容。有效内容的位置取决于发送消息的传输协议,如表 9 所示。
传输协议 | 有效内容的位置 |
---|---|
HTTP 协议消息 | 在 HTTP post的正文中 |
JMS 协议消息 | 在 JMS 消息的正文中 |
RosettaNet 消息 | 来自 PIP 的服务内容 |
EDI | EDI 包络 |
ROD 或 XML 文档 | ROD 或 XML 文档 |
有效内容可以用 Base64 编码,并且可以采用 XML 传输包络格式用于下面任何一种情况:
包含附件的文档必须包装到 XML 传输包络中。要获取更多关于如何格式化附件的信息,请参阅附件。
要将文档包装到 XML 传输包络而忽略它是否包含附件,从概要文件的 B2B 能力屏幕将后端集成包络标志设为“是”。 例如,要在社区管理者的概要文件中设置这个标志,执行下列的任务:
这个 XML 传输包络将文档包装到<transport-envelope> 根标记中。在这个根标记中,有一个包含文档有效内容的<有效内容>标记。如果存在任何附件,它们都包含在各自的<附件>标记中。要获取更多关于这些标记结构的信息,请参阅附件。
WebSphere Partner Gateway 包含下列 W3C XML 模式文件,该文件描述了后端集成 XML 传输包络的结构:
wbipackaging_v1.0_ns.xsd
该模式文件位于在安装介质上的如下目录:
B2BIntegrate\packagingSchemas
根据该模式文件,可以使用任何 XML 编辑工具来验证您的后端集成 XML 以确保在向文档管理器发送该文档前它是有效的。
如果业务协议允许有附件,则每个文档可以含有一个或多个附件。如果文档含有附件,则文档必须包装在一个XML 传输包络中,与有效内容中描述的一样。表 10 描述了有效内容和附件标记的 XML 属性。
XML 属性 | 描述 | 是否必需? |
---|---|---|
Content-Type | 标识 MIME 类型/子类型,例如 text/xml 或 image/gif。 | 是 |
Encoding | 标识编码。因为附件和有效内容必须是用 Base64 编码的,所以该属性的唯一有效值是“Base64”。 | 否 |
图 13 展示了包含有效内容和一个附件的 XML 传输包络中文档的示例。
xmlns="http://www.ibm.com/websphere/bcg/2003/v1.0/wbipackaging"
<?xml version="1.0" encoding="utf-8"?> <transport-envelope xmlns="http://www.ibm.com/websphere/bcg/2003/v1.0/wbipackaging">
<payload encoding="base64" contentType="application/xml">
...base64 encoded XML message...
</payload>
<attachment encoding="base64" Content-Type="text/xml">
...base64 encoded XML attachment...
</attachment>
</transport-envelope>
某些业务协议中的文档只能使用某些类型的封装。 例如,只有将封装方式指定为“后端集成”时才可以处理 RosettaNet。请参阅 表 12、表 13 和 表 14 以获取关于文档类型与封装类型关联信息的完整列表。
图 14显示一个使用 HTTP 传输协议把消息从 WebSphere Partner Gateway 发送到应用程序的示例。请注意,该消息不包含附件。
POST /sample/receive HTTP/1.1 Host: sample. COM Content-Type: application/xml Content-Length: nnn x-aux-sender-id: 000000001 x-aux-receiver-id: 000000002 x-aux-third-party-bus-id: 000000003 x-aux-create-datetime: 2002-10-28T23:05:02Z x-aux-protocol: RNSC x-aux-protocol-version: 1.0 x-aux-process-type: 3A4 x-aux-process-version: V02.00 x-aux-payload-root-tag: Pip3A4PurchaseOrderRequest x-aux-msg-id: 1021358129419 x-aux-system-msg-id: 2 x-aux-production: Production x-aux-process-instance-id: 123456 x-aux-transport-retry-count: 0
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Pip3A4PurchaseOrderRequest SYSTEM "3A4PurchaseOrderRequestMessageGuideline_v1_2.dtd"> <Pip3A4PurchaseOrderRequest>
<PurchaseOrder> ... </PurchaseOrder> ...
<thisDocumentIdentifier> <ProprietaryDocumentIdentifier>1021358129419 </ProprietaryDocumentIdentifier> </thisDocumentIdentifier> <GlobalDocumentFunctionCode>Request</GlobalDocumentFunctionCode>
</Pip3A4PurchaseOrderRequest>